ORA-24237: object id argument passed to DBMS_UTILITY.INVALIDATE is not legal

oracle

I have had invalid public synonyms in my database. Some of them references to ordinary schema objects and others to sys schema objects.

I compiled all these public synonyms by the following command:

alter public synonym mysynonym_name compile;

My supervisor suddenly told me that I should not have compiled SYS schema synonyms. I tried to invalidate them by the following way:

exec dbms_utility.invalidate(444849);

Where 444849 is the synonym object ID. But got the following error:

ORA-24237: object id argument passed to DBMS_UTILITY.INVALIDATE is not legal
ORA-06512: at "SYS.DBMS_UTILITY", line 1053
ORA-06512: at line 2

Why?

Can compilation of these synonyms cause some problem?

Thank you a lot, I am waiting for your recommendations and answers. Please share your knowledge with us.

Best Answer

You don't have the create privileges on the object being invalidated. But generally it is a very bad idea to invalidate objects in the sys schema. This will also invalidate all objects that reference them, so you might end up with lots of invalidated objects.