MON_GET_HADR 表函数 - 返回高可用性灾难恢复 (HADR) 监视信息
此函数返回高可用性灾难恢复 (HADR) 监视信息。
权限
- 对例程的 EXECUTE 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
缺省 PUBLIC 特权
无
语法
模式为 SYSPROC。
例程参数
- 成员
- 类型为 INTEGER 的输入参数,用于指定成员编号。 返回的行表示成员正在处理的日志流。 指定 -1(表示当前数据库成员)或 -2(表示所有活动数据库成员)。 如果指定空值,那么会隐式设置 -1。
返回的信息
用法备注
- HADR pair view
某些字段仅适用于主数据库或备用数据库。 例如,PEER_WAIT_LIMIT 仅适用于主数据库,而 STANDBY_RECV_BUF_SIZE、STANDBY_SPOOL_LIMIT 和 READS_ON_STANDBY_ENABLED 仅适用于备用数据库。 报告此类信息时,将使用当前位于角色中的数据库(可能是远程数据库),而不是本地数据库。 例如,在备用数据库上看到的 PEER_WAIT_LIMIT 是主数据库上配置的值,而不是备用数据库的本地配置(仅当备用数据库变为主数据库时才使用)。
- Information about remote database
主数据库和备用数据库通过脉动信号消息交换监视信息。 因此,有关远程数据库的信息可能稍微过时。 查看脉动信号间隔(在表函数中报告)以估计信息的及时性(网络等待时间可增加额外的延迟)。 如果数据库自激活以来从未连接到其伙伴数据库,那么有关远程数据库的信息可能返回为 SQL NULL,以指示“未知”。
- Log shipping channel end points
- 日志装运通道的端点由主机、实例和成员唯一标识:
- 主端:PRIMARY_MEMBER_HOST、PRIMARY_INSTANCE 和 PRIMARY_MEMBER
- 备用端:STANDBY_MEMBER_HOST、STANDBY_INSTANCE 和 STANDBY_MEMBER
- Note on unit of time duration
每个监视器表函数约定,所有 MON_GET_HADR 时间持续时间字段都使用毫秒作为单位。 对于那些反映配置中单位为秒的配置参数 (例如 HADR_TIMEOUT 和 HADR_PEER_WINDOW) 的字段, MON_GET_HADR 表函数返回的数字将与 db2 get/update db cfg 命令中使用的数字以及 SYSIBMADM.DBCFG 管理视图或 SYSPROC.DB_GET_CFG() 表函数。 例如,对于 60 秒 HADR_TIMEOUT 值,MON_GET_HADR 将返回 60000,而面向配置的接口将返回 60。 要将毫秒数转换为秒,请在查询中使用 column_name/1000。
- Usage during takeover
在接管期间,客户机可能有段时间无法连接到主数据库或备用数据库。 在接管期间建议的监视方法是 db2pd -hadr。
- 集群级别摘要:HADR_ROLE、REPLAY_TYPE 和 HADR_SYNCMODE。
- 日志流级别摘要:STANDBY_ID、LOG_STREAM_ID 和 HADR_STATE
- 日志装运通道端点:
- 主端:PRIMARY_MEMBER_HOST、PRIMARY_INSTANCE 和 PRIMARY_MEMBER
- 备用端:STANDBY_MEMBER_HOST、STANDBY_INSTANCE 和 STANDBY_MEMBER
端点在所有场景中唯一标识 HADR 日志装运通道。 主机、实例或 MEMBER_ID 唯一地标识成员。
- 连接详细信息:
- 状态:HADR_CONNECT_STATUS 和 HADR_CONNECT_STATUS_TIME
- 网络计时:HEARTBEAT_INTERVAL、HADR_TIMEOUT 和 TIME_SINCE_LAST_RECV
- 记录器等待计时:PEER_WAIT_LIMIT、LOG_HADR_WAIT_CUR、LOG_HADR_WAIT_TIME 和 LOG_HADR_WAITS_TOTAL
- TCP 缓冲区大小:SOCK_SEND_BUF_REQUESTED、SOCK_SEND_BUF_ACTUAL、SOCK_RECV_BUF_REQUESTED 和 SOCK_RECV_BUF_ACTUAL
- 日志位置详细信息:
- 主日志位置:PRIMARY_LOG_FILE、PRIMARY_LOG_PAGE、PRIMARY_LOG_POS 和 PRIMARY_LOG_TIME
- 备用日志接收位置:STANDBY_LOG_FILE、STANDBY_LOG_PAGE、STANDBY_LOG_POS 和 STANDBY_LOG_TIME
- 主备日志间隔:HADR_LOG_GAP
- 备用日志重放位置:STANDBY_REPLAY_LOG_FILE、STANDBY_REPLAY_LOG_PAGE、STANDBY_REPLAY_LOG_POS 和 STANDBY_REPLAY_LOG_TIME
- 备用接收重放间隔:STANDBY_RECV_REPLAY_GAP
- 重放延迟:STANDBY_REPLAY_DELAY
- 日志缓冲区和假脱机:STANDBY_RECV_BUF_SIZE、STANDBY_RECV_BUF_PERCENT 和 STANDBY_SPOOL_LIMIT
- 对等窗口:PEER_WINDOW 和 PEER_WINDOW_END
- 接管:TAKEOVER_APP_REMAINING_PRIMARY 和 TAKEOVER_APP_REMAINING_STANDBY
- 备用读取:READS_ON_STANDBY_ENABLED、STANDBY_REPLAY_ONLY_WINDOW_ACTIVE、STANDBY_REPLAY_ONLY_WINDOW_START 和 STANDBY_REPLAY_ONLY_WINDOW_TRAN_COUNT
示例
SELECT HADR_ROLE, STANDBY_ID, HADR_STATE, varchar(PRIMARY_MEMBER_HOST ,20) as PRIMARY_MEMBER_HOST, varchar(STANDBY_MEMBER_HOST ,20) as STANDBY_MEMBER_HOST from table(MON_GET_HADR(NULL))
下列是从此查询输出的示例。
HADR_ROLE STANDBY_ID HADR_STATE PRIMARY_MEMBER_HOST ------------- ---------- ----------------------- -------------------- PRIMARY 1 PEER hostP.ibm.com PRIMARY 2 REMOTE_CATCHUP hostP.ibm.com PRIMARY 3 REMOTE_CATCHUP hostP.ibm.com STANDBY_MEMBER_HOST -------------------- hostS1.ibm.com hostS2.ibm.com hostS3.ibm.com 3 record(s) selected.
向具有 3 个备用数据库的主数据库发出查询,其中返回 3 行。 每行表示一个“主数据库/备用数据库”日志装入通道。 HADR_ROLE 列表示针对其发出查询的数据库的角色。 因此,在所有行上,该列均为 PRIMARY。
SELECT HADR_ROLE, STANDBY_ID, HADR_STATE, varchar(PRIMARY_MEMBER_HOST ,20) as PRIMARY_MEMBER_HOST, varchar(STANDBY_MEMBER_HOST ,20) as STANDBY_MEMBER_HOST from table(MON_GET_HADR(NULL))
下列是从此查询输出的示例。
HADR_ROLE STANDBY_ID HADR_STATE PRIMARY_MEMBER_HOST ------------- ---------- ----------------------- -------------------- STANDBY 0 PEER hostP.ibm.com STANDBY_MEMBER_HOST -------------------- hostS1.ibm.com 1 record(s) selected.
向启用了备用数据库读取的备用数据库发出了查询。 备用数据库只知道自己的主数据库。 即使备用数据库是多备用系统的一部分,也只返回一行。 当查询发出到备用数据库时,STANDBY_ID 始终为零。
- 以下示例仅适用于 Db2 pureScale® 环境 中的 HADR。 此示例的环境有三个成员集群。 在主数据库中,成员 0 辅助成员 1。 备用成员 0 是重放成员。
对于成员标识 0,将输出日志流 0 的 HADR 信息和辅助日志流(日志流 1):
SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS FROM TABLE (MON_GET_HADR(0)) LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE HADR_FLAGS ------------- -------------- -------------- -------------- ----------------------- 0 0 0 PEER 1 0 0 REMOTE_CATCHUP ASSISTED_REMOTE_CATCHUP
- 对于成员标识 1,将输出日志流 1 的 HADR 信息:
SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS FROM TABLE (MON_GET_HADR(1)) LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE HADR_FLAGS ------------- -------------- -------------- --------------- ---------- 1 1 0 DISCONNECTED
- 对于日志流标识 2,将输出日志流 2 的 HADR 信息:
SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS FROM TABLE (MON_GET_HADR(2)) LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE HADR_FLAGS ------------- -------------- -------------- -------------- ---------- 2 2 0 PEER
- 指定 -2 作为成员标识时,将报告所有日志流上的 HADR 信息。 对于辅助远程同步复制,仅返回来自辅助成员的记录,HADR_FLAGS 指示它处于辅助远程同步复制状态。
SELECT LOG_STREAM_ID, PRIMARY_MEMBER, STANDBY_MEMBER, HADR_STATE, HADR_FLAGS FROM TABLE (MON_GET_HADR(-2)) LOG_STREAM_ID PRIMARY_MEMBER STANDBY_MEMBER HADR_STATE HADR_FLAGS ------------- -------------- -------------- ---------------- ----------------------- 0 0 0 PEER 1 0 0 REMOTE_CATCHUP ASSISTED_REMOTE_CATCHUP 2 2 0 PEER