警报

达梦数据库还提供了警报的功能,允许用户定义一些自己想要捕获的动作,如果这些动作发生时,系统就会将对应信息存储到指定的表中,将想要得到的信息存储起来,以便做到实时的监控。

创建、修改和删除警报可以通过以下两种方式来实现。一是通过系统过程来实现;二是通过图形化客户端 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 常规

警告的常规属性设置页面。

图 5.1 新建警报-常规界面.png

图5.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 通知信息

警告的通知信息属性设置页面。

图 5.2 新建警报-通知界面.png

图5.2 新建警报-通知界面

参数详解

  • 操作员列表

已存在的各操作员列表。

  1. 操作员

操作员名。

  1. 电子邮件通知

是否采用电子邮件通知。1:是;0:否。

  1. 网络消息通知

是否采用网络消息通知。1:是;0:否。

5.2.3 DDL

  显示警告创建与修改的 SQL 语句。

图 5.3 新建警报-DDL 界面.png

图5.3 新建警报-DDL界面

     参数详解

  • 保存

保存 SQL 脚本到文件中。

微信扫码
分享文档
扫一扫
联系客服