資料庫DML監控一例
DBA日常工作的一個重要部分就是對資料進行監控了。其中監控方法有很多,可以用觸發器,可以用審計。
相對來說,審計可以消耗更低的資源,但不能捕獲正在執行的SQL;而觸發器就可以做到,但是它消耗的資源較可觀。
下面用一個例子介紹如何用觸發器監控資料庫的DML操作。
首先建表:
SQL> desc item_update_sql
Name Type Nullable Default Comments
------------- -------------- -------- ------- --------
UPDATE_TIME DATE Y
USERNAME VARCHAR2(30) Y
AUDSID NUMBER Y
CLIENT_IP VARCHAR2(20) Y
SQL_TEXT VARCHAR2(4000) Y
TABLE_NAME VARCHAR2(30) Y
OWNER VARCHAR2(30) Y
ITEM_ID NUMBER Y
OLD_IMAGE_URL VARCHAR2(1000) Y
NEW_IMAGE_URL VARCHAR2(1000) Y
然後建立觸發器:
[php]
Create Or Replace Trigger tr_item_update
/*
監控對item表的item_image_url的更新
*/
After UPDATE
ON test_tag_group.item for each row
DECLARE
stmt VARCHAR2(4000);
sql_text ora_name_list_t;
BEGIN
FOR i IN 1..ora_sql_txt(sql_text) LOOP
stmt := stmt || sql_text(i);
END LOOP;
IF UPPER(STMT) LIKE '%ITEM_IMAGE_URL%' THEN
INSERT INTO item_update_sql(
update_TIME,
USERNAME,
AUDSID,
CLIENT_IP,
SQL_TEXT,
TABLE_NAME,
OWNER,
iTEM_id,
old_image_url,
New_Image_Url
)
Values (
sysdate,
ora_login_user,
userenv('SESSIONID'),
sys_context('userenv','ip_address'),
stmt,'item','souchang2',
:New.item_ID,
:Old.ITEM_IMAGE_URL,
:New.ITEM_IMAGE_URL
);
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('捕獲DML語句異常錯誤:'||SQLERRM);
END;
.
[/php]
以上程式碼在redhat as4 +9204測試透過,在9208下存在一個已知的bug,ora_sql_txt(sql_text) 會返回null,導致觸發器失敗.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63774/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫監控資料庫
- 資料庫效能監控資料庫
- 監控資料庫活動資料庫
- MySQL監控-Datadog資料庫監控調研MySql資料庫
- 資料庫繁忙程度監控資料庫
- 資料庫監控軟體資料庫
- SQL Server資料庫監控SQLServer資料庫
- 資料庫監控指令碼資料庫指令碼
- 監控Oracle資料庫方法Oracle資料庫
- 監控資料庫指令碼資料庫指令碼
- zabbix監控oracle資料庫Oracle資料庫
- 資料庫監控---PIGOSS BSM資料庫Go
- shell監控mysql 8.0資料庫MySql資料庫
- shell監控mysql 5.7資料庫MySql資料庫
- [zt]資料庫監控指令碼資料庫指令碼
- 資料庫監控指令碼(一)資料庫指令碼
- 資料庫監控指令碼(二)資料庫指令碼
- 資料庫監控指令碼(三)資料庫指令碼
- 監控資料庫效能的SQL資料庫SQL
- Zabbix監控神通資料庫教程資料庫
- ORACLE監控DML語句的一些資料的彙總Oracle
- 基於Prometheus的資料庫監控Prometheus資料庫
- MySQL資料庫監控項說明MySql資料庫
- 資料庫效能SQL監控指令碼資料庫SQL指令碼
- Oracle資料庫的監控內容Oracle資料庫
- db2pd 監控資料庫DB2資料庫
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- Oracle資料庫監控工具:SpotlightOracle資料庫
- 2 Day DBA-管理方案物件-監控和優化資料庫-積極的資料庫監控物件優化資料庫
- 配置CACTI監控MySQL資料庫狀態(5)增加MySQL監控模板MySql資料庫
- Zabbix+Python監控Oracle資料庫PythonOracle資料庫
- Nagois監控oracle資料庫注意的地方GoOracle資料庫
- zabbix使用percona監控mysql資料庫MySql資料庫
- 監控當前資料庫的活動session資料庫Session
- nagios-新增oracle資料庫監控iOSOracle資料庫
- MongoDB如何使用top命令監控資料庫MongoDB資料庫
- 監控DB2資料庫指令碼DB2資料庫指令碼
- 資料庫效能監控瓶頸理論資料庫