oracle 在pdb模式下运用impdp命令导入dmp文件
一、引言
注:oracle数据库是可以免费下载的,百度搜下有很多教程
最近需要把一个dmp文件导入oracle数据库,在网上找了很久没干成,步骤都是首先运用sqlplus创建tablespace,创建用户,授权给用户,再在命令行执行imp命令:
结果不行,最后求教给我们dmp文件的大佬,他说需要用impdp命令,不能用imp,不太懂,就按照这样做了,然后分享了一片利用impdp的文章:
上链接:https://www.cnblogs.com/afei1013/p/13123784.html
首先很感谢这篇文章,到中间有一些不太适合自己的地方,就是我写这篇问这篇博客的目的。
首先说一下这篇文章中两个注意点:
1.第二步你的tablespace名称与原dmp文件的tablespace名称一致,这个要注意,原dmp文件的日志文件中可以查看他的tablespace名称
2.最后impdp命令的scheme应换一下:remap_schema=HFGSODS:HFGSODS
再来说我遇到的问题:
1.这个原dmp文件的用户名是HFGSODS,我现在需要创建一样的用户名,但oracle12c之后在cdb模式就只能用c##最为前缀创建公用用户名,所以需要将cdb转换到pdb:
参考文章:https://blog.csdn.net/tuning_optmization/article/details/108254774
2.pdb下创建的用户在navicat看不到,原来需要用你创建的pdb创建新的oracle连接
二、具体步骤
前面引言就说到这里,下面来到大家最关心的环节,上代码:
1.登录oracle
2.查看当前容器
由于我只能装oracle基本都是默认安装,没有修改,默认容器就是cdb
现在就创建pdb
3.创建插接式数据库
create pluggable database pdborcl admin user pdbadmin identified by pdbadmin file_name_convert=( 'D:\oracle19c\oradata\ORCL\pdbseed' , 'PDBOrcl directory' );
记住database后面的pdborcl
4.打开插拔式数据库pdborcl
alter session set container=pdborcl;
alter pluggable database pdborcl open;
5.下面就可以参考上面第一个链接的用impdp导入dmp文件了
现在是在插拔式数据库pdborcl下的操作
5.1 创建tablespace
create tablespace HFGSODS
datafile 'D:\oracle19c\oradata\HFGSODS.dbf' size 500M
autoextend on next 100M maxsize unlimited logging
extent management local autoallocate
segment space management auto;
这个tabelspace后面的名称根据原dmp的日志文件而定
5.2 创建用户
CREATE USER HFGSODS IDENTIFIED BY 123456 DEFAULT TABLESPACE HFGSODS temporary tablespace TEMP;
这里就可以创建不用带c##的用户了,USER搞成和tabelspace一样的,别人基本也是这样写的,123456就是用户的密码吧,TABLESPACE就是你上面的,其他的不用改了。
5.3给用户授权
grant connect, resource to HFGSODS;
grant dba to HFGSODS;
6.最后去命令行执行impdp命令就可以了
Impdp HFGSODS/123456@localhost:1521/pdborcl DIRECTORY=DATA_PUMP_DIR DUMPFILE=tables.DMP remap_schema=HFGSODS:HFGSODS
最后在具体做的过程在有什么问题,欢迎大家一起交流讨论。
在下编程小白,如果有什么错误希望大家批评指正!
邮箱:1916728303@qq.com