文章目录

  • 零、声明
  • 一、安装oracle
  • 1.拉取Oracle镜像(非官方,来自helowin)
  • 2.创建oracle容器内部数据的外部挂载目录
  • 3.创建临时Oracle容器
  • 4.复制临时Oracle容器内文件到主机中
  • 5.修改挂载目录所属用户和用户组
  • 6.删除临时容器
  • 7.创建正式容器
  • 二、Oracle用户操作
  • 1.进入Oracle容器中
  • 2. 删除
  • 3.复制
  • 4.退出容器,并重启容器
  • 5.进入容器,修改root的密码
  • 三、进入oracle
  • 1.进入容器登录root后,修改环境变量
  • 2.登录sqlplus
  • 四、修改SID
  • 1.查看原镜像中设置的SID
  • 2.关闭数据库
  • 3.修改oracle用户的ORACLE_SID环境变量
  • 4.修改/etc/oratab文件
  • 5.进入到$ORACLE_HOME/dbs目录,修改文件名
  • 6.重建口令文件(orapwORCL文件)
  • 7.启动数据库,检查SID名称
  • 至此,修改完毕


零、声明

本文参考了多个文章,参考文章链接如下

拉取镜像和安装:	
设置环境变量:	
修改SID:

一、安装oracle

1.拉取Oracle镜像(非官方,来自helowin)

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

这里下载的镜像不是官方的镜像,所以内部诸如SID的配置需要进行修改,后面会说

2.创建oracle容器内部数据的外部挂载目录

mkdir /oracle/data

3.创建临时Oracle容器

docker run --name oracle_temp -p 1521:1521 \
--privileged=true -d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest

4.复制临时Oracle容器内文件到主机中

docker cp oracle_temp:/home/oracle/app/oracle/oradata/ /oracle/data/

5.修改挂载目录所属用户和用户组

chown -R 500:500 /oracle/data

6.删除临时容器

docker rm -f oracle_temp

7.创建正式容器

docker run --name oracle11g -p 1521:1521 \
--privileged=true -d \
-v /oracle/data/oradata:/home/oracle/app/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest

二、Oracle用户操作

1.进入Oracle容器中

docker exec -it oracle11g bash

2. 删除

rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

3.复制

cp /home/oracle/app/oracle/oradata/helowin/control01.ctl \
/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

4.退出容器,并重启容器

exit
docker restart oracle11g

5.进入容器,修改root的密码

root原密码是helowin,怕自己忘了,所以修改一下,修改前记得先把外部主机的SELinux关闭

docker exec -it oracle11g bash
su - root
pwd

三、进入oracle

1.进入容器登录root后,修改环境变量

su - root
vi /etc/profile

在末尾加上下面这段

export ORACLE_HOME=/home/oracle/app/oracle/product/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

2.登录sqlplus

顺带一提这个镜像中的用户oracle的密码也是oracle,比较好记就不改了,直接su登录

su - oracle
sqlplus /nolog 
> conn /as sysdba;
修改密码:
> alter user system identified by system;
> alter user sys identified by sys;
> alter profile default limit password_life_time unlimited;

创建用户:
> create user test identified by test;

并给用户赋予权限:
> grant connect,resource,dba to test;

用户解锁:
> alter user test account unlock;

扩大共享内存:
> alter system set SHARED_POOL_SIZE='150M' SCOPE=spfile;
> shutdown immediate;
> startup;

四、修改SID

原镜像中,SID为helowin,本案例中修改为ORCL

1.查看原镜像中设置的SID

sqlplus / as sysdba
> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
helowin

2.关闭数据库

> shutdown immediate;
> exit;

3.修改oracle用户的ORACLE_SID环境变量

vi /home/oracle/.bash_profile
export ORACLE_SID=ORCL
source /home/oracle/.bash_profile

4.修改/etc/oratab文件

$ vi /etc/oratab
将
helowin:/home/oracle/app/oracle/product/11.2.0/dbhome_2:Y
改为
ORCL:/home/oracle/app/oracle/product/11.2.0/dbhome_2:Y

5.进入到$ORACLE_HOME/dbs目录,修改文件名

cd $ORACLE_HOME/dbs
mv hc_helowin.dat hc_ORCL.dat
mv lkhellowin lkORCL
mv orapwhelowin orapwORCL
mv spfilehellowin.ora spfileORCL.ora
mv inithelowin.ora initORCL.ora

6.重建口令文件(orapwORCL文件)

因为口令文件改名后不能在新实例中使用,所以重建

orapwd file=$ORACLE_HOME/dbs/orapwORCL password=123456 entries=5 force=y

7.启动数据库,检查SID名称

sqlplus / as sysdba
> startup
> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
ORCL

至此,修改完毕