impdp + network_link 导入数据时,报ORA-01031, 权限不足

环境说明:

某客户有一套环境,源端数据库的版本为:12.1.0.2(Non-CDB),目标端为:12.2.0.1(CDB),  在每个月的月初,会在目标端主机上会执行一个脚本(该脚本的内容其实就是impdp + network_link)将源端数据库中的一部分表导入到目标数据库中。

该脚本一直运行良好,但这个月初始突然报错。 

 

 

(1)、这期间,这套数据库环境唯一的改变就是部署了一套GoldenGate。 但部署GoldenGate所涉及的源端和目标端数据库操作,应该不至于会影响到expdp/impdp工具才对。

(2)、让客户把执行的命令发出来看看:

 

这个impdp脚本,标准的参数都是常规参数,理论不应该出错。

(3)、客户检查了目标端导入用户的当前权限 ,已经拥有了import_full_database权限。

(4)、建议客户在目标端用导入用户登陆目标端数据库,直接通过dblink去查询源端的数据,看是否正常,客户反馈,这种方式可以正常查询到数据。

(5)、根据impdp network_link ora-01031 这些关键字去搜索MOS,发现Ora-01031: Insufficient Privileges, When Using The Flashback_time Option with EXPDP/IMPDP Network_link (Doc ID 436106.1),但这篇文章与这个案例不匹配,因为在本案例中,根本没有使用Flashback_time或者Flashback_SCN等参数。 但这篇文章也有些帮助,当impdp + network_link 进行一致性的数据访问时,可能会出现ORA-01031。

(6)、客户反馈,这次的导入日志中多了一行信息:FLASHBACK automatically enabled to preserve database integrity.  这说明为了保证数据的一致性,自动开启了flashback功能。联想到刚才搜索到的文章(436106.1),感觉这个问题有点眉目了。因为自动开启了flashback功能,保证数据的一致性,而impdp + network_link 进行一致性的数据访问时,可能会出现ORA-01031。

(7)、针对 FLASHBACK automatically enabled to preserve database integrity.这条信息,以前真的从来没注意到过,但当前的这个故障案例,正在多了这条信息,继续在MOS上搜索这条信息,找到了文章:DataPump Export (EXPDP) Reports "FLASHBACK automatically enabled" After Setting Minimal Supplemental Logging (Doc ID 2612156.1)。  当数据库开启了最小附加日志后,expdp时会产生这条信息,并且有可能会产生ORA-01031,权限不足的报错。 这篇文章的解决方案是在源端赋予用户flashback any table权限,或者 exp_full_database权限。

(8)、检查源端的用户权限,该用户已经拥有exp_full_database权限。 此时,仍然继续在源端赋予用户flashback any table权限。再次在目标端测试数据迁移脚本,一切正常,可以成功导入数据。

 

总结:从整个故障的处理过程来看,就是由于开启了最小附加日志,而源端用户的权限太小,才导致了这个问题。  但是,在我的测试环境中,无法模拟出2612156.1这篇文章中的ORA-01031错误。

 

posted @ 2020-09-02 15:13  石云华  阅读(820)  评论(0编辑  收藏  举报