2017-04-25 49 views
0

我想捕捉截断和删除一个表的语句。审计截断落

在一些谷歌搜索我得到了,这是不可能执行:

audit truncate, drop on schema.table; 

所以,我想:

audit table; 

据我所知,这应该抓住创建,删除和截断所有的表。

所以,我的问题:

  1. 是不是真的做到这一点的最好方法是什么?我只想在一个特定的表上。
  2. 即使该声明
  3. - 后我执行上表中的截形,它没有捕获。

DBA_AUDIT_TRAIL

住宿没有数据..

非常感谢。

回答

0

是可以审核DROP 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那么甲骨文将审计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 
+0

感谢。但它不适用于我...我在用户A中创建表。然后我执行所有审计。然后执行命令..选择,插入等写在dba_audit_trail。但截断只是不.. – user2671057

+0

最后,我用my_user审计表做它;谢谢! – user2671057

+0

我在Oracle 12.2上面测试了代码,完全按照答案中的说明运行。我认为你正在使用不同的版本。 – JSapkota