我想捕获一张表上的 truncate 和 drop 语句。
在一些谷歌搜索中我发现它不可能执行:
audit truncate, drop on schema.table;
所以我尝试了:
audit table;
据我了解,这应该捕获所有表的创建、删除和截断。
所以,我的问题:
DBA_AUDIT_TRAIL
保持没有数据..
非常感谢。
是的,您可以审核特定表上的 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