impdp的一些实际问题解决方法

2019-01-29 11:34:45 浏览数 (3)

之前在http://blog.csdn.net/bisal/article/details/19067515写过一篇关于expdp和impdp的实践的帖子,今天碰到个问题,有些内容没有介绍全,这里再补充下。

知识点1:需要登录到数据库,操作create (or replace) directory test_dump as '/opt/test',这里不能用test_dump='/opt/test',且/opt/test就够了,不用必须是/opt/test。

知识点2:导入时不用必须和导出的用户名一致。

知识点3:如果导入过程中报的是“Unable to open the log file.”、找不到test_dump等之类的错误,检查方法:

1、首先检查test_dump是否设置正确,可以检索dba_directories表;

2、其次要看test_dump目录是否有读写权限;

3、然后也可以看导入用户是否有权限访问到dba_directories,

今天的问题就是导入使用的用户是普通用户,无法访问dba_directories,首先报的是“Unable to open the log file.”、找不到test_dump等之类的错误,开始以为test_dump建立有问题,但dba_directories有值,且路径是有读写权限,但导入的账户没有dba_directories的权限,想必导入时自然无法读到test_dump,此时可以使用以下两条语句将所需权限赋给这个普通用户:

grant read,write on directory test_dump to user; 

grant imp_full_database to user;

知识点4:导入过程中可能会出现一些GRANT INSERT ...权限赋予账户错误的问题,很可能是导入的库中没有对应的角色ROLE,如果应用不用这些,则可以忽略。

知识点5:如果导入的库中包含待导入的数据表结构,则impdp会失败,猜测expdp的dump中包含DDL语句,因此不允许导入库中包含表结构,需要提前清空导入用户空间的相关表结构。

0 人点赞