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

Hvorfor kan jeg ikke oprette triggere på objekter, der ejes af SYS?

Du bør ikke oprette nogle objekter i SYS-skemaet. Denne bruger er en del af Oracle-databasestyringssystemet, og ændring af dets skema vil sandsynligvis ødelægge din database. Det kan bestemt ugyldiggøre din Oracle Support-kontrakt (hvis du har en). Fra dokumentationen:

"Den administrative konto SYS oprettes automatisk, når en database oprettes. Denne konto kan udføre alle databaseadministrative funktioner. SYS-skemaet gemmer basistabellerne og visningerne for dataordbogen. Disse basistabeller og visninger er kritiske for driften af ​​Oracle Database. Tabeller i SYSschema manipuleres kun af databasen og må aldrig ændres af nogen bruger."

Åh, hvis du undrer dig, det samme gælder også for SYSTEM.

Triggere er særligt tilbøjelige til misbrug og er en væsentlig kilde til skaleringsproblemer. Det er derfor, Oracle forbyder os at bygge triggere i SYS, fordi det kan ødelægge eller i det mindste påvirke dataordbogens ydeevne.

Det er selvfølgelig ikke det, der sker her. Du har bygget dine egne borde i SYS. Slip dem vel. Nu. Brug SYS til at oprette din egen bruger, GHAZAL eller et hvilket som helst navn, der passer, og giv den de nødvendige rettigheder:OPRET SESSION, OPRET TABEL, OPRET TRIGGER, og så videre. Tilslut derefter som den nye bruger for at oprette dine tabeller og andre skemaobjekter.




  1. Kombiner SQLite Count() med GROUP BY for at tilføje en "Count"-kolonne til dit resultatsæt

  2. Hvordan får jeg min postgresql-database til at bruge en versal ufølsom sortering?

  3. Opdater SQL Server-statistikker ved hjælp af en databasevedligeholdelsesplan

  4. Forhåndsvisning af dokumenter i Microsoft Access-formular