Jak naprawić uszkodzone triggery AFTER DDL

0

Pytanko

Jest bazka na której są dwa triggery TRIGGER1 AFTER DDL oraz TRIGGER2 AFTER DDL FOLLOW TRIGGER1

sęk w tym, że oba są w stanie invalid i nie da się ani naprawić, ani wyłączyć ani usunąć żadnego z nich.

Macie pomysł jak to naprawić?

1

Kiedyś w takim przypadku pomogło cofniecie backupu do stanu jak baza była spójna.

2

Już sam znalazłem:

alter system set "_system_trig_enabled" = false;
alter trigger TRIGGER1 disable;
alter trigger TRIGGER2 disable;
alter system set "_system_trig_enabled" = true;
1

Mogą być w stanie invalid, bo zmieniły się obiekty, z których triggery korzystają (np. pakiety), bo zmieniły się obiekty z których pakiety korzystają, itd.

Zazwyczaj wystarcza rekompilacja triggera:
alter trigger FOO compile;

A jak jest tego dużo i drzewo zależności jest spore, to rekompilacja wszystkiego:

sqlplus / as sysdba
@$ORACLE_HOME/rdbms/admin/utlrp.sql
0

Nie nie trigger1 byl invalid bo mial literówkę wiec rozkompilowal trigger2 bo mial follow trigger1 ale jak juz oba były invalid to żadnego sie nie dało skompilować wyłączyć ani usunac bo 1 wolal ze 2 jest invalid i na odwrot tylko powyzszy kod z sys pomogl

1 użytkowników online, w tym zalogowanych: 0, gości: 1