查询binlog日志
虚谷数据库以系统函数接口的方式,向用户提供binlog日志查询。binlog日志必须通过订阅者(订阅者的相关操作请参见订阅管理章节)绑定的用户登录至binlog日志记载节点(G角色所在节点)才能进行查询,并且查询的结果以结果集的方式返回(返回可执行的 SQL 语句)。查询函数为:
DBMS_REPLICATION.POLL_MODIFY_DATA
该函数参数及含义如表1所示。
参数名称 | 参数类型 | 说明 |
---|---|---|
SUBSCRIBER_NAME | VARCHAR | 订阅名 |
PARTI_NO | INTEGER | 分区号(0 到 modify_log_parti_num-1) |
FILTER | VARCHAR | 过滤条件 |
POLL_LEN | BIGINT | 本次查询需要扫描的日志文件长度(字节) |
KEEP_POS | BOOLEAN | 是否移动当前分区的备份数据读取位置到本次读取结束位置 |
FNO | INTEGER | 本次查询开始的文件号 |
FPOS | BIGINT | 本次查询的开始文件内偏移量 |
示例:
exec dbms_replication.poll_modify_data('test',0,'obj_id=1048577',10*1024*1024,true,0,0);
本例表示本次查询0号文件,偏移0个字节开始扫描,扫描长度为10M,并且只查询对象ID为1048577的日志,查询结果如图1所示。

以上查询是通过控制台执行的,因此在结果集不多的情况下,可以非常方便的观察查询结果。在无法预知结果集的情况下,建议将查询结果集重定向到文件,方便后续的分析与使用,操作步骤如下(Linux 下执行):
新建一个脚本文件expbinlog.sh,并赋予执行权限。
touch expbinlog.sh && chmod +x expbinlog.sh
使用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个参数)。