資料庫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資料庫
- 資料庫監控---PIGOSS BSM資料庫Go
- 監控資料庫活動資料庫
- 資料庫繁忙程度監控資料庫
- Zabbix監控神通資料庫教程資料庫
- shell監控mysql 8.0資料庫MySql資料庫
- shell監控mysql 5.7資料庫MySql資料庫
- Python呼叫阿里雲資料庫監控資料Python阿里資料庫
- Zabbix+Python監控Oracle資料庫PythonOracle資料庫
- zabbix6.2新增mysql資料庫監控MySql資料庫
- mysql資料庫恢復一例MySql資料庫
- 資料庫監控工具--PIGOSSBSM運維監控管理系統資料庫Go運維
- Oracle 19C+13.4EMCC資料庫監控Oracle資料庫
- 【SQL】Oracle資料庫監控sql執行情況SQLOracle資料庫
- 【SQL】Oracle資料庫SQL監控報告示例SQLOracle資料庫
- Zabbix5.0 配置 ODBC 監控 Oracle 資料庫Oracle資料庫
- MySQL資料庫與Nacos搭建監控服務MySql資料庫
- 如何使用 taosKeeper 做好監控工作,時序資料庫 TDengine 3.0 監控工具詳解資料庫
- 暑期自學 Day 10 | 資料庫 (二)- DML資料庫
- 效能測試之資料庫監控分析工具PMM資料庫
- 幾款SQLSERVER資料庫監控軟體介紹SQLServer資料庫
- 自定義帶監控的資料庫連線池資料庫
- 前端資料監控到底在監控什麼?前端
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- 資料庫:淺談DML、DDL、DCL的區別資料庫
- 系統監控&JVM監控指標資料查詢JVM指標
- Mysql DML 新增資料MySql
- 監控採集上報和儲存監控資料策略
- UAVStack的慢SQL資料庫監控功能及其實現SQL資料庫
- 最新!2019 年最好用的 7 款資料庫監控工具資料庫
- 效能測試之資料庫監控分析工具Grafana+Prometheus資料庫GrafanaPrometheus
- 監控資料庫連線遇到的一個小問題資料庫
- Oracle資料庫監控和運維關注哪些方面Oracle資料庫運維
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- GO實現資料夾監控Go
- 前端監控(效能/資料/異常)前端
- zabbix清除歷史監控資料
- zanePerfor前端監控平臺效能優化之資料庫分表前端優化資料庫