2017-04-25 76 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