`

CentOS在Docker中安装Oracle

阅读更多
1.拉取Oracle镜像,并检查结果,时间较长
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker images


2.创建容器
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#上面命令说明:创建一个名为oracle11g的容器,并进行端口映射


3.进入容器,运行命令
docker exec -it -u root oracle11g bash
#上面命令说明:进入容器,身份为root。

vi /etc/profile
#上面命令说明:编辑profile,加入下面两条环境变量,调整PATH设置。
export ORACLE_HOME=/home/oracle/app/oracle/prouct/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

source /etc/profile
#上面命令说明:使环境变量立即生效

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#上面命令说明:创建软连接

su - oracle
sqlplus /nolog
conn / as sysdba
shutdown immediate
startup
select count(*) from tab;
alter user system identified by oracle;
alter user sys identified by oracle;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
alter system set processes=1000 scope=spfile;
#上面命令说明:切换用户,sqlplus连接Oracle,关闭数据库(此时database处于nomount状态,先关再开操作方便。正统的办法是执行两条命令:alter database mount;alter database open;),启动数据库,执行统计表数量的测试命令,修改用户密码、密码不过期、进程数量。
#如果一切正常,再执行下面命令(sqlplus中,shutdown immediate)关闭数据库。因为后续要进行目录映射,拷贝数据文件、控制文件等,必须要在数据库关闭情况下复制,不然启动会有问题。实际上相当于数据库冷备份与恢复。

4.退出sqlplus、退出容器,进入宿主机,拷贝数据文件、控制文件
#多次执行exit,观察命令提示符,进入宿主机器执行命令。
mkdir -p /opt/oracle/oradata
docker cp oracle11g:/home/oracle/app/oracle/oradata/ /opt/oracle/oradata/
#上面命令说明:宿主机创建目录,拷贝容器中Oracle的数据文件到宿主机目录


5.重新创建容器,设置目录映射
#比较正统的办法,应该是修改容器的启动参数。简单粗暴一点儿,先删除,再重新创建。
docker rm -f oracle11g
docker run -d --name oracle11g --restart unless-stopped \
-v /opt/oracle/oradata/helowin:/home/oracle/app/oracle/oradata/helowin \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#仅映射了数据文件、控制文件,根据需要映射闪回文件、日志文件等。


6.进入容器,执行命令
#因为删除容器重新创建,所以要再执行一次。详细情况参见3。关闭数据库,启动数据库。如无异常,就完成了。常见两个异常。情况、原因及处置方法如下。

#异常1:如果提示ORA-00214错误,控制文件不一致。用/home/oracle/app/oracle/oradata/helowin/control01.ctl覆盖/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl,实现一致。
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
#拷贝后,sqlplus连接后,关闭数据库,再开。

#异常2:ORA-00205,这个应该是文件访问权限的问题。在容器中,设置数据文件、控制文件(经过映射后,实际为宿主机上的文件)的访问权限。
chown -R oracle:oinstall /home/oracle/app/oracle/oradata/helowin
#设置后,sqlplus连接后,关闭数据库,再开。

===整理完善,by wallimn,2024-02-06,转载请保留===
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics