首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle审计删除:如何审计已删除的内容?

Oracle审计删除:如何审计已删除的内容?
EN

Stack Overflow用户
提问于 2014-09-04 20:36:23
回答 2查看 2.3K关注 0票数 3

首先,我在oracle审计跟踪方面是个新手。因此,我必须审计特定用户的操作。

我的问题是,当我检查dba_fga_audit_trail时,我在sql_text列中看到用户运行了一条delete语句,但我不知道他删除了什么。这是在sql_text列的单元格中写入的内容:

代码语言:javascript
复制
DELETE FROM USR WHERE USR_ID = :B

您能帮我找到一种方法来在审计跟踪中存储从特定表中删除了哪一行吗?

EN

回答 2

Stack Overflow用户

发布于 2014-09-04 21:02:32

您需要创建一个表来保存已删除的数据,每次删除将有一行。然后,在将在delete之后运行的USR表上创建触发器。此触发器将从'dummy‘:OLD表中选择要审计的数据,并将其插入到您的审计表中。

票数 0
EN

Stack Overflow用户

发布于 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。

例如,

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25665725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档