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_11gsudo mkdir /var/oracle11/datasudo docker cp test :/home/oracle/app/oracle/oradata/helowin /var/oracle11/datacd /var/oracle11/datasudo chown -R 500.500 helowin 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/bashfind / | grep /network/admin/
删除版本控制文件
删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件。 容器镜像系统用户 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.ctlsudo cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctlcd /home/oraclesource .bash_profilesqlplus /nolog conn / as sysdba shutdown immediate startup
进入容器,修改管理员密码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 cd /home/oraclesource .bash_profilesqlplus /nolog conn / as sysdba alter user system identified by aaaa; alter user sys identified by yyyy; commit;
使用 navicat 连接 oracle oralce 服务名:helowin
1 2 3 4 5 6 7 8 使用 Navicat 连接 连接类型: Basic 主机:你的ip 端口: 1521 服务名: helowin 用户名:sys 密码:aaaa
创建表空间和数据库用户
1 2 3 4 create table space DB_DEMO datafile '/home/oracle/app/oracle/oradata/helowin/DB_DEMO.dbf' size 200 m autoextend on next 10 M maxsize unlimited; create user DB_DEMO identified by aaaa default tablespace DB_DEMO; grant connect ,resource to DB_DEMO; grant dba to DB_DEMO;
导入 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/bashcd /home/oraclesource .bash_profileimp db_demo/aaaa@helowin file=/home/oracle/db_demo.dmp fromuser=db_demo touser=db_demo ignore=y