Windows下安装可参考我这篇:win11&win7下安装oracle11g数据库全过程
一、下载与启动
前提:需要安装配置好docker(设置镜像源、配置阿里云加速)等,可参考我这篇 基于CentOS7安装配置docker与docker-compose 。
Docker容器相关操作可参考我这篇Docker容器基本操作之启动-停止-重启
//查看docker启动状态,若为active(running)则已经启动。
systemctl status docker
//执行start命令启动docker
systemctl start docker
1.1 下载Oracle11g镜像
由于官方镜像所在https://hub.docker.com/ 无法打开,所以使用阿里镜像下载Oracle11g的镜像。
oracle11g是该oracle11g镜像的Names。
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
注意:镜像比较大,将近7个G。
//查看下载好的镜像
docker images
1.2、启动容器
//默认启动容器的方式(第一次推荐这种)
docker run -d -it -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
//持久化启动的方式
docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
这里我们采用默认启动容器的方式,下次可以直接使用docker start 命令启动该容器。
//docker start 容器名(Names)或完整的容器ID(CONTAINER ID)或容器ID(CONTAINER ID)的前4位
//620b是djc-RabbitMQ容器ID(CONTAINER ID)的前4位
//执行完命令,再执行docker ps(查看当前启动的容器)查看是否启动成功。
docker start djc-RabbitMQ
docker start 620bd670d79b
docker start 620b
或
docker start -i 以交互模式启动
docker start -t 以附加进程模式启动
//查看所有容器(包含已经启动和未启动的容器)
//此处第一个就是我们刚刚启动的oracle11g,oracle11g是该oracle11g镜像的Names。
docke ps -a
//查看启动的线程
netstat -tulnp
1.3 配置容器环境
//1-进入容器
docker exec -it oracle11g bash
//2-切换到 root 用户 su root,该Oracle11g的容器密码默认为helowin。
su root
//3-配置环境变量
将环境变量配置在 /home/oracle/.bashrc 中,这样无需再去执行创建软链接的命令 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
//4-执行 vi /home/oracle/.bashrc ,按i或insert键编辑.bashrc文件,在文件最后加入下列内容
//编辑好
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
编辑好,按ECS退出i(insert)模式,:wq保存并退出。
//5-刷新环境变量,使之生效。
source /home/oracle/.bashrc
//6-查看编辑完成的.bashrc文件
cat .basjrc
二、登录
2.1 配置防火墙
防火墙要允许 1521 端口,外部的数据库管理工具才能连的上
# 打开防火墙
systemctl start firewalld
# 查询端口状态
firewall-cmd --query-port=1521/tcp
# 永久性开放端口
firewall-cmd --permanent --zone=public --add-port=1521/tcp
# 重启防火墙
firewall-cmd --reload
firewall-cmd --query-port=1521/tcp
或者
//直接关闭防火墙
systecmctl stop firewalld
//开机禁用防火墙
systecmctl disable firewalld
2.2 命令
//1-解决sqlplus /nolog 的 Permission denied 问题 【进入oracle容器之前执行】
setenforce 0
//2-进入容器
docker exec -it oracle11g bash
//3-将当前用户切换到Oracle
//如果直接以root用户执行下一步sqlplus /nolog,会报错Permission denied
su - oracle
//4-进入Oracle命令行
//如果直接以root用户执行sqlplus /nolog,会报错Permission denied
sqlplus /nolog
//5-使用 “操作系统认证” 的方式
//如果这里直接以默认的root用户登录,会报登录失败ORA-12456:TNS:permission denied
//这里会报Connected to an idle instance,表示需要使用startup命令启动数据库
conn / as sysdba
//6-启动数据库 后续补充
startup;
//7-select instance_name
select instance_name from v$instance;
//8-show user
show user;
2.3 为什么要切换到oracle用户
4-进入Oracle命令行-如果直接以root用户执行sqlplus /nolog,会报错Permission denied
5-使用 “操作系统认证” 的方式-如果这里直接以默认的root用户登录,会报登录失败ORA-12456:TNS:permission denied
su - oracle
2.4 登录全过程截图
三、连接第三方客户端Navicat Premium 16
3.1 ORA-12541:TNS: 无监听程序
ORA-12541:TNS: 无监听程序
原因:lsnrctl 没有启动,导致监听器没有启动。
//查看lsnrctl 状态
lsnrctl status
//reload
lsnrctl reload
//启动lsnrctl,启动监听器。
lsnrctl start
//关闭lsnrctl,关闭监听器
lsnrctl stop
启动lsnrctl,启动监听器
启动监听器后,再次查看lsnrctl 状态:
3.2 再次连接Navicat Premium 16
3.3 测试SELECT * FROM EMP
3.5 连接第三方客户端Navicat Premium 16全过程截图
3.6 关闭Oracle11g容器
Docker容器基本操作之启动-停止-重启
//1-exit退出Oracle11g容器内
eixt
//2-停止Oracle11g容器并在60s内保存其状态
docker stop -t=60 oracle11g
//3-查看正在运行的容器-若无,则表示Oracle11g容器已经成功关闭
docker ps
四、参考资料
Docker容器基本操作之启动-停止-重启
docker 安装 oracle
cannot restore segment prot after reloc: Permission denied
docker安装oracle11g史上最全步骤(带图文)
docker安装oracle11g史上最全步骤(带图文)