1.使用如下命令拉取oracle11g镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2.由于镜像比较大,拉取需要耗费一些时间
拉取完毕后可以使用docker images查看镜像文件
$ docker images
3.创建容器
$ 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'4.然后可以使用docker container ls查看容器
$ docker container ls
5.启动容器
使用docker start helowin_oracle11g启动容器
使用docker ps查看已经启动的容器
6.进入容器shell
使用docker exec -it oracle11g bash进入容器shell,此时使用sqlplus命令发现不能使用,所以先切换root用户,密码helowin
su root
然后编辑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身份登录。
7.导入dmp文件,将你的dmp文件复制到容器中 docker cp
8.创建临时表空间
create temporary tablespace user_temp tempfile
'\usr\oracle\oracledata\user_temp.dbf' size 50m
autoextend on next 50m maxsize 2048m extent management local;9.创建表空间
create tablespace user_data logging datafile
'\usr\oracle\oracledata\user_data.dbf' size 50m
autoextend on next 50m maxsize 2048m extent management local;10.分配表空间
创建用户并分配表空间
create user user identified by password
default tablespace user_data
temporary tablespace user_temp;11.修改用户表空间
alter user user default tablespace other_data temporary tablespace other_temp;12.重命名表空间
alter tablespace user_data rename to new_user_data;13.首先创建directory
create or replace directory dump_dir as '/usr/oracle/dump/dir'14.赋权
grant read,write on directory dump_dir to user ;15.退出sqlplus后,创建目录
mkdir /usr/oracle/dump/dir
16.修改备份目录的属主和属组
chown -R oracle:oinstall /usr/oracle/dump/dir
17.切换oracle用户su - oracle切记别忘了这个-然后执行impdp命令
imp user/password DIRECTORY=dump_dir DUMPFILE=you_dmp_file.dmp FULL=y;
docker 重新打镜像后无法启动oracle数据库问题修复:
1、ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
解决方法: 执行alter database open;2、ERROR at line 1:
ORA-01507: database not mounted
解决方法关闭数据库,重启:shutdown immediate