Oracle
 sql >> Database >  >> RDS >> Oracle

Perché non posso creare trigger su oggetti di proprietà di SYS?

Non dovresti crearne nessuno oggetti nello schema SYS. Quell'utente fa parte del sistema di gestione del database Oracle ed è probabile che la modifica del suo schema interrompa il database. Certamente potrebbe invalidare il tuo contratto Oracle Support (se ne hai uno). Dalla documentazione:

"L'account amministrativo SYS viene creato automaticamente quando viene creato un database. Questo account può eseguire tutte le funzioni amministrative del database. Lo schema SYS memorizza le tabelle di base e le viste per il dizionario dei dati. Queste tabelle e viste di base sono fondamentali per il funzionamento di Oracle Database. Tabelle nel SYSschema sono manipolati solo dal database e non devono mai essere modificati da nessun utente."

Oh, nel caso ve lo stiate chiedendo, lo stesso vale anche per SYSTEM.

I trigger sono particolarmente soggetti ad abuso e sono una delle principali fonti di problemi di ridimensionamento. Ecco perché Oracle ci vieta di creare trigger in SYS, perché ciò potrebbe danneggiare o almeno influire sulle prestazioni del dizionario di dati.

Ovviamente non è quello che sta succedendo qui. Hai creato le tue tabelle in SYS. Bene, lasciali cadere. Adesso. Usa SYS per creare il tuo utente, GHAZAL o qualsiasi altro nome adatto, e concedigli i privilegi richiesti:CREATE SESSION, CREATE TABLE, CREATE TRIGGER e così via. Quindi connettiti come nuovo utente per creare le tue tabelle e altri oggetti dello schema.