32位升级到64位之后迁移oracle db遇到的问题
处理器由32位变成了64位,重装oracle软件之后,权衡各种因素,db我选择了把冷备直接挂接的办法迁移,迁移之后遇到了问题...
顺利挂载db之后,通过应用程序或者第三方工具(如plsql developer)连接时出现ORA-06553: PLS-801: internal error [56319] 等错误。解决方法如下:
SQL> shutdown immediate
SQL> startup upgrade
SQL> set echo on
SQL> @$ORACLE_HOME/rdbms/admin/utlirp.sql
SQL> select status from dba_objects
2 where object_name='DBMS_STANDARD'
3 and object_type='PACKAGE'
4 and owner='SYS';
如果invalid,则需要重新编译,执行以下语句
SQL> alter package dbms_standard compile;
如果是valid,则不需要执行上面一条语句
SQL> select object_name from dba_objects where status='INVALID';
如果返回值不为空,则需要执行以下语句
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
如果语句执行失败,则依次执行下列语句
$ cd /u01/app/oracle/product/102/db_1/olap/admin/
SQL> @?/olap/admin/catnoamd.sql
SQL> @?/olap/admin/catnoaps.sql
SQL> @?/olap/admin/catnoxoq.sql
SQL> @?/olap/admin/olapidrp.plb
SQL>@?/olap/admin/olap.sql SYSAUX TEMP;
然后再次执行
SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
再次查询
SQL> select object_name from dba_objects where status='INVALID';
此时应为空
SQL> set echo off
SQL> shutdown immediate;
SQL> startup
参考的原文连接如下: