Oracle11G監控單張表的增刪改操作
前言:
一:使用數據庫自帶的審計功能
SQL> show parameter audit
2,開啟審計功能
需要用sysdba,注意audit_trail要為DB_EXTENDED才記錄執行的具體語句...
3,關閉審計功能
SQL> alter system set audit_trail = none scope=spfile;
4,針對某張表的審計功能
AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;
5,對該張表進行各種DML操作測試
6,查詢審計的信息
select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC;
二,采用觸發器
看到線上數據庫load比以前增加蠻多的,為了單張表的監控開啟審計比較消耗資源,有些不劃算,所以可以采用另外一種辦法來做,就是在表上建立觸發器。
1,先建立建立測試表:
查看已經建立的表 aaa_test與trig_sql。
2,並且在 trig_sql表上面添加索引:
create index idx_time on plas.trig_sql (LT);
3,建立觸發器
create or replace trigger pri_test
4,開始進行數據操作測試:
insert into plas.aaa_test1 select 2,'tom',sysdate from dual;
5,去查看表記錄,會發現如下
SQL> select * from plas.trig_sql;
PS:看到SQLTEXT有些都為 begin :id := sys.dbms_transaction.local_transaction_id; end; 的,是因為我執行的insert、delete、update語句在plsqldev.exe客戶端執行的,所以沒有記錄下執行的sql語句。而有些通過
[email protected] (TNS V1-V3)客戶端連接執行的,會記錄下執行過的update語句。
6,統計下當前都有哪些用戶以及ip執行了dml操作。
SQL> select username,client_ip from plas.trig_sql group by username,client_ip;