MON_GET_HADR 表函数 - 返回高可用性灾难恢复 (HADR) 监视信息

此函数返回高可用性灾难恢复 (HADR) 监视信息。

权限

需要下列其中一项权限才能执行此例程:
  • 对例程的 EXECUTE 特权
  • DATAACCESS 权限
  • DBADM 权限
  • SQLADM 权限

缺省 PUBLIC 特权

语法

Read syntax diagramSkip visual syntax diagramMON_GET_HADR(member)

模式为 SYSPROC。

例程参数

成员
类型为 INTEGER 的输入参数,用于指定成员编号。 返回的行表示成员正在处理的日志流。 指定 -1(表示当前数据库成员)或 -2(表示所有活动数据库成员)。 如果指定空值,那么会隐式设置 -1。

返回的信息

表 1. 为 MON_GET_HADR 返回的信息
列名 数据类型 描述
HADR_ROLE VARCHAR(13) hadr_role -“HADR 角色”监视元素
REPLAY_TYPE VARCHAR(9) replay_type -“HADR 复制类型”监视元素
HADR_SYNCMODE VARCHAR(10) hadr_syncmode -“HADR 同步方式”监视元素
STANDBY_ID SMALLINT standby_id -“备用数据库标识”监视元素
LOG_STREAM_ID INTEGER log_stream_id -“日志流标识”监视元素
HADR_STATE VARCHAR(23) hadr_state -“HADR 状态”监视元素
HADR_FLAGS VARCHAR (512) hadr_flags -“HADR 标记”监视元素
PRIMARY_MEMBER_HOST VARCHAR(255) primary_member_host -“主数据库成员主机”监视元素
PRIMARY_INSTANCE VARCHAR(128) primary_instance -“主数据库实例”监视元素
PRIMARY_MEMBER SMALLINT primary_member -“主数据库成员”监视元素
STANDBY_MEMBER_HOST VARCHAR(255) standby_member_host -“备用数据库成员主机名”监视元素
STANDBY_INSTANCE VARCHAR(128) standby_instance -“备用数据库实例”监视元素
STANDBY_MEMBER SMALLINT standby_member -“备用数据库成员”监视元素
HADR_CONNECT_STATUS VARCHAR(12) hadr_connect_status -“HADR 连接状态”监视元素
HADR_CONNECT_STATUS_TIME TIMESTAMP hadr_connect_status_time -“HADR 连接状态时间”监视元素
HEARTBEAT_INTERVAL BIGINT heartbeat_interval -“脉动信号间隔”监视元素
HADR_TIMEOUT BIGINT hadr_timeout -“HADR 超时”监视元素
TIME_SINCE_LAST_RECV BIGINT time_since_last_recv -“自接收上一消息以来经历的时间”监视元素
PEER_WAIT_LIMIT BIGINT peer_wait_limit -“对等等待限制”监视元素
LOG_HADR_WAIT_CUR BIGINT log_hadr_wait_cur -“当前记录器等待时间”监视元素
LOG_HADR_WAIT_TIME BIGINT log_hadr_wait_time -“记录器总等待时间”监视元素
LOG_HADR_WAITS_TOTAL BIGINT log_hadr_waits_total -“记录器等待事件总数”监视元素
sock_send_buf_requested BIGINT sock_send_buf_requested -“请求的套接字发送缓冲区大小”监视元素
SOCK_SEND_BUF_ACTUAL BIGINT sock_send_buf_actual -“实际套接字发送缓冲区大小”监视元素
sock_recv_buf_requested BIGINT sock_recv_buf_requested -“请求的套接字接收缓冲区大小”监视元素
SOCK_RECV_BUF_ACTUAL BIGINT sock_recv_buf_actual -“实际套接字接收缓冲区大小”监视元素
PRIMARY_LOG_FILE VARCHAR(12) primary_log_file -“主数据库日志文件”监视元素
PRIMARY_LOG_PAGE BIGINT primary_log_page -“主项日志页面”监视元素
PRIMARY_LOG_POS BIGINT primary_log_pos -“主数据库日志位置”监视元素
PRIMARY_LOG_TIME TIMESTAMP primary_log_time -“主数据库日志时间”监视元素
STANDBY_LOG_FILE VARCHAR(12) standby_log_file -“备用数据库日志文件”监视元素
STANDBY_LOG_PAGE BIGINT standby_log_page -“备用项日志页面”监视元素
STANDBY_LOG_POS BIGINT standby_log_pos -“备用数据库日志位置”监视元素
STANDBY_LOG_TIME TIMESTAMP standby_log_time -“备用数据库日志时间”监视元素
HADR_LOG_GAP BIGINT hadr_log_gap -“HADR 日志间隔”监视元素
STANDBY_REPLAY_LOG_FILE VARCHAR(12) standby_replay_log_file -“备用数据库重放日志文件”监视元素
standby_replay_log_page BIGINT standby_replay_log_page -“备用项重放日志页面”监视元素
STANDBY_REPLAY_LOG_POS BIGINT standby_replay_log_pos -“备用数据库重放日志位置”监视元素
standby_replay_log_time TIMESTAMP standby_replay_log_time -“备用数据库重放日志时间”监视元素
standby_recv_replay_gap BIGINT standby_recv_replay_gap -“备用数据库接收重放间隔”监视元素
STANDBY_REPLAY_DELAY BIGINT standby_replay_delay -“备用数据库重放延迟”监视元素
STANDBY_RECV_BUF_SIZE BIGINT standby_recv_buf_size -“备用数据库接收缓冲区大小”监视元素
standby_recv_buf_percent standby_recv_buf_percent -“备用数据库接收缓冲区百分比”监视元素
STANDBY_SPOOL_LIMIT BIGINT standby_spool_limit -“备用数据库假脱机限制”监视元素
STANDBY_SPOOL_PERCENT standby_spool_percent -“备用数据库假脱机百分比”监视元素
PEER_WINDOW BIGINT peer_window -“对等时间段”监视元素
PEER_WINDOW_END TIMESTAMP peer_window_end - 对等时间段结束
takeover_app_remaining_primary BIGINT takeover_app_remaining_primary -“主数据库上的余下应用程序数”监视元素
takeover_app_remaining_standby BIGINT takeover_app_remaining_standby -“备用数据库上的余下应用程序数”监视元素
reads_on_standby_enabled CHAR(1) reads_on_standby_enabled -“已启用在备用数据库上读取”监视元素
standby_replay_only_window_active CHAR(1) standby_replay_only_window_active -“备用数据库限重放时间范围活动状态”监视元素
standby_replay_only_window_start TIMESTAMP standby_replay_only_window_start -“限重放时间范围启动时间”监视元素
standby_replay_only_window_tran_count BIGINT standby_replay_only_window_tran_count -“限重放时间范围事务”监视元素
HEARTBEAT_MISSED INTEGER heartbeat_missed -“缺失脉动信号数”监视元素
HEARTBEAT_EXPECTED INTEGER heartbeat_expected -“预期脉动信号数”监视元素
STANDBY_ERROR_TIME TIMESTAMP standby_error_time -“备用数据库错误时间”监视元素

