达梦数据库还提供了警报的功能,允许用户定义一些自己想要捕获的动作,如果这些动作发生时,系统就会将对应信息存储到指定的表中,将想要得到的信息存储起来,以便做到实时的监控。
创建、修改和删除警报可以通过以下两种方式来实现。一是通过系统过程来实现;二是通过图形化客户端 MANAGER 管理工具实现。用户选择其中的一种即可。
5.1 通过系统过程实现
5.1.1 创建、删除和修改警报
5.1.1.1 创建警报
创建一个警报可以通过系统过程 SP_CREATE_ALERT 实现。警报的定义信息都存储在系统表 SYSALERTS 中。
语法如下:
SP_CREATE_ALERT (
name varchar(128),
enabled int,
type int,
errtype int,
errcode int,
delaytime int,
describe varchar(8187)
)
参数详解
- NAME
警报名。只能由_、-、$、大写字母 A 至 Z、小写字母 a 至 z、数字 0 至 9 组成,且第一个字符不能是数字,同时不能是 DM 关键字。警报名称不区分大小写,且警报不能同名,在创建时系统会检测这个警报是否存在,如果存在则报错。
- ENABLE
警报是否开启。取值范围 0 或 1。1:是;0:否。
- TYPE
警报的类型。取值范围 0 或 1。0:表示发生错误时警报;1:表示发生某些数据库事件时警报。
- ERRTYPE
触发警报的错误和数据库事件。与参数 TYPE 相关。
当 TYPE=0 时,ERRTYPE 表示触发警报的错误类型。取值范围 1~12。具体含义分别为:1:常规错误;2:启动错误;3:系统错误;4:服务器配置错误;5:分析阶段错误;6:权限错误;7:运行时错误;8:备份恢复错误;9:作业管理错误;10:数据库复制错误;11:其它错误;12:指定错误码。
当 TYPE=1 时,ERRTYPE 表示触发警报的数据库事件。取值范围 1~4。具体含义分别为:1:DDL 事件;2:授权回收事件;3:连接或断开数据库事件;4:数据库备份恢复事件。
- ERRCODE
指定错误码。错误码取值和参数 TYPE、ERRTYPE 相关。
当 TYPE=0、ERRTYPE 取 1~12 时,指定各种错误类型相关的错误码,ERRCODE 必须是小于 0 的整数。
当 TYPE=1、ERRTYPE=1 时,指定 DDL 事件的错误码,ERRCODE 取值范围 1~15。如何取值,请参考如下规则:因为 DDL 事件包含 CREATE、ALTER、DROP 和 TRUNCATE 四种,所以此处的错误码是四种当中的任意几个组合值。ERRCODE 在 DM 数据库系统内部用四位二进制来表示它们的组合,从低位到高位依次是:CREATE、ALTER、DROP、TRUNCATE。1 表示指定,0 表示不指定。用户输入的 ERRCODE 值需要转化为十进制。例如,指定 CREATE 和 DROP,内部二进制表示为 0101,转化为十进制为 5,所以 ERRCODE 值就是 5。
当 TYPE=1、ERRTYPE=2 时,指定授权回收事件的错误码,ERRCODE 取值范围 1、2、3。1 表示 GRANT 的错误码;2 表示 REVOKE 的错误码;3 表示 GRANT 和 REVOKE 的错误码。
当 TYPE=1、ERRTYPE=3 时,指定连接事件的错误码,取值范围 1、2、3。1 表示 LOGIN 的错误码;2 表示 LOGOUT 的错误码;3 表示 LOGIN 和 LOGOUT 的错误码。
当 TYPE=1、ERRTYPE=4 时,指定数据库备份恢复事件的错误码,取值范围 1、2、3。1 表示 BACKUP 的错误码;2 表示 RESTORE 的错误码;3 表示 BACKUP 和 RESTORE 的错误码。
- DELEYTIME
表示警报发生后,推迟多长时间通知操作员。取值范围 0~3600,单位秒。
- ADDITION_TXT
表示警报的注释,最长为 500 个字节。
例 创建一个名为 ALERT1 的警报。
SP_CREATE_ALERT('ALERT1',1, 0, 1, -600, 1, '错误码的测试');
上面的例子创建了一个名为 ALERT1 的警报,ENABLE 为 1 表示开启,TYPE 为 0 表示发生错误时警报,ERRTYPE 指定的是 1 表示常规错误,表示只有发生常规错误时警报才发生,DELEYTIME 指定可以推迟 1 秒钟通知操作员。警报发生后,系统会将对应信息存储到上面提到的 SYSALERTHISTORIES 表中。
5.1.1.2 修改警报
修改警报可以通过系统过程 SP_ALTER_ALERT 来实现。
语法如下:
SP_ALTER_ALERT (
name varchar(128),
enabled int,
type int,
errtype int,
errcode int,
delaytime int,
describe varchar(8187)
)
参数详解
它的参数和 SP_CREATE_ALERT 的参数完全相同,除了 NAME 不可修改外,其他的属性都可修改。对于可修改参数,如果要修改,则指定新值;如果不修改,则指定原值即可。
例 下面的语句修改警报 ALERT1。
SP_ALTER_ALERT('ALERT1', 1, 1, 1, 15, 1, 'DDL警报测试');
上面的例子修改警报 ALERT1,ENABLE 还是原来的值,没有被修改;TYPE 修改为 1,表示对事件的捕获;ERRTYPE 修改为 1,表示的是对事件中的 DDL 进行捕获;ERRCODE 修改为 15,从上面可以看出,这个是一个组合值,对于 DDL 事件共有四种类型(CREATE、ALTER、DROP、TRUNCATE),每一个位表示一个操作,这里的 15 可以被分解为二进制 1111,可以看出四个位都为 1,也就是选中了这四个操作中的所有操作;DELAYTIME 没有被修改;ADDITION_TXT 被修改为'DDL 警报测试'。修改后的警报只要系统做了 DDL 操作就会被激发,同时会将相应信息存储到上面提到的 SYSALERTHISTORIES 表中。
5.1.1.3 删除警报
删除警报通过调用系统过程 SP_DROP_ALERT 实现。
语法如下:
SP_DROP_ALERT (
name varchar(128),
)
参数详解
- NAME
待删除的警报名。删除时系统会检测这个警报是否存在,如果不存在则报错。
例 下面的语句删除警报 ALERT1。
SP_DROP_ALERT('ALERT1');
5.1.2 为警报关联操作员
5.1.2.1 关联
如果想要将警报的执行结果通知给指定操作员,需要将这个警报关联要通知到的操作员,关联操作员通过系统 SP_ALERT_ADD_OPERATOR 实现。一个警报可以关联多个操作员。
语法如下:
SP_ALERT_ADD_OPERATOR (
alertname varchar(128),
opr_name varchar(128),
enablemail int,
enablenetsent int
)
参数详解
- ALERTNAME
警报名。表示要将哪一个警报进行关联,在创建时系统会检测这个警报是否存在,如果不存在则报错。
- OPER_NAME
操作员名。表示要与哪一个操作员进行关联,在创建时系统会检测这个操作员是否已经存在,如果不存在则报错。
- ENABLEMAIL
表示指定警报的执行结果是否用邮件的方式通知指定的操作员。1:是;0:否。
- ENABLENETSEND
表示指定警报的执行结果是否用网络发送的方式通知指定的操作员。1:是;0:否。这个功能只有在 WINDOWS 下才起作用。
例 下面的语句指定 ALERT1 警报的执行结果用邮件和网络两种方式通知操作员 TOM。
SP_ALERT_ADD_OPERATOR('ALERT1','TOM',1,1);
5.1.2.2 取消
当不再需要某个警报与操作员的关联,可以通过系统过程 SP_ALERT_DROP_OPERATOR 来取消关联。
语法如下:
SP_ALERT_DROP_OPERATOR (
alertname varchar(128),
opr_name varchar(128)
)
参数详解
- ALERTNAME
警报名。表示要取消关联的警报。系统会检测这个警报是否存在,如果不存在则报错。
- OPER_NAME
操作员名。表示要取消关联的操作员,系统会检测这个操作员是否已经存在,如果不存则会报错。
例 取消警报 TEST 与操作员 TOM 的关联,取消之后警报的执行结果不会再通知操作员 TOM。
SP_ALERT_DROP_OPERATOR('ALERT1','TOM');
5.1.3 清除警告日志记录
清除迄今为止某个警报的所有日志记录,即删除表 SYSALERTHISTORIES 中的相关记录。可以通过系统过程 SP_ALERT_DROP_HISTORIES 来实现。
语法如下:
SP_ALERT_DROP_HISTORIES (
alertname varchar(128)
)
参数详解
- ALERTNAME
待清除日志的警报名。
例 清除所有的 ALERT1 警报日志记录。
SP_ALERT_DROP_HISTORIES ('ALERT1');
5.2 通过图形化客户端实现
警告对话框用于实现警告的创建与修改。包括:常规、通知信息和 DDL 三部分。
5.2.1 常规
警告的常规属性设置页面。
参数详解
- 警告名
警告的标识名称。
- 启用
是否启用这个警告。
- 警报类型
指定警报的类型。警报类型有错误警报和事件警报,分别表示发生错误时警报和发生某些事件时警报。
- 错误类型或事件类型
错误类型或事件类型由警报类型决定。
1.如果警报类型为错误警报,则此处为错误类型。错误类型以下 12 个可选项:
1)常规错误
2)启动错误
3)系统错误
4)服务器配置错误
5)分析阶段错误
6)权限错误
7)运行时错误
8)备份恢复错误
9)作业管理错误
10)数据库复制错误
11)其他错误
12)指定错误码
2.如果警报类型为事件警报,则此处为事件警报。事件类型有如下 4 个可选项:
1)DDL 事件
2)授权回收事件
3)连接或断开数据库事件
4)数据库备份恢复事件
-
错误编码或事件编码
错误编码或事件编码由警报类型决定。
1.如果警报类型为错误警报,此处为错误编码。错误编码的取值由错误类型决定。
1)如果错误类型为指定错误码,那么此需要错误编码。指定的错误编码必须是小于 0 的值。
2)如果错误类型为指定错误码之外的其他方式,那么此处不需要指定错误编码。
2.如果警报类型为事件警报,此处为事件编码。事件编码的取值由错误类型决定。
1)如果错误类型为 DDL 事件时,那么事件编码可以是 CREATE、ALTER、DROP、TRUNCATE 其中的一个或任意多个的组合。
2)如果错误类型为授权回收事件时,那么事件编码可以是 GRANT 和 REVOKE 其中的一个或组合。
3)如果错误类型为连接或断开数据库事件时,那么事件编码可以是 LOGIN、LOGOUT 其中的一个或组合。
4)如果错误类型为数据库备份恢复事件时,那么事件编码可以是 BACKUP、RESTORE 其中的一个或组合。
- 包含信息
这个参数表示的是对这个警报的一些注释字符串,长度最长为 500 个字节。
- 延迟时间
这个参数表示的是警报通知操作员时需要推迟的时间,推迟的时间范围为 0~3600 秒,也就是说必须是在一个小时范围之内。
5.2.2 通知信息
警告的通知信息属性设置页面。
参数详解
- 操作员列表
已存在的各操作员列表。
- 操作员
操作员名。
- 电子邮件通知
是否采用电子邮件通知。1:是;0:否。
- 网络消息通知
是否采用网络消息通知。1:是;0:否。
5.2.3 DDL
显示警告创建与修改的 SQL 语句。
参数详解
- 保存
保存 SQL 脚本到文件中。