在将 oracle db 从 10g 升级到 11g 之前,如何处理 SYS 中那些无效的 JAVA CLASS 对象类型对象?

mag*_*gqq 2 oracle-10g

我准备将 oracle 10g prod db 升级到 11g,但是我们在 SYS 中有 130 个无效对象(都属于 JAVA CLASS object_type)。并且从oracle从10g升级到11g的最佳实践,它说在sys或system schema中不应有任何无效对象。但是我已经多次运行 utlrp.sql 来重新编译所有无效对象脚本,那些无效的 JAVA CLASS object_type 对象在 SYS 用户中是持久的。我尝试手动重新编译每个对象,如下所示,

更改java类“java类对象名称”编译;但出现错误:ORA-29521:找不到引用的名称 balabala

您对如何修复此错误有任何建议,或者我们可以继续使用 sys 架构中的 130 个无效对象安全地升级数据库吗?谢谢!

kev*_*kio 5

这个博客你可以先在开发中尝试这个......

SQL> spool resolve.sql;

SQL> select 'alter java class “'||object_name||'” resolve;'
2 from user_objects
3 where object_type like '%JAVA%';

SQL> 假脱机;

SQL> @resolve

彻底清除方法是删除并重新安装 java JVM

Java VM 在 CREATE OR REPLACE JAVA SYSTEM 命令期间创建并填充系统类。运行 rmjvm.sql 先删除 JVM,然后反弹数据库,然后 initjvm.sql

我再说一遍,这些应该首先在您的开发堆栈上尝试!