This was a strange one. Attempts at recompiling the following package body resulted in this PLS-00801 error.
COL owner FOR A20
COL object_name FOR A40
BREAK ON object_name
SELECT owner,
object_name,
object_type,
status,
created,
last_ddl_time
FROM dba_objects
WHERE object_name = 'PKG_FINANCIALS_WORK'
ORDER BY status, object_type
/
OWNER OBJECT_NAME OBJECT_TYPE STATUS CREATED LAST_DDL_TIME
-------------------- ---------------------------------------- ------------------- ------- -------------------- --------------------
FINANCE PKG_FINANCIALS_WORK PACKAGE BODY INVALID 16-SEP-2010 13:19:10 19-OCT-2016 10:28:37
FINANCE PACKAGE VALID 16-SEP-2010 13:18:54 19-OCT-2016 09:56:14
ALTER PACKAGE PKG_FINANCIALS_WORK COMPILE BODY;
Warning: Package Body altered with compilation errors.
SHOW ERRORS
Errors for PACKAGE BODY PKG_FINANCIALS_WORK:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
0/0 PLS-00801: internal error [hshuid:LU invalid]
I stumbled across this MOS note (1194683.1) which suggests several possible causes, but the 4th point relating to views was the underlying cause in this particular case…
BREAK ON OWNER SKIP 1 COL OBJECT_NAME FOR A30 SELECT o.owner, o.object_name, o.status, o.last_ddl_time FROM dba_objects o, dba_dependencies d WHERE o.owner = d.referenced_owner AND o.object_name = d.referenced_name AND d.name = 'PKG_FINANCIALS_WORK' AND d.owner = 'FINANCE' AND d.referenced_type = 'VIEW' ORDER BY 2 DESC / OWNER OBJECT_NAME STATUS LAST_DDL_TIME ------------------------------ ------------------------------ ------- -------------------- FINANCE VW_DEBT VALID 22-JUL-2014 22:30:37 VW_OVERDUE_INVOICE VALID 22-JUL-2014 22:30:37 VW_CREDIT VALID 30-AUG-2016 16:04:07 VW_ACCOUNTS VALID 30-AUG-2016 16:04:07
As you can see, all the views were valid, but I opted to force a recompilation of them anyway…
SELECT 'ALTER VIEW ' ||referenced_owner ||'.' ||referenced_name ||' COMPILE;' COMPILE_CMDS FROM dba_dependencies WHERE name = 'PKG_FINANCIALS_WORK' AND owner = 'FINANCE' AND referenced_type = 'VIEW' AND referenced_link_name IS NULL ORDER BY 1 DESC / COMPILE_CMDS --------------------------------------------------------- ALTER VIEW VW_DEBT COMPILE; ALTER VIEW VW_OVERDUE_INVOICE COMPILE; ALTER VIEW VW_CREDIT COMPILE; ALTER VIEW VW_ACCOUNTS COMPILE;
The views compiled successfully, and when I attempted to recompile the package body again this time, it compiled without any issue!
ALTER PACKAGE PKG_FINANCIALS_WORK COMPILE BODY; Package body altered.
Happy days 🙂