impdp时报错Ora-28031

今天一客户说在做impdp导入时,报错Ora-28031。我们看看ora-28031的报错是什么意思:

从报错信息看,是SYS用户的role超过148个,一开始,我们用

进行,查询,发现远远不到148个,后来,查询到文档 DataPump Import Errors With Repeated ORA-39083 ORA-31625 And ORA-28031 During OBJECT_GRANTS (Doc ID 1101035.1) 发现,原来不仅仅是直接的role,级联的role也会被计算在内,即需要用下面的sql进行查询:

我们看到,如果算级联的role的话,SYS就有超过148个的role,因此再用impdp导入的时候,会报错ora-28031。

根据文档建议,可以在导出前,在源库删除部分role,或者导入时 EXCLUDE=ROLE。

另外,我们还可以这样做,
(1)备份原来default role的权限

(2)直接设置:

(3)导出

(4)impdp导入后恢复,用第一步记录的SQL恢复

一般情况下,引起Ora-28031的role的往往是SYS,但是在极端情况下,也有可能是别的role,写了如下一段,可以检查,并备份超过148个role的授权语句。

我们来测试一下:

然后我们执行第(2)步,alter user SYS default roles DBA;然后再检查:

好,此时可以安全做导出导入。待导入完后,恢复default role并检查:

看到已经恢复。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.