环境:
centos 7.5
oracle 12.2.0.1
报错:
执行一下报错:
更新dba_registry_sqlpatch
$ORACLE_HOME/OPatch/datapatch -verbose 将已安装的补丁写入数据库。
报错如图:
解决方法:
sqlplus / as sysdba SQL> spool fix_cat_logfile.txt SQL> startup upgrade SQL> spool fix_cat_logfile.txt SQL > @?/rdbms/admin/catproc.sql SQL > @?/rdbms/admin/utlrp.sql SQL> spool off
注:
utlrp.sql脚本可以在数据库运行的状态下执行以编译、数据库中的invalid对象.
oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。
上述方法解决问题后,再重新跑一下。
$ORACLE_HOME/OPatch/datapatch -verbose
这里我安装了两个补丁包,一个是update包,一个是ojvm包,我是两个正常的apply,然后verbose,都是报上面的错,然后用了上面的方法跑完脚本后,直接在第二个包的文件内跑一次 $ORACLE_HOME/OPatch/datapatch -verbose 就可以了,不用再回到之前那个补丁包下再去跑这个了。