私は現在宿題をしていて、ある時点で立ち往生しています。監査のトリガーを作成したいです。はい、FGA は知っていますが、それは求められたものではありません。トリガーは、監査のために現在の SQL を記録する必要があります。これは私が今持っているものです。挿入値を格納するためのテーブルが既に作成されているとします。
CREATE OR REPLACE TRIGGER ALL_SQL_AUDIT
AFTER UPDATE ON SCOTT.EMP
FOR EACH ROW
BEGIN
INSERT INTO ALL_SQL_AUDIT(TABLE_NAME, SQL_TEXT, SQL_TYPE, CHANGE_DATE, DB_USERNAME, OS_USERNAME)
SELECT 'SCOTT.EMP',
SYS_CONTEXT('USERENV','CURRENT_SQL'),
'UPDATE',
SYSDATE,
USER,
SYS_CONTEXT('USERENV','OS_USER')
FROM dual;
END;
/
問題は SYS_CONTEXT('USERENV','CURRENT_SQL') が何も返さないことです。このイベントをトリガーした現在の DML を取得する方法を知っている人はいますか?