关于数据库的中系统包出错的问题,很管用的办法

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脚本的正常运行的前提是这两个包正确。

posted on 2005-11-29 10:17  lsp_jlu  阅读(309)  评论(0)    收藏  举报