Logdump是一个GoldenGate自带的trail文件分析工具,而且能加深对GoldenGate工作原理的理解,非常值得花时间来研究它。

Logdump组件默认在安装目录,是个可执行文件,如图6所示。

113253700.jpg

图6

直接输入logdump按回车键即可进入logdump界面,如图7所示。

113307741.jpg

图7



1、认识logdump分析工具及常用命令

logdump的命令不是很多,经常用的就那么几条,进入logdump命令行之后,直接可以输入help即可看到用的每一条命令,如图8和图9所示。

113416252.jpg

图8

113428884.jpg


图9


其中常用的命令如下。

Usertoken  用来显示trail文件的一些标记信息。

Ggstoken  显示GoldenGate的一些标记信息。

Headertoken  显示头部的标记信息。

ghdr on  用来打开记录的头部信息。

pos first|last| for| rev  其中pos for|rev 比较重要,用于指定在trail文件中读的方向(向上|向下)。

count detail  会显示当前trail文件总的记录数量,如图10所示。

其他一些命令查看文档很容易就能明白。

113440405.jpg

图10


2、理解trail文件格式与常见分析思路

理解trail文件的格式对理解GoldenGate的工作原理非常重要,对troubleshooting也非常的有帮助,如图11所示。

113522625.jpg

图11


其中,一个trail文件最先开始是文件的头部信息,然后是记录的头部信息,接着为记录的详细信息。GoldenGate是以事务为单位处理记录的,所以trail文件记录的时间均为commit的时间,如图12所示。

113532297.jpg

图12


Trial文件中的处在同一事物中的record,由I/O time和AuditRBA值唯一确定,如图13所示。

113544828.jpg

图13


TransInd记录当前的record处于当前事务的哪个部分,如图14所示。

113557971.jpg

图14


GoldenGate的工作原理可以理解为源端抽取进程从redo日志中按事物抽取相应的DML操作信息与数据,然后按时间顺序写到本地的trail文件,然后源端的投递进程则与容灾端MGR进程、Extract进程交互,通过读trail文件信息,把数据通过TCP/IP协议投递到容灾端。接着容灾端的Replicat进程再通过读投递过来的trail文件,转换为SQL语句往数据库里更新数据,这样就完整地实现了数据复制。

了解到这一层后,如果GoldenGate链路出现问题,或者trail文件有损坏,则可以直接通过logdump分析到对应的检查点,重新抽取或者投递或者复制,从而可以修复已经损坏的链路。


3、Logdump使用指引

在GGSCI中使用如下命令查看当前处理的队列文件和RBA号,例如:

示例47:

GGSCI (br-jl-accs-db1) 3> info REPYXA

REPLICAT   REPYXA    Last Started 2011-01-08 19:48   Status RUNNING

Checkpoint Lag       00:00:00 (updated 136:41:42 ago)

Log Read Checkpoint  File ./dirdat/p1000556 First Record  RBA 59193235


在GoldenGate安装目录执行logdump命令,打开要查看的队列文件:

示例48:

Logdump 1 >open ./dirdat/p1000556

Current LogTrail is ./dirdat/p1000556

Logdump 2 >ghdr on

Logdump 3 >detail on

Logdump 4 >detail data

Logdump 5 >usertoken on

Logdump 6 >pos 59193235 上面INFO命令看到的RBA号码

Logdump 7 >n

继续输入n显示当前处理的表及相关操作。