The DBA_OBJECTS object is a view. I was trying to look and see what the underlying tables of that view is. Can those base tables be updated manually, and it be reflected in the view?
Can obj$ be updated manually?
12 Answers
No. obj$ cannot be updated manually. Only indirectly through execution of DDL statements that create, alter, or drop database objects.
You can see the underlying objects by querying dba_views:
SELECT text FROM dba_views WHERE view_name = 'DBA_OBJECTS' You will find that it is quite complex, undocumented and absolutely off limits for direct modification. Messing with dictionary objects can easily corrupt your dictionary and will earn you a dead-end in any SR you open with Oracle. But there's no harm in exploring the view definitions to understand the dictionary better, and in some cases, such as with advanced monitoring tools such as I write, there is benefit to querying base dictionary and fixed x$ objects directly, but never modifying anything.
The only exception to the above rule I have found is that there is a legitimate need for a DBA at times to modify the ptime column in sys.user$ in order to spread out password expirations caused by creating too many users all at the same time (at database creation time, for example). But this is a rare situation and is only justified by the lack of any other means provided by Oracle to do this.