国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle系統包——dbms_alert用法

2024-08-29 13:54:33
字體:
來源:轉載
供稿:網友
Oracle內部提供的在數據庫內部和應用程序間通信的方式有以下幾種:1.警報,就是DBMS_ALERT包提供的功能;2.管道,由DBMS_PipE提供;3.高級隊列,這個就很復雜,當然提供的功能也是很高級的。當然還可以使用外部過程,比如用PL/SQL封裝外部的基于C的DLL或java也能實現數據庫和應用程序間的通信。 要使用這些功能,必須知道各個功能的特點,根據需要選用。 警報和事務相關的,是異步發送的;管道是與事務無關的,是同步發送的。dbms_alert用于生成并傳遞數據庫預警信息。使用包DBMS_ALERT,則必須以SYS登陸,為該用戶授予執行權限。sql>conn sys/oracle as sysdbasql>grant execute on dbms_alert to scott;1.register:用于注冊預警事件示例如下:sql>exec dbms_alter.register('alter1');2.remove:用于刪除會話不需要的預警事件.3.removeall:用于刪除當前會話所有已注冊的預警事件語法如下:dbms_alter.removeall;4.set_defaults用于設置檢測預警事件的時間間隔,默認時間間隔為5秒5.signal:用于指定預警事件所對應的預警消息.6.waitany:用于等待當前會話的任何預警事件,并且在預警事件發生時輸出相應信息.在執行該過程之前,會隱含地發出COMMIT.語法如下:dbms_alter.waitany (    name out varchar2,    message out varchar2,    status out integer,    timeout in number default maxwait);注:status用于返回狀態值,返回0表示發生了預警事件,返回1表示超時;timeout用于設置預警事件的超時時間.7.waitone:用于等待當前會話的特定預警事件,并且在發生預警事件時輸出預警消息.語法同上警報的使用:簡單來說,警報是在服務器端發出,然后在客戶端接收,這就需要在客戶端有一個線程來監聽警報。現在拿SQLPLUS做個例子,打開兩個SQLPLUS,分別用提示符SQL1和SQL2表示。1、首先應先授予用戶使用DBMS_ALERT的權限。登錄到SYS用戶下,執行一下語句:conn sys/oracle as sysdbagrant execute on dbms_alert to scott; 2、發送進程(服務器端發出)SQL1>DECLARE  V_ALERTNAME VARCHAR2(30) := 'alert1';BEGIN  DBMS_ALERT.SIGNAL(V_ALERTNAME, 'hello, this   is   sending   PRocess!');  COMMIT; --必須COMMIT,警報才會真正被發出END;/ 3、接受進程(客戶端接收)SQL2>set serveroutput ON;SQL2>DECLARE  V_ALERTNAME VARCHAR2(30) := 'alert1';  V_STATUS    NUMBER;  V_MSG       VARCHAR2(100);BEGIN  DBMS_ALERT.REGISTER(V_ALERTNAME);  --注冊要接收信息的警報器   DBMS_ALERT.WAITONE(V_ALERTNAME, V_MSG, V_STATUS);  IF V_STATUS != 0 THEN    DBMS_OUTPUT.PUT_LINE('error');  ELSE    DBMS_OUTPUT.PUT_LINE(V_MSG);  END IF;END;/ 注意:接收者要接收警報必須執行等待過程,等待警報的到來,否則不會得到任何警報的。用二種方法測試一下:方法一:先執行步驟2,再執行步驟3。這時可以獲得警報方法二:先執行步驟3,再執行步驟2。這時不能獲得任何警報,執行步驟3的session處于等待狀態,當下一時間點再次執行步驟2時,就可以獲得警報。警報可以是一對一,也可以是一對多的,即一個警報可以同時被多個接收者接收。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦后旗| 麻城市| 通渭县| 高要市| 乐清市| 江城| 永吉县| 黔江区| 河西区| 宝山区| 玛曲县| 苗栗县| 星子县| 衡阳市| 肇东市| 新泰市| 望江县| 英山县| 正镶白旗| 周至县| 宝应县| 息烽县| 营口市| 洱源县| 淳安县| 南乐县| 白河县| 霍州市| 池州市| 诏安县| 罗山县| 亳州市| 吴江市| 庆安县| 秀山| 马龙县| 五大连池市| 洛南县| 平阳县| 全州县| 清河县|