Sistem tetikleyicilerinin devre dışı bırakılması

Veritabanında java kurulumu , downgrade ya da upgrade gibi işlemler sırasında bazen sistem trigger’larının devre dışı bırakılması gerekebilir. Kendi yazdığımız bir sistem trigger’ında oluşabilecek bir hata veritabanında ciddi sorunlara yol açabilir. Bu gibi durumlarda sistem triggler’larının devre dışı bırakılmasına ihtiyaç duyulabilir.

Sistem  tetikleyicilerinin devre dışı bırakılması için _system_trig_enabled parametresinin değerinin false yapılması gerekmektedir. Bu parametrenin mevcut değerini aşağıdaki sorgu ile öğrenebiliriz.

SELECT x.ksppinm name, y.ksppstvl VALUE, ksppdesc description
  FROM x$ksppi x, x$ksppcv y
 WHERE     x.inst_id = USERENV ('Instance')
       AND y.inst_id = USERENV ('Instance')
       AND x.indx = y.indx
       AND x.ksppinm = '_system_trig_enabled'

Parametre değişimini aşağıdaki gibi yapabiliriz.

SQL> alter system set "_system_trig_enabled"=false scope=both sid='*';

System altered.

Parametre değişimi ile hangi triggler’ların devre dışı kalacağını aşağıdaki sorgu ile bulabiliriz.

SELECT a.obj#, a.sys_evts, b.name
  FROM trigger$ a, obj$ b
 WHERE a.sys_evts > 0 AND a.obj# = b.obj#;

Parametrenin etkileyeceği olaylar aşağıdaki gibidir :

Kaynak yöneticisi olayları

  • STARTUP
  • SHUTDOWN
  • SERVERERROR

İstemci olayları

  • AFTER LOGON
  • BEFORE LOGOFF
  • BEFORE CREATE
  • AFTER CREATE
  • BEFORE ALTER
  • AFTER ALTER
  • BEFORE DROP
  • AFTER DROP
  • BEFORE ANALYZE
  • AFTER ANALYZE
  • BEFORE ASSOCIATE STATISTICS
  • AFTER ASSOCIATE STATISTICS
  • BEFORE AUDIT
  • AFTER AUDIT
  • BEFORE NOAUDIT
  • AFTER NOAUDIT
  • BEFORE COMMENT
  • AFTER COMMENT
  • BEFORE CREATE
  • AFTER CREATE
  • BEFORE DDL
  • AFTER DDL
  • BEFORE DISASSOCIATE STATISTICS
  • AFTER DISASSOCIATE STATISTICS
  • BEFORE GRANT
  • AFTER GRANT
  • BEFORE RENAME
  • AFTER RENAME
  • BEFORE REVOKE
  • AFTER REVOKE
  • BEFORE TRUNCATE
  • AFTER TRUNCATE

Loading

Leave Your Comment