RE: Deleting from SYS tables

  • From: "Daniel Fink" <daniel.fink@xxxxxxxxxxxxxx>
  • To: hostetter.jay@xxxxxxxxx, oracle-l@xxxxxxxxxxxxx
  • Date: Fri, 25 Feb 2011 18:05:24 +0000

I don't know of any specific documentation, though an SR w/Oracle Support would 
be pretty definitive. I've worked on issues where they had me directly update 
sys tables, but it was for specific bugs with specific instructions.

I recall (not sure where I came across this bit of stored information...though 
the name Tom Kyte is somehow attached to it) that sys tables, such as job$, are 
not read into the buffer cache for recursive sql, but are read into the 
dictionary cache and modified there. No read consistency, no option to 
rollback, etc. If there were two sessions updating jobs, one directly modifying 
the table (read into buffer cache) and one using the proper method (dbms_job, 
recursive sql and the dictionary cache), you would end up with a missing 

Daniel Fink

------- Original Message -------
On 2/25/2011 4:53 PM Jay Hostetter wrote:
I had a user that deleted records from DBA_JOBS.  Unfortunately, the
application gives the user DBA rights so this is beyond my control.  *I*
know it is bad practice to directly mess with SYS tables, but is there any
documentation from Oracle that spells this out?  Or do they assume that most
apps aren't crazy enough to handout DBA rights?  In any case, I need to
steer some users towards APIs (like DBMS_JOB) instead of using a sledge
hammer.  I'd like a little documentation to back me up.

Thank you,

Other related posts: