使用系統包DBMS ALERT監視表

2021-08-27 07:30:28 字數 1273 閱讀 8534

dbms_alert支援非同步捕獲資料庫事件.

現測試其捕捉表的各種改變,測試表為emp.

由於是非同步的,我們這裡需要開2個sqlplus視窗(兩個session)

第乙個session裡寫儲存過程如下:

(注意要先給scott使用者許可權哦,

grant execute on dbms_alert to scott)

declare

v_n varchar2(30);

v_m varchar2(100);

v_i integer;

begin

dbms_alert.removeall;

dbms_alert.register('emp_table_alert');

dbms_alert.waitany(v_n,v_m,v_i);

if l_i=0 then

dbms_output.put_line('[name:]'||l_n);

dbms_output.put_line('[msg:]'||l_m);

end if;

dbms_alert.removeall;

end;

/

執行此儲存過程後,此session會處於等待狀態。。。

我們重新開乙個sqlplus,建立觸發器如下:

create or replace trigger emtring

after insert or update or delete on emp

begin

dbms_alert.signal('emp_table_alert',to_char(sysdate,'yyyymmdd')||':table emp is changed');

end;

其中dbms_alert.signal用來傳送警報,在此session下,進行一些改變,如insert

insert into emp(empno,ename) values(1234,'w001');

commit;

注意一定要commit;因為dbms_alert是基於事務處理的.

一旦commit,第乙個sqlplus裡的session的等待狀態會結束,輸出結果如下:

10:18:18 scott@orcl> /

[name:]emp_table_alert

[msg:]20121212:table emp is changed

DM系統包學習之四 DBMS ALERT包

一 相關方法 1.dbms alert.register 為當前會話註冊乙個預警事件,本操作會提交當前事務。語法 dbms alert.register name in varchar 30 說明 name 輸入引數,預警事件名。2.dbms alert.remove 刪除當前會話的乙個預警事件,如...

sysdig linux sysdig系統監控神器

sysdig介紹 當需要追蹤某個程序產生和接收的系統呼叫時,你可能會想到strace。你會使用什麼樣的命令列工具來監控原始網路通訊呢?如果你想到了tcpdump。而如果你碰到必須追蹤開啟的檔案的需求,可能你會使用lsof。strace tcpdump和lsof確實是必備的工具,而這也正是你為什麼應該...

如何在Ubuntu上使用Glances監控系統

glances 的功能 cpu 平均負載 不同狀態 如活動 休眠 程序的數量 所有記憶體資訊,如物理記憶體 交換空間 空閒記憶體 cpu 資訊 網路連線的上行 下行速度 磁碟 i o 讀 寫速度詳細資訊 當前掛載裝置的磁碟使用情況 消耗資源最多的程序和他們的 cpu 記憶體使用情況 安裝 glanc...