docker安装oracle11g并导入dump

拉取镜像

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

容器操作

创建容器

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 start helowin_oracle11g

进入容器

此镜像oracle 用户无密码, su root 密码是 helowin


$ docker exec -it oracle11g /bin/bash

切换到root 用户

 $ su root

编辑profile配置oracle环境变量

$ 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

切换到oracle用户 su - oracle,需要注意的是中间需要加这个-否则软连接无效。

su - oracle
-- 没有密码
sqlplus /nolog
conn /as sysdba

导入dmp文件

创建临时表空间

 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;

创建DIRECTORY

 create or replace directory dump_dir as '/usr/oracle/dump/dir'

创建用户 并分配表空间

-- 创建用户前,建议先删除用户
drop user userA cascade;
create user userA identified by userA123 default tablespace user_data temporary tablespace other_temp;;
-- 授权连接
grant connect,resource to videa;
-- 授权可以是dumpData
grant read,write on directory dump_dir  to videa;
grant create job to videa;
grant manage scheduler to videa;
grant create view to videa;

tips: 非必要操作

-- 修改用户表空间
 alter user user default tablespace other_data temporary tablespace other_temp;
-- 重命名表空间
 alter tablespace user_data rename to new_user_data; 

退出sqlplus,创建directory的目录

sql> exit;
$ su root
// 密码 helowin
$ mkdir /usr/oracle/dump/dir                   // 可能需要一步步创建
-- 授权
$ chown -R oracle:oinstall /usr/oracle/dump/dir

导入dump文件

先检查dump文件oracel server端的编码

目前我docker 安装的oracle 所使用得编码为AL32UTF8, 客户的环境是ZHS16GBK;, 建议保持一致,可以通过select userenv(‘language’) from dual 进行查询

sqlplus / as sysdba
SQL>shutdown immediate
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN
-- 修改编码
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

退出容器bash --------exit

复制dmp文件到容器中

拷出容器

docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

拷入容器

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

$ docker cp you_dmp_file.dmp helowin_oracle11g: /usr/oracle/dump/dir

拷贝完毕后,就可以进行导入了,首先进入容器shelldocker exec -it helo_oracle11g bash,然后切换oracle用户su - oracle切记别忘了这个-然后执行impdp命令

impdp videa/videasoft remap_schema=pmcp:videa  remap_tablespace=byis2:user_data EXCLUDE=TABLE_STATISTICS directory=dump_dir  dumpfile=你的文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值