Skip to content

查询binlog日志

虚谷数据库以系统函数接口的方式,向用户提供binlog日志查询。binlog日志必须通过订阅者(订阅者的相关操作请参见订阅管理章节)绑定的用户登录至binlog日志记载节点(G角色所在节点)才能进行查询,并且查询的结果以结果集的方式返回(返回可执行的 SQL 语句)。查询函数为:

DBMS_REPLICATION.POLL_MODIFY_DATA

该函数参数及含义如表1所示。

参数名称参数类型说明
SUBSCRIBER_NAMEVARCHAR订阅名
PARTI_NOINTEGER分区号(0 到 modify_log_parti_num-1)
FILTERVARCHAR过滤条件
POLL_LENBIGINT本次查询需要扫描的日志文件长度(字节)
KEEP_POSBOOLEAN是否移动当前分区的备份数据读取位置到本次读取结束位置
FNOINTEGER本次查询开始的文件号
FPOSBIGINT本次查询的开始文件内偏移量

示例:

exec dbms_replication.poll_modify_data('test',0,'obj_id=1048577',10*1024*1024,true,0,0);

本例表示本次查询0号文件,偏移0个字节开始扫描,扫描长度为10M,并且只查询对象ID为1048577的日志,查询结果如图1所示。


以上查询是通过控制台执行的,因此在结果集不多的情况下,可以非常方便的观察查询结果。在无法预知结果集的情况下,建议将查询结果集重定向到文件,方便后续的分析与使用,操作步骤如下(Linux 下执行):

  1. 新建一个脚本文件expbinlog.sh,并赋予执行权限。

    touch expbinlog.sh && chmod +x expbinlog.sh
  2. 使用vim编辑expbinlog.sh脚本,新增以下内容。

    #!/bin/bash
     xuguconsole nssl 192.168.2.222 5138 db1 SYSDBA SYSDBA <<EOF
     exec dbms_replication.poll_modify_data('test',0,'obj_id=1048577',1024*1024*1024,true,­1,0);
     exit;
     EOF

    根据实际的使用情况来修改IP、端口、库名、用户名和密码以及查询参数,修改完成后保存退出,然后执行以下命令:

    ./expbinlog.sh >> binlog_x_y.txt

    建议将x设置为对象ID号,y设置为当前查询的分区号(查询函数中的第2个参数)。