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