使用如下命令拉取oracle11g镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
由于镜像比较大,拉取需要耗费一些时间
拉取完毕后可以使用docker images
查看镜像文件
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 990386cbd5c0 4 days ago 443MB
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 3 years ago 6.85GB
创建容器
$ docker run --detach --publish=1521:1521 --name=helowin_oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g /bin/sh -c '/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 && tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log'
然后可以使用docker container ls
查看容器
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
903c28192988 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 5 hours ago Up 19 minutes 0.0.0.0:1521->1521/tcp helowin_oracle11g
使用docker start helowin_oracle11g
启动容器
使用docker ps
查看已经启动的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
903c28192988 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 5 hours ago Up 23 minutes 0.0.0.0:1521->1521/tcp helowin_oracle11g
使用docker exec -it oracle11g bash
进入容器shell,此时使用sqlplus
命令发现不能使用,所以先切换root用户,密码helowin
oracle@903c28192988 ~]$ su root
Password:
[root@903c28192988 oracle]#
然后编辑profile配置oracle环境变量,在文件最下方加入
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
保存后使用ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
创建软连接,然后
再用su - oracle
切换到oracle用户,需要注意的是中间需要加这个-
否则软连接无效。
此时可以使用sqlplus登录了,使用sqlplus /nolog
进入sqlplus命令行,然后conn /as sysdba
以dba身份登录。
[oracle@903c28192988 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Tue May 14 20:35:25 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL>
创建临时表空间
SQL> create temporary tablespace user_temp tempfile
'\usr\oracle\oracledata\user_temp.dbf' size 50m
autoextend on next 50m maxsize 2048m extent management local;
创建表空间
SQL> create tablespace user_data logging datafile
'\usr\oracle\oracledata\user_data.dbf' size 50m
autoextend on next 50m maxsize 2048m extent management local;
创建用户并分配表空间
SQL> create user user identified by password
default tablespace user_data
temporary tablespace user_temp;
修改用户表空间
SQL> alter user user default tablespace other_data temporary tablespace other_temp;
重命名表空间
SQL> alter tablespace user_data rename to new_user_data;
首先创建directory
SQL> create or replace directory dump_dir as '/usr/oracle/dump/dir'
然后将该DIRECTORY授权给用户
SQL> grant read,write on directory dump_dir to user ;
退出sqlplus后,创建目录
$ mkdir /usr/oracle/dump/dir
修改备份目录的属主和属组
$ chown -R oracle:oinstall /usr/oracle/dump/dir
将所需的dmp文件从宿主机拷贝到容器中,在宿主机中执行以下命令
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
$ docker cp you_dmp_file.dmp helowin_oracle11g: /usr/oracle/dump/dir
当然也可以从容器拷贝文件到宿主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
$ docker cp helowin_oracle11g: copy_file copy_file
拷贝完毕后,就可以进行导入了,首先进入容器shelldocker exec -it helo_oracle11g bash
,然后切换oracle用户su - oracle
切记别忘了这个-
然后执行impdp命令
$ impdp user/password DIRECTORY=dump_dir DUMPFILE=you_dmp_file.dmp FULL=y;