审计截断和丢弃
Posted
技术标签:
【中文标题】审计截断和丢弃【英文标题】:Audit truncate and drop 【发布时间】:2017-09-22 05:22:47 【问题描述】:我想在一张表上捕获截断和删除语句。
在一些谷歌搜索中,我发现它无法执行:
audit truncate, drop on schema.table;
所以我尝试了:
audit table;
据我了解,这应该捕获所有表的创建、删除和截断。
所以,我的问题:
-
这真的是最好的方法吗?我只想要一张特定的桌子。
即使使用该语句 - 在我对表执行截断后,它也不会被捕获。
DBA_AUDIT_TRAIL
保持没有数据..
非常感谢。
【问题讨论】:
【参考方案1】:是的,您可以在特定表上审核 DROP TABLE 和 TRUNCATE TABLE。
这是我的 audit_trail 参数及其值。
SQL> conn / as sysdba
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/orcl/adu
mp
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string DB, EXTENDED
unified_audit_sga_queue_size integer 1048576
我创建了名为 tbl1 的表。
SQL> conn jay
Password:
Connected.
SQL> create table tbl1(id number);
Table created.
现在,让我们在该表上启用审核。如果您在表上指定ALL
,那么oracle 将审核CREATE TABLE
、DROP TABLE
和TRUNCATE TABLE
操作。如果您希望 oracle 为每个审计语句和操作写入一条记录,请指定 BY ACCESS
。
SQL> conn / as sysdba
SQL> audit all on jay.tbl1 by access; -- or just audit all on jay.tbl1
Audit succeeded.
使用 Jay 用户创建新会话并执行一些操作。
SQL> conn jay
SQL> truncate table tbl1;
Table truncated.
SQL> drop table tbl1;
Table dropped.
让我们检查审计跟踪。
SQL> conn / as sysdba
SQL> select action_name from dba_audit_trail where obj_name='TBL1';
ACTION_NAME
----------------------------
DROP TABLE
TRUNCATE Table
【讨论】:
谢谢。但这对我不起作用……我在用户 A 中创建了表。然后我对它执行了全部审计。然后执行命令。select、insert等都写在dba_audit_trail里。但截断只是不.. 最后,我用 my_user 的审计表来做;谢谢! 我在 Oracle 12.2 上测试了上面的代码,如答案所示,效果很好。我认为您使用的是不同的版本。 也许吧。我正在使用oralce 11g。以上是关于审计截断和丢弃的主要内容,如果未能解决你的问题,请参考以下文章