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 @   石云华  阅读(841)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示