项目上需要使用job在每月月初重置序列,在我本机的Oracle上创建job成功了,但在项目的测试平台上创建却报了ORA-04063的错误,详见下图:

在网上搜索,有人说要重新编译DBMS_INTERNAL_LOGSTDBY这个包体,尝试了一下,编译后还是有错。
在PL/SQL中查看DBMS_INTERNAL_LOGSTDBY,发现其依赖的视图“DBA_LOGSTDBY_PROGRESS”有错误,打开“DBA_LOGSTDBY_PROGRESS”的DDL语句并执行,报“找不到system.logmnr_session$”的错误:

经过查找发现system用户下的确没有logmnr_session$这张表,于是我从其他数据库拷贝system.logmnr_session$的DDL语句过来执行。然后再执行创建“DBA_LOGSTDBY_PROGRESS”的DDL语句,依然报错:

查看LOGSTDBY_LOG的DDL语句,并执行:

提示找不到“system.logmnr_log$”,再从其他数据库拷贝system.logmnr_log$的DDL语句过来执行,然后再创建LOGSTDBY_LOG,成功了:

在测试平台上创建Oracle Job时遇到ORA-04063错误,通过检查发现DBMS_INTERNAL_LOGSTDBY依赖的视图存在错误。通过创建缺失的system.logmnr_session$和system.logmnr_log$表,重新编译相关视图和包体,最终成功解决错误并创建了Job。
最低0.47元/天 解锁文章
594

被折叠的 条评论
为什么被折叠?



