Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Platzieren Sie das Ereignis mit Oracle in das Windows-Ereignisprotokoll

Der Grund, warum es unter SYS funktioniert ist, dass es sich um ein besonders privilegiertes Konto handelt. Sie müssen einen neuen Berechtigungsnachweis erstellen und ihn dem Job zuordnen

Die Lösung wäre, einen Berechtigungsnachweis mit DBMS_SCHEDULER.CREATE_CREDENTIAL zu erstellen zusammen mit dem Betriebssystemkonto, das über ausreichende Berechtigungen verfügt, und weisen Sie diese neuen Anmeldeinformationen Ihrem Job zu.

Um ehrlich zu sein, weiß ich noch nichts über das Trigger-Problem.

Bearbeiten - lösungsbasiert unter Verwendung der Subtransaktionsfunktion von Oracle

Nach OP-Update und Reaktion auf Kommentare:

Basierend auf dem Workflow denke ich, dass es besser ist, die interne Benachrichtigung von Oracle zu verwenden, um responsive zu tun Prüfung. Ich denke, der Versuch, sich über eine externe Anwendung in das Windows-Ereignisprotokoll zu hacken, bringt eine weitere unnötige Ebene der Komplexität mit sich.

Ich würde eine Tabelle innerhalb der DB erstellen, in der ich alle Ereignisse speichern würde, und oben auf dieser Tabelle würde ich einen Job mit Benachrichtigungen (SMS, E-Mail usw.) erstellen, der ausgeführt würde, wenn eine Änderung an der Protokolltabelle auftritt.

Um Trigger zu verwenden, wenn ein Fehler auftritt, sollten Sie PRAGMA autonome_transaktion aus Ihrem Hauptbereich (ermöglicht Ihnen, eine Untertransaktion durchzuführen). Dadurch können Sie jede DML festschreiben Sie können haben, aber machen Sie einen Rollback für den Rest.