Yesterday I had an
ora-600: [kqd-objerror$]when compiling a trigger.
My DBA found the solution in oracle support: ID 1160244.1
"Cause: The problem is caused by a dictionary inconsistency.
When compiling invalid PL/SQL objects a corresponding row for the invalid object must exist in OBJERROR$. The ORA-600 error indicates that this row could not be updated (the "U" parameter) because the row didn't exist.
Solution: Solution is to add the missing row by querying the OBJECT_ID from DBA_OBJECTS for the object to be compiled.
Then perform an INSERT of this OBJECT_ID value into OBJERROR$.
Next is to perform COMMIT followed by a SHUTDOWN ABORT. Note that this MUST be ABORT to prevent the rowcache from being flushed to the data dictionary.
After that, the database can be started using STARTUP NORMAL and the trigger can be compiled."
That fixed the problem :-)! Great!