You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c执行expdp/impdp因SYS包报错如何解决

Oracle 19c expdp/impdp报DBMS_LOGREP_UTIL无效、同义词循环链修复方案

故障表现

  • 所有expdp/impdp命令执行失败,返回错误栈如下:
ORA-31626: job does not exist
ORA-31637: cannot create job SYS_EXPORT_SCHEMA_01 for user SYSTEM
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPV$FT", line 1145
ORA-04045: errors during recompilation/revalidation of SYS.DBMS_LOGREP_UTIL
ORA-01775: looping chain of synonyms
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_LOGREP_UTIL"
ORA-06512: at "SYS.KUPV$FT", line 957
  • 排查确认SYS.DBMS_LOGREP_UTIL包为无效状态,该包为加密包装,无法直接查看源码定位触发循环同义词的关联对象。
  • 报错截图:报错截图

修复步骤

该问题本质是公共同义词存在错误配置,和SYS下的内置字典表重名且指向不存在的对象,触发编译时的循环引用,按以下步骤修复即可:

  1. 用SYS用户登录数据库,执行SQL定位异常的公共同义词:
select owner, synonym_name, table_owner, table_name
from dba_synonyms
where owner = 'PUBLIC'
and synonym_name in (
    select object_name from dba_objects where owner='SYS' and object_type in ('TABLE','VIEW','PACKAGE')
)
and (table_owner is null or not exists (
    select 1 from dba_objects b 
    where b.owner = table_owner and b.object_name = table_name
));

绝大多数场景下,查询结果会返回LOGMNR_LOG$、LOGMNR_SESSION$、LOGREP$这类和日志挖掘、逻辑复制相关的异常公共同义词,均为误操作创建的无效公共同义词。

  1. 逐个删除查询到的异常公共同义词,语法示例:
-- 替换成实际查到的同义词名称
drop public synonym LOGMNR_LOG$;
  1. 清理完成后手工编译无效包:
alter package SYS.DBMS_LOGREP_UTIL compile;
alter package SYS.DBMS_LOGREP_UTIL compile body;
  1. 验证包状态:
select object_name, status from dba_objects 
where owner='SYS' and object_name='DBMS_LOGREP_UTIL';

如果返回结果中包规范、包体状态均为VALID,直接测试expdp/impdp命令即可恢复正常。
5. 如果编译后包仍为无效状态,执行Oracle内置字典修复脚本重建相关组件:

-- 以SYS AS SYSDBA身份执行
@?/rdbms/admin/catlog.sql
@?/rdbms/admin/dbmslrep.sql
@?/rdbms/admin/utlrp.sql

脚本执行完成后会自动重编译所有SYS下的无效对象,等待执行完成后再验证数据泵功能即可。

内容的提问来源于stack exchange,提问作者Vishal5364

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:36:21