以aa.dmp文件导入到Docker中Oracle容器为例:
dmp文件一般名称较长,建议改短方便操作。
Linux使用如下操作
mv 原dmp文件名 新dmp文件名
安装Oracle的容器
dockers pull oracleinanutshell/oracle-xe-11g
可以根据情况选择其他版本oracle,操作基本无太大差别
其他oracle容器如:
alexeiled/docker-oracle-xe-11g
deepdiver/docker-oracle-xe-11g
启动容器
docker run -d -p 49160:22 -p 49161:1521 oracleinanutshell/oracle-xe-11g
进入容器中
docker exec -it 容器名 /bin/bash
进不去可以通过 docker ps查看最左边运行的id,输入前3位即可
docker exec -it 0bf /bin/bash ##0bf是本次容器的前三位
dmp文件导入容器
Windows上要进入到DMP文件所在文件夹下操作,这里我们暂时放在/home这
docker cp aa.DMP 8cf9014a034a:/home
docker cp 复制的文件 容器的id:复制到容器的路径
以下步骤会略有差异,而且容易出错
首先我们需要看版本与相关信息
进入容器
docker exec -it 0b /bin/bash ##0b是运行容器的id前两位
通过docker容器下载的一般是11版本,通过以下名称查看:
find / 11
找到版本号下以及的目录,将路径复制出来,一会会用
创建表空间
CREATE BIGFILE TABLESPACE "你要创建的表空间名称" DATAFILE '刚刚复制的路径/创建的表空间名称.ora' SIZE 1000M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
例如:
CREATE BIGFILE TABLESPACE "table" DATAFILE '/u01/app/oracle/product/11.2.0/xe/table.ora' SIZE 1000M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
创建用户
create user 用户名 identified by 密码 default tablespace TS_TABLE_TMS temporary tablespace TEMP profile DEFAULT quota unlimited on TS_ECP quota unlimited on TS_HIS_TMS quota unlimited on TS_INDEX_TMS quota unlimited on TS_TABLE_TMS;
例如:
create user user identified by user default tablespace TS_TABLE_TMS temporary tablespace TEMP profile DEFAULT quota unlimited on TS_ECP quota unlimited on TS_HIS_TMS quota unlimited on TS_INDEX_TMS quota unlimited on TS_TABLE_TMS;
如果用户已存在
drop user user cascade;
用户授权
grant connect, resource ,dba to 用户名;
例如:
grant connect, resource ,dba to user;
移动DMP文件到特定文件夹下
为了避免路径加载文件失败的问题
输入一个不存在的文件,例如:dsaaa.dmp执行导入
impdp ms_tps/ms_tps file='dsaaa.dmp'
复制aa.dmp文件到该文件夹下
cd /home
cp ./aa.DMP /u01/app/oracle/admin/XE/dpdump/ ##后面的地址就是刚刚查到的地址
最后一步:
oracle加载DMP文件
impdp 用户名/密码 file='aa.DMP' full=y ignore=y;
例如:
impdp user/user file='aa.DMP' full=y ignore=y; ##里面有 ' ' 省略会出错