Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum kann ich keine Trigger für Objekte erstellen, die SYS gehören?

Sie sollten keine erstellen Objekte im SYS-Schema. Dieser Benutzer ist Teil des Oracle-Datenbankverwaltungssystems, und das Ändern seines Schemas wird wahrscheinlich Ihre Datenbank beschädigen. Sicherlich könnte es Ihren Oracle Support-Vertrag ungültig machen (falls Sie einen haben). Aus der Dokumentation:

"Das Administratorkonto SYS wird automatisch erstellt, wenn eine Datenbank erstellt wird. Dieses Konto kann alle Datenbankverwaltungsfunktionen ausführen. Das SYS-Schema speichert die Basistabellen und -ansichten für das Datenwörterbuch. Diese Basistabellen und -ansichten sind entscheidend für den Betrieb von Oracle Database. Tabellen in der SYSschema werden nur von der Datenbank manipuliert und dürfen niemals von einem Benutzer geändert werden."

Oh, falls Sie sich fragen, das gleiche gilt auch für SYSTEM.

Trigger sind besonders anfällig für Missbrauch und eine Hauptursache für Skalierungsprobleme. Aus diesem Grund verbietet uns Oracle, Trigger in SYS zu erstellen, da dies die Leistung des Datenwörterbuchs beschädigen oder zumindest beeinträchtigen könnte.

Das ist hier natürlich nicht der Fall. Sie haben Ihre eigenen Tabellen in SYS gebaut. Nun lass sie fallen. Jetzt. Verwenden Sie SYS, um Ihren eigenen Benutzer GHAZAL oder einen beliebigen Namen zu erstellen, und gewähren Sie ihm die erforderlichen Berechtigungen:CREATE SESSION, CREATE TABLE, CREATE TRIGGER und so weiter. Verbinden Sie sich dann als dieser neue Benutzer, um Ihre Tabellen und andere Schemaobjekte zu erstellen.