sql >> Database >  >> RDS >> Oracle

Waarom kan ik geen triggers maken voor objecten die eigendom zijn van SYS?

U zou geen elke . moeten maken objecten in het SYS-schema. Die gebruiker maakt deel uit van het Oracle-databasebeheersysteem en als u het schema wijzigt, zal uw database waarschijnlijk kapot gaan. Het kan zeker uw Oracle Support-contract ongeldig maken (als u er een heeft). Uit de documentatie:

"Het beheerdersaccount SYS wordt automatisch aangemaakt wanneer een database wordt aangemaakt. Dit account kan alle databasebeheerfuncties uitvoeren. Het SYS-schema slaat de basistabellen en views op voor de datadictionary. Deze basistabellen en views zijn cruciaal voor de werking van Oracle Database. Tabellen in de SYSschema's worden alleen door de database gemanipuleerd en mogen nooit door een gebruiker worden gewijzigd."

Oh, voor het geval je het je afvraagt, hetzelfde geldt ook voor SYSTEM.

Triggers zijn bijzonder vatbaar voor misbruik en zijn een belangrijke bron van schaalproblemen. Daarom verbiedt Oracle ons om triggers in SYS te bouwen, omdat dit de prestaties van de datadictionary zou kunnen beschadigen of op zijn minst zou kunnen beïnvloeden.

Dat is natuurlijk niet wat hier gebeurt. Je hebt je eigen tabellen gebouwd in SYS. Nou, laat ze vallen. Nutsvoorzieningen. Gebruik SYS om uw eigen gebruiker, GHAZAL of welke naam dan ook aan te maken, en verleen deze de vereiste privileges:CREATE SESSION, CREATE TABLE, CREATE TRIGGER, enzovoort. Maak vervolgens verbinding als die nieuwe gebruiker om uw tabellen en andere schema-objecten te maken.




  1. Zijn er nadelen aan bitvlaggen in databasekolommen?

  2. Plezier met (columnstore) compressie op een hele grote tafel – deel 1

  3. Herhaal een string meerdere keren in MySQL - REPEAT()

  4. Nieuwe data voor gratis certificeringsexamens op Oracle Cloud en Autonomous Database