Recompile the DBMS_AUDIT_UTIL package is in invalid state in Oracle
First, Try to recompile them
ALTER PACKAGE SYS.DBMS_AUDIT_UTIL COMPILE;
ALTER PACKAGE SYS.DBMS_AUDIT_UTIL COMPILE BODY;
Check the compilation errors:
SELECT * FROM DBA_ERRORS WHERE OWNER='SYS' AND NAME='DBMS_AUDIT_UTIL';
OWNER
----------------------------------------------------------------------------------------------------
NAME
----------------------------------------------------------------------------------------------------
TYPE SEQUENCE LINE POSITION
------------------- ---------- ---------- ----------
TEXT
----------------------------------------------------------------------------------------------------
ATTRIBUTE MESSAGE_NUMBER
--------- --------------
SYS
DBMS_AUDIT_UTIL
PACKAGE 1 273 55
PLS-00302: component 'SOURCE' must be declared
ERROR 302
SYS
DBMS_AUDIT_UTIL
PACKAGE 2 0 0
PL/SQL: Compilation unit analysis terminated
ERROR 0
SYS
DBMS_AUDIT_UTIL
PACKAGE BODY 1 1 14
PLS-00905: object SYS.DBMS_AUDIT_UTIL is invalid
ERROR 905
For recreate and fix the error use the following package:
Re-create DBMS_AUDIT_UTIL package specification
@$ORACLE_HOME/rdbms/admin/dbmsaudutl.sql
Re-create DBMS_AUDIT_UTIL package body
@$ORACLE_HOME/rdbms/admin/prvtaudutl.plb
Performed a test case to make it valid:
Testcase:
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
SYS DBMS_AUDIT_UTIL PACKAGE VALID Y
PUBLIC DBMS_AUDIT_UTIL SYNONYM VALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SYS DBMS_AUDIT_UTIL PACKAGE BODY VALID Y
SQL>
SQL> drop package DBMS_AUDIT_UTIL;
Package dropped.
select owner, object_name, object_type, status,ORACLE_MAINTAINED from dba_objects where object_name like '%DBMS_AUDIT_UTIL%';SQL> SQL> SQL> SQL> SQL>
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
PUBLIC DBMS_AUDIT_UTIL SYNONYM INVALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SQL> @$ORACLE_HOME/rdbms/admin/cataudit.sql
Session altered.
select owner, object_name, object_type, status,ORACLE_MAINTAINED from dba_objects where object_name like '%DBMS_AUDIT_UTIL%';SQL> SQL> SQL> SQL> SQL>
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
PUBLIC DBMS_AUDIT_UTIL SYNONYM INVALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SQL> @$ORACLE_HOME/rdbms/admin/prvtaudutl.plb
Session altered.
Library created.
Warning: Package Body created with compilation errors.
Session altered.
SQL> select owner, object_name, object_type, status,ORACLE_MAINTAINED from dba_objects where object_name like '%DBMS_AUDIT_UTIL%';
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
PUBLIC DBMS_AUDIT_UTIL SYNONYM VALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SYS DBMS_AUDIT_UTIL PACKAGE BODY INVALID Y
SQL> @$ORACLE_HOME/rdbms/admin/dbmsaudutl.sql
Session altered.
SQL> select owner, object_name, object_type, status,ORACLE_MAINTAINED from dba_objects where object_name like '%DBMS_AUDIT_UTIL%';
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
SYS DBMS_AUDIT_UTIL PACKAGE VALID Y
PUBLIC DBMS_AUDIT_UTIL SYNONYM VALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SYS DBMS_AUDIT_UTIL PACKAGE BODY INVALID Y
SQL> ALTER PACKAGE SYS.DBMS_AUDIT_UTIL COMPILE BODY;
Package body altered.
SQL> select owner, object_name, object_type, status,ORACLE_MAINTAINED from dba_objects where object_name like '%DBMS_AUDIT_UTIL%';
OWNER OBJECT_NAME OBJECT_TYPE STATUS O
---------- ---------------------------------------- -------------------- ------- -
SYS DBMS_AUDIT_UTIL PACKAGE VALID Y
PUBLIC DBMS_AUDIT_UTIL SYNONYM VALID Y
SYS DBMS_AUDIT_UTIL_LIB LIBRARY VALID Y
SYS DBMS_AUDIT_UTIL PACKAGE BODY VALID Y