只有一个dump文件,啥信息也没给的前提下怎么去正确导入该dump到oracle数据库

踩坑过程:客户直接给了一个dump文件,啥信息也没给的前提下怎么去正确导入该dump文件

1.首先预估大约需要多少空间。。dump文件发现该文件大小54个G,保守估计导入后会扩大到一倍,所以新建一个用户,分配一个表空间100G,并分配该用户dba权限(实际其实只需要imp执行权限就行,但是为了避免可能会带来其他因为权限而导致导入时间排查太久,故而一次性到位,直接给dba权限)

2.据排查发现其实oracle利用dump格式导入导出有两套命令,exp/imp 和 expdp/impdp,且必须一一匹配,也就是说源端用exp命令导出的,这边也必须用imp命令导入,反之亦然。

在我们不知道dump文件是用什么命令导出的时候,我们只能去试,大胆去测试就行。

发现用dmp的时候出现如下错误

IMP-00038: Could not convert to environment character set’s handle 

IMP-00000: Import terminated unsuccessfully

很重要的两个错误信息,这两个错误信息就告诉我们源端导出的dump文件命令是用的expdp,所以我们导入的时候要用impdp

3.好了问题又来了,可能有的同学会去百度查资料发现,impdp是属于完全相同的库导入导出,需要知道用户名和表空间,建跟源端一样的才能导入,不要急,慢慢来

不管怎样,大胆导一次试下(就用之前开始建好的用户和表空间)

好,到此到家就会发现,导入的时候它会提示你的,用户名如果不对,会直接报用户名不存在,这个时候再建一个一摸一样的用户名就行

紧接着,表空间也给出了错误的信息提示,再把之前建好的表空间名字修改下就行,也不需要重建表空间。

然后接着再往下执行

至此抽取成功,检查表里数据发现确实已经抽取完成。。

实际抽取命令:impdp 用户名/密码@实例名 directory=dump文件存放的路径的别名 dumpfile=dump文件名 

再说下dump文件存放的路径,两种,这边就说一种简单的,常见的就是去查下服务器默认的dump文件存放路径,然后把dump文件放到该目录下,查看方法命令如下

select * from DBA_DIRECTORIES;

猜你喜欢

转载自blog.csdn.net/Aaron_ch/article/details/113007263