首先,我在oracle审计跟踪方面是个新手。因此,我必须审计特定用户的操作。
我的问题是,当我检查dba_fga_audit_trail时,我在sql_text列中看到用户运行了一条delete语句,但我不知道他删除了什么。这是在sql_text列的单元格中写入的内容:
DELETE FROM USR WHERE USR_ID = :B您能帮我找到一种方法来在审计跟踪中存储从特定表中删除了哪一行吗?
发布于 2014-09-04 21:02:32
您需要创建一个表来保存已删除的数据,每次删除将有一行。然后,在将在delete之后运行的USR表上创建触发器。此触发器将从'dummy‘:OLD表中选择要审计的数据,并将其插入到您的审计表中。
发布于 2014-09-04 21:08:07
我的问题是,当我检查dba_fga_audit_trail时,我在sql_text列中看到用户运行了一条delete语句,但我不知道他删除了什么。
您需要将audit_trail设置为DBMS_FGA.DB + DBMS_FGA.EXTENDED,将审计跟踪发送到数据库中的SYS.FGA_LOG$表,并包括SQL Text和SQL Bind。
例如,
SELECT * FROM emp WHERE empno = 9998;
INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1);
UPDATE emp SET sal = 10 WHERE empno = 9998;
DELETE emp WHERE empno = 9998;
ROLLBACK;
-- Check the audit trail.
CONN sys/password AS SYSDBA
SELECT sql_text FROM dba_fga_audit_trail;
SQL_TEXT
--------------------------------------
SELECT * FROM emp WHERE empno = 9998
INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1)
UPDATE emp SET sal = 10 WHERE empno = 9998
DELETE emp WHERE empno = 9998
4 rows selected.你也可以看看蒂姆霍尔的demo。
https://stackoverflow.com/questions/25665725
复制相似问题