您當前位置:
首頁 >
互聯網 > Oracle 11G 監控單張表的增刪改操作
Oracle 11G 監控單張表的增刪改操作
來源:程序員人生 發布時間:2014-11-11 08:48:36 閱讀次數:2325次
前言:
線上oraclehttp://www.vxbq.cn/db/有張表的數據有些亂,根據利用db的log和利用的log也沒有檢查出來誰修改了,所以決定把這張單表做個詳細的insert、update、delete監控。
1:使用http://www.vxbq.cn/db/自帶的審計功能
1,查看審計功能是不是啟動
SQL> show parameter audit NAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string /oracle/app/oracle/admin/powerdes/adumpaudit_sys_operations boolean FALSEaudit_syslog_level stringaudit_trail string NONESQL> 沒有開啟審計功能,需要自己去開啟1下。2,開啟審計功能
需要用sysdba,注意audit_trail要為DB_EXTENDED才記錄履行的具體語句...alter system set audit_sys_operations=TRUE scope=spfile;SQL> alter system set audit_sys_operations=TRUE scope=spfile; System altered.SQL>
再次查看審計功能是不是啟動SQL> show parameter audit; NAME TYPE VALUE------------------------------------ ----------- ------------------------------audit_file_dest string /oracle/app/oracle/admin/powerdes/adumpaudit_sys_operations boolean FALSEaudit_syslog_level stringaudit_trail string NONESQL> 需要重啟實例才能看到狀態。3,關閉審計功能
SQL> alter system set audit_trail = none scope=spfile;4,針對某張表的審計功能
AUDIT UPDATE,DELETE,INSERT ON T_TEST by http://www.vxbq.cn/access/;5,對該張表進行各種DML操作測試
6,查詢審計的信息
select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC;2,采取觸發器
看到線上http://www.vxbq.cn/db/load比之前增加蠻多的,為了單張表的監控開啟審計比較消耗資源,有些不劃算,所以可以采取另外1種辦法來做,就是在表上建立觸發器。
1,先建立建立測試表:
查看已建立的表 aaa_test與trig_sql。SQL> describe plas.aaa_test; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER NAME VARCHAR2(100) LOGIN_TIME DATESQL>SQL> describe plas.trig_sql; Name Null? Type ----------------------------------------- -------- ---------------------------- LT DATE SID NUMBER SERIAL# NUMBER USERNAME VARCHAR2(30) OSUSER VARCHAR2(64) MACHINE VARCHAR2(32) TERMINAL VARCHAR2(16) PROGRAM VARCHAR2(64) SQLTEXT VARCHAR2(2000) STATUS VARCHAR2(30) CLIENT_IP VARCHAR2(60)SQL> 2,并且在 trig_sql表上面添加索引:
create index idx_time on plas.trig_sql (LT); 3,建立觸發器
create or replace trigger pri_test after insert or update or delete on plas.aaa_testDECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN IF inserting THEN INSERT INTO plas.trig_sql select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER, s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line, 'INSERT', sys_context('userenv','ip_address') from v$sql q, v$session s where s.audsid=(select userenv('SESSIONID') from dual) and s.prev_sql_addr=q.address AND s.PREV_HASH_VALUE = q.hash_value; COMMIT; ELSIF deleting then INSERT INTO plas.trig_sql select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER, s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line, 'DELETE', sys_context('userenv','ip_address') from v$sql q, v$session s
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------