关于数据库的中系统包出错的问题,很管用的办法
SQL> CONN YANGTK/YANGTK@TEST
ERROR:
ORA-06553: PLS-213: STANDARD 包不可访问
访问程序包 DBMS_APPLICATION_INFO 时出错
已连接。
SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> alter package standard compile;
程序包已变更。
SQL> alter package dbms_standard compile;
程序包已变更。
SQL> @%ORACLE_HOME%rdbmsadminutlrp.sql
PL/SQL 过程已成功完成。
表已创建。
表已创建。
表已创建。
索引已创建。
表已创建。
表已创建。
视图已建立。
视图已建立。
程序包已创建。
没有错误。
程序包主体已创建。
没有错误。
PL/SQL 过程已成功完成。
PL/SQL 过程已成功完成。
SQL> SELECT COUNT(*) FROM DBA_OBJECTS WHERE STATUS = 'INVALID';
COUNT(*)
----------
6
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';
OBJECT_NAME
-------------------------------------------------------------------
ODCIARGDESC
ODCICOLINFO
ODCICOST
ODCIINDEXINFO
ODCIINDEXINFO
STREAMS$_EVALUATION_CONTEXT
已选择6行。
SQL> CONN YANGTK/YANGTK@TEST
已连接。
SQL>
至此,可以看到,原来失效的将近400个对象基本上都被重新编译通过,登陆时的错误也消失了。
需要注意的是,必须首先手工编译STANDARD包,然后编译DBMS_STANDARD包,utlrp脚本的正常运行的前提是这两个包正确。
浙公网安备 33010602011771号