今天同事说Oracle报错,DBMS_SQLTUNE失效了,让帮忙看一下
检查包的状态,发现果然失效了。
SQL> SELECT 'Object_Status' "CHECK_NAME",owner,object_name,object_id,object_type,status from dba_objects
2 where owner='SYS' and object_name = 'DBMS_SQLTUNE';
CHECK_NAME OWNER OBJECT_NAME OBJECT_ID
------------- ------------------------------ -------------------------------------------------------------------------------------------------------------------------------- ----------
OBJECT_TYPE STATUS
------------------- -------
Object_Status SYS DBMS_SQLTUNE 8558
PACKAGE VALID
Object_Status SYS DBMS_SQLTUNE 11737
PACKAGE BODY INVALID
手动编译仍然报错:
SQL> alter package sys.dbms_sqltune compile body;
Warning: Package Body altered with compilation errors.
就是决定重建包:
SQL> conn / as sysdba
SQL> @?/rdbms/admin/dbmssqlt.sql
SQL> @?/rdbms/admin/prvtsqlt.plb
SQL> @?/rdbms/admin/utlrp.sql
参考mos文档:DBMS_SQLTUNE Invalid after patching (Doc ID 2712246.1)