审核截断并删除

时间:2017-04-25 09:21:29

标签: oracle truncate audit

我想在一个表上捕获truncate和drop语句。

在一些谷歌搜索中,我发现它无法执行:

audit truncate, drop on schema.table;

所以我试过了:

audit table;

据我了解,这应该捕获所有表的创建,删除和截断。

所以,我的问题:

  1. 这真的是最好的方法吗?我只希望在一张特定的桌子上。
  2. 即使使用该语句 - 在我对表执行截断后,它也没有被捕获。
  3.   

    DBA_AUDIT_TRAIL

    没有数据......

    非常感谢。

1 个答案:

答案 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 TABLEDROP TABLETRUNCATE 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