1、概述
作用
用于生成并传递数据库预警信息.使用包DBMS_ALERT,则必须以SYS登陆,为该用户授予执行权限.
sql>conn sys/oracle as sysdba;
sql>grant execute on dbms_alert to scott;
2、包组成
2.1、register
说明:
用于注册预警事件
语法:
dbms_alter.register(name in varchar2);
-- 其中name指定预警事件名称,其值不能超过30字节。
示例:
exec dbms_alter.register('alter1');
2.2、remove
说明:
用于删除会话不需要的预警事件.
语法:
dbms_alert.remove(name in varchar2);
例子:
exec dbms_alert.remove('alert1');
2.3、removeall
说明:
用于删除当前会话所有已注册的预警事件
语法:
dbms_alter.removeall
2.4、set_defaults
说明:
用于设置检测预警事件的时间间隔,默认时间间隔为5秒
语法:
dbms_alert.set_defaults(sensitivity in number);
例子:
dbms_alert.set_defaults(20)
2.5、signal
说明:
用于指定预警事件所对应的预警消息。只有在提交事务时才会发出预警信号,而当回退事务时不会发出预警信号。
语法:
dbms_alert.signal(name in varchar2,message in varchar2);
-- 其中message指定预警事件的消息,长度不超过1800字节。
例子:
exec dbms_alert.signal('alert1','hello');
2.6、waitany
说明:
用于等待当前会话的任何预警事件,并且在预警事件发生时输出相应信息.在执行该过程之前,会隐含地发出COMMIT.
语法:
dbms_alter.waitany(name out varchar2,message out varchar2,status out integer,timeout in number default maxwait);
--其中status用于返回状态值,返回0表示发生了预警事件,返回1表示超时;timeout用于设置预警事件的超时时间.
2.7、waitone
说明:
用于等待当前会话的特定预警事件,并且在发生预警事件时输出预警消息.在执行该过程之前,会隐含地发出COMMIT.
语法:
dbms_alter.waitone(name out varchar2,message out varchar2,status out integer,timeout in number default maxwait);