OGG-01705 报错处理

来源:这里教程网 时间:2026-03-03 19:51:37 作者:

故障现象传输进程启动异常,并报错如下:

2022-02-08 09:52:11  ERROR   OGG-01705  Oracle GoldenGate Capture for Oracle, p1_pd.prm:  Input checkpoint position  45970013 for input trail file './dirdat/pd016425' is greater than the size of the file ( 45941215).  Please consult Oracle Knowledge Management Doc ID 1138409.1. for instructions.

用户再次之前做了如下操作:3节点rac,ogg装在nfs目录上,三个节点挂载,主机重启后,ogg更换节点挖掘,传输进程出现如上报错。 问题分析在goldengate中,传输进程和挖掘进程在交换数据的时候传输进程是从cache区域中去抓取数据传送到目标端(而不是等到真的写到磁盘后,这样可以提高性能)。当意外down机时系统来不及将cache中的内容写到磁盘, 当下次启动时,前一个进程进行恢复动作,并将比文件大的一部分内容写到了下一个trail文件中(extract启动的时候会etrollover)。传输进程新建的检查点是基于cache中的信息更新的,而trail文件的大小实际上是要比检查点写的RBA小,因此出现上面的报错。进一步确认问题:

1.确认进程当前检查点位置:
EXTRACT    P1_PD     Last Started 2022-02-08 09:52   Status ABENDED
Checkpoint Lag       08:46:00 (updated 00:00:53 ago)
Log Read Checkpoint  File ./dirdat/pd016425
                     2022-02-08 01:06:11.000000  RBA 45970013
2.检查trail文件大小(通常RBA的位置已经超过了trail大小):
-rw-r--r-- 1 ogguser dba       45941215 Feb  8 08:56 pd016425
-rw-r----- 1 ogguser oinstall 102065502 Feb  8 08:56 pd016426

所以,这个问题的解决办法要么将进程的检查点跳到下一个trail的指定RBA,要么重新初始化。 这里我们尝试找到下个trail对应的rba 问题解决传输进程的检查点bitrail文件大,若要手工恢复,则需要找到seqno为X的这个trail比RBA小的这部分内容在X+1这个Trail中的具体位置。有三种方法可以得到这个结果:

方法一
通过公式:进程新RBA=报错信息的过大RBA( 变量A)+新trail中的第一条记录的RBA( 变量B)-进程失败trail中包含下个trail第一条记录事务的起始RBA( 变量C)
方法二
基于公式:进程新RBA=报错信息的过大RBA( 变量A)+新trail中的第一条记录的RBA( 变量B)-旧Trail的文件大小( 变量C)
方法三
通过以上两个方法可见,在相同的案例中不同的方法结果也不一样。也就是说不一定有效, 如 果以上两个方法都无效才能使用此方法(如果数据量不大最好重新初始化)。
此方法参照MOS
This option should only be used if option 1 and option 2 failed.
Please refer the bug- 13955891

这次我们使用方法二,其他两种方法不做展开 方法二1.获取变量A

查看报错信息中(或者INFO查看进程当前RBA)为: 变量A;
EXTRACT    P1_PD     Last Started 2022-02-08 09:52   Status ABENDED
Checkpoint Lag       08:46:00 (updated 00:00:53 ago)
Log Read Checkpoint  File ./dirdat/pd016425
                     2022-02-08 01:06:11.000000  RBA  45970013(变量A)

或者查看报错 2022-02-08 09:52:11  ERROR   OGG-01705  Oracle GoldenGate Capture for Oracle, p1_pd.prm:  Input checkpoint position  45970013  for input trail file './dirdat/pd016425' is greater than the size of the file (45941215).  Please consult Oracle Knowledge Management Doc ID 1138409.1. for instructions.    得到变量A: 45970013

2.获取变量B:

使用Logdump工具找到下一个trail中的第一条记录: 变量B;
注:如果新trail没有第一条记录,则依次往后找,直到找到有记录的trail为止.

    得到变量B: 1775 3.获取变量C:文件系统查看: OGG-01705  Oracle GoldenGate Capture for Oracle, p1_pd.prm:  Input checkpoint position 45970013 for input trail file './dirdat/pd016425' is greater than the size of the file ( 45941215,变量C).  Please consult Oracle Knowledge Management Doc ID 1138409.1. for instructions.

4.计算新进程RBA:

       45970013+1775-45941215=30573

5.基于新的RBA启动:
    alter P1_PD extseqno 16426 extrba 30573

ps:Oracle自己在同一个问题上给我们三个方法。重点是三个方法得出的结果不一致,条件允许的话,还不如重新初始化。

相关推荐