用法备注

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
在建立连接之前,远程端的端点信息可能不可用。 当信息不可用时,将为主机和实例名称返回空字符串,而为成员标识返回零。 此外,在 Db2® Enterprise Server Edition 环境中,始终会针对成员标识返回 0。
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

列顺序和组:
  1. 集群级别摘要:HADR_ROLE、REPLAY_TYPE 和 HADR_SYNCMODE。
  2. 日志流级别摘要:STANDBY_ID、LOG_STREAM_ID 和 HADR_STATE
  3. 日志装运通道端点:
    1. 主端:PRIMARY_MEMBER_HOST、PRIMARY_INSTANCE 和 PRIMARY_MEMBER
    2. 备用端:STANDBY_MEMBER_HOST、STANDBY_INSTANCE 和 STANDBY_MEMBER

      端点在所有场景中唯一标识 HADR 日志装运通道。 主机、实例或 MEMBER_ID 唯一地标识成员。

  4. 连接详细信息:
    1. 状态:HADR_CONNECT_STATUS 和 HADR_CONNECT_STATUS_TIME
    2. 网络计时:HEARTBEAT_INTERVAL、HADR_TIMEOUT 和 TIME_SINCE_LAST_RECV
    3. 记录器等待计时:PEER_WAIT_LIMIT、LOG_HADR_WAIT_CUR、LOG_HADR_WAIT_TIME 和 LOG_HADR_WAITS_TOTAL
    4. TCP 缓冲区大小:SOCK_SEND_BUF_REQUESTED、SOCK_SEND_BUF_ACTUAL、SOCK_RECV_BUF_REQUESTED 和 SOCK_RECV_BUF_ACTUAL
  5. 日志位置详细信息:
    1. 主日志位置:PRIMARY_LOG_FILE、PRIMARY_LOG_PAGE、PRIMARY_LOG_POS 和 PRIMARY_LOG_TIME
    2. 备用日志接收位置:STANDBY_LOG_FILE、STANDBY_LOG_PAGE、STANDBY_LOG_POS 和 STANDBY_LOG_TIME
    3. 主备日志间隔:HADR_LOG_GAP
    4. 备用日志重放位置:STANDBY_REPLAY_LOG_FILE、STANDBY_REPLAY_LOG_PAGE、STANDBY_REPLAY_LOG_POS 和 STANDBY_REPLAY_LOG_TIME
    5. 备用接收重放间隔:STANDBY_RECV_REPLAY_GAP
    6. 重放延迟:STANDBY_REPLAY_DELAY
  6. 日志缓冲区和假脱机:STANDBY_RECV_BUF_SIZE、STANDBY_RECV_BUF_PERCENT 和 STANDBY_SPOOL_LIMIT
  7. 对等窗口:PEER_WINDOW 和 PEER_WINDOW_END
  8. 接管:TAKEOVER_APP_REMAINING_PRIMARY 和 TAKEOVER_APP_REMAINING_STANDBY
  9. 备用读取:READS_ON_STANDBY_ENABLED、STANDBY_REPLAY_ONLY_WINDOW_ACTIVE、STANDBY_REPLAY_ONLY_WINDOW_START 和 STANDBY_REPLAY_ONLY_WINDOW_TRAN_COUNT

示例

  1. 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。

  2. 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 始终为零。

  3. 以下示例仅适用于 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