docker 构建 oracle 11g

docker 构建 oracle 11g

非 root 用户,需要使用 sudo
例如:当前非 root,用户是 anes,当前用户路径:/home/anes/

拉取 oracle 11g 镜像

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

启动一个测试容器

用于拷贝数据库文件

1
2
3
4
5
6
7
8
9
sudo docker run -d -p 1521:1521 --name test registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

sudo mkdir /var/oracle11/data
sudo docker cp test:/home/oracle/app/oracle/oradata/helowin /var/oracle11/data
cd /var/oracle11/data
sudo chown -R 500.500 helowin #500 500 是容器内 oracle 组和 用户 id

sudo docker stop test
sudo docker rm test

启动正式 oralce

需要查看宿主的时区,与 Oracle 一致,一般不要轻易删除 oracle 容器,会导致数据库文件加载失败

1
sudo docker run -d -e TZ=Asia/Shanghai -p 1521:1521 -v /var/oracle11/data/helowin:/home/oracle/app/oracle/oradata/helowin --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

进入容器

1
2
3
4
sudo docker exec -it oracle /bin/bash

#root 用户
find / | grep /network/admin/
  1. 删除版本控制文件

删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件。
容器镜像系统用户 root 密码为 helowin

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
sudo cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

cd /home/oracle
# 进入到 oracle 用户目录
source .bash_profile

sqlplus /nolog
# 登录oracle数据库
conn / as sysdba

shutdown immediate #关闭数据库实例,会报错,不用管
startup #启动实例
  1. 进入容器,修改管理员密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /home/oracle
# 进入到 oracle 用户目录
source .bash_profile
# 加载 oracle 环境变量
sqlplus /nolog
# 登录oracle数据库
conn / as sysdba
# 切换管理用户
alter user system identified by aaaa;
# 修改system用户账号密码为system
alter user sys identified by yyyy;
# 修改sys用户账号密码为system
commit;
# 提交
  1. 使用 navicat 连接 oracle
    oralce 服务名:helowin
1
2
3
4
5
6
7
8
使用 Navicat 连接

连接类型: Basic
主机:你的ip
端口: 1521
服务名: helowin
用户名:sys
密码:aaaa
  1. 创建表空间和数据库用户
1
2
3
4
create tablespace DB_DEMO datafile '/home/oracle/app/oracle/oradata/helowin/DB_DEMO.dbf' size 200m autoextend on next 10M maxsize unlimited;   --每次扩展10M,无限制扩展; -- 创建表空间
create user DB_DEMO identified by aaaa default tablespace DB_DEMO; -- 创建用户
grant connect,resource to DB_DEMO; -- 授权
grant dba to DB_DEMO; -- 授权
  1. 导入 db_demod.dmp 数据库
1
2
3
4
5
6
7
8
9
sudo docker cp /home/anes/db_demo.dmp  oracle:/home/oracle/

sudo docker exec -it oracle /bin/bash

cd /home/oracle
# 进入到 oracle 用户目录
source .bash_profile
# 加载 oracle 环境变量
imp db_demo/aaaa@helowin file=/home/oracle/db_demo.dmp fromuser=db_demo touser=db_demo ignore=y