Guten Morgen, Kollegen!
Ich hänge bei folgender Aufgabe:
Nach Eintrag in eine Spalte einer Tabelle wird ein Trigger ausgelöst, der alle Werte dieser Spalte kumuliert und je nach Ergebins ( <>0) eine Emai verschickt. Das klappt auch wunderbar, nur passiert es jedoch ab und zu, dass zwei Einträge kurz hintereinander erfolgen(ca 10 sec) und somit eine Email verschickt wird, obwohl der Wert schon wieder Vergangenheit ist (=> großes Geschrei:"der Rechner kann nicht rechnen"!)
Folgendes habe schon versucht:
gleich nach diesem Eintrag ein
1)
dbms_lock.sleep(20), anschliessend Wert neu berechnet: nice try, ändert nat. nix, ausser das alles 20 sec später passiert... :-(
2)
Als nächstes habe ich versucht, durch den Trigger eine Prozedur aufzurufen, die dann einen Job erstellt, der ca. 30 sec. später nochmal die Werte der Spalte zusammen addiert und dann je nach Ergebnis eine Email versendet. (TRIGGER->PROZEDUR->JOB)
Die Prozedur selbst funktioniert bei Aufruf über eine shell (exec...) wunderbar, mein Job wird erstellt, 30 sec später ausgeführt und löscht sich dann auch brav selber.
Versuche ich jedoch, die Prozedur über eine Trigger aufzurufen, erhalte ich folgenden Fehler:
===schnipp===
ORA-04092: Trigger darf kein ausfhren
ORA-06512: in "SYS.DBMS_ISCHED", Zeile 99
ORA-06512: in "SYS.DBMS_SCHEDULER", Zeile 262
ORA-06512: in "S1.SP_JOB_ORDER", Zeile 30
ORA-06512: in "S1.SP_CHECK_ORDER", Zeile 47
ORA-06512: in "T1.TR_AFTER_INS_ORDER", Zeile 3
ORA-04088: Fehler bei der Ausfhrung von Trigger 'T1.TR_AFTER_INS_ORDER'
===schnapp===
Überprüft habe ich auch alle Berechtigungen.
Wie komme ich hier zu einer brauchbaren Lösung? Gibt es vielleicht eine völlig andere Idee für die Aufgabe einer verzögerten Ausführung?
Version 10gR2
OS: W2k Server
viele Grüße
f*
Ich hänge bei folgender Aufgabe:
Nach Eintrag in eine Spalte einer Tabelle wird ein Trigger ausgelöst, der alle Werte dieser Spalte kumuliert und je nach Ergebins ( <>0) eine Emai verschickt. Das klappt auch wunderbar, nur passiert es jedoch ab und zu, dass zwei Einträge kurz hintereinander erfolgen(ca 10 sec) und somit eine Email verschickt wird, obwohl der Wert schon wieder Vergangenheit ist (=> großes Geschrei:"der Rechner kann nicht rechnen"!)
Folgendes habe schon versucht:
gleich nach diesem Eintrag ein
1)
dbms_lock.sleep(20), anschliessend Wert neu berechnet: nice try, ändert nat. nix, ausser das alles 20 sec später passiert... :-(
2)
Als nächstes habe ich versucht, durch den Trigger eine Prozedur aufzurufen, die dann einen Job erstellt, der ca. 30 sec. später nochmal die Werte der Spalte zusammen addiert und dann je nach Ergebnis eine Email versendet. (TRIGGER->PROZEDUR->JOB)
Die Prozedur selbst funktioniert bei Aufruf über eine shell (exec...) wunderbar, mein Job wird erstellt, 30 sec später ausgeführt und löscht sich dann auch brav selber.
Versuche ich jedoch, die Prozedur über eine Trigger aufzurufen, erhalte ich folgenden Fehler:
===schnipp===
ORA-04092: Trigger darf kein ausfhren
ORA-06512: in "SYS.DBMS_ISCHED", Zeile 99
ORA-06512: in "SYS.DBMS_SCHEDULER", Zeile 262
ORA-06512: in "S1.SP_JOB_ORDER", Zeile 30
ORA-06512: in "S1.SP_CHECK_ORDER", Zeile 47
ORA-06512: in "T1.TR_AFTER_INS_ORDER", Zeile 3
ORA-04088: Fehler bei der Ausfhrung von Trigger 'T1.TR_AFTER_INS_ORDER'
===schnapp===
Überprüft habe ich auch alle Berechtigungen.
Wie komme ich hier zu einer brauchbaren Lösung? Gibt es vielleicht eine völlig andere Idee für die Aufgabe einer verzögerten Ausführung?
Version 10gR2
OS: W2k Server
viele Grüße
f*