1 在运维的多个系统中,发现goldengate的MGR多一段时间,就不能自动清理trail文件,需要重新启动才可以清理,就想查明根本原因。
2
MGR
管理进程的参数配置:
源端和目标端trail
文件号的比较,认为不会由于源端和目标端trail
文件号相差太大而引起MGR
不能删除trail
的问题:
3 问题追踪
2014
年9月1日:
2014
年9月4日:
2014
年9月5日:
9
月16日,发现MGR不能清理trail文件了,但多了一个反斜杠:
9
月22日:
10
月10日:
发现MGR不能自动清除3天前的老的trail文件,使用refresh命令,发现MGR已经不能自动清除过期的trail文件。
关闭MGR,并重新启动MGR,发现又可以自动清理老的trail文件:
根据goldengate
的清除trail
文件规则:
刷新MGR
参数,看看MGR
清除trail
文件的规则是否有变化:
重新启动MGR
,查看MGR
清除trail
文件的规则:
现象描述: 11.1.1.0.3
版本的goldengate
运行一段时间后,无法自动清除trail
文件;使用refresh mgr
命令,让MGR
管理进程重新读取MGR
参数文件,MGR
管理进程就会自动清除3
天以前的trail
文件;但此时观察MGR
报告,会发现清除的trail
文件路径前多一个反斜杠('/'
);MGR
进程再次运行一段时间后,又不能自动清除trail
文件,再次使用refresh mgr
命令,MGR
管理进程又可以正常工作。直到trail
文件前的反斜杠('/'
)达到3
个后,使用refresh mgr
命令已经不能使mgr
管理进程自动清除trail
文件,只能重启MGR
进程,才可以使得MGR
管理进程自动清除trail
文件。
原因分析
:
当MGR
参数第一次启动时,会将MGR
参数文件读取到内存中运行,当运行一段时间后,由于某些事件的触发,会导致抽取的trail
文件的路径前多一个反斜杠('/'
),而清除TRAIL
文件的规则由于未增加一个反斜杠'/',
故goldengate
程序会认为抽取trail
的路径和清除trail
的路径不一致,达不到清除TRAIL
文件的条件,故会导致MGR
管理进程不能自动清除trail
文件;当使用refresh mgr
命令时, goldengate
用MGR
清除trail
文件规则中的Extract trails
的路径(///goldengate/dirdat/ea)
替换PurgeOldExtracts Rules
的路径(/goldengate/dirdat/*)
,此时达到清除TRAIL
文件的路径(///goldengate/dirdat/*)
和extract trails
的路径(///goldengate/dirdat/ea)
一致,故MGR
又可以正常的清除TRAIL
文件。当重新启动MGR
管理进程后,MGR
的管理进程的清除规则又恢复到原始状态,即MGR
清除规则中的抽取文件的路径(/goldengate/dirdat/ea)
和清除过期trail
文件的路径(/goldengate/dirdat/*)
恢复到正常状态,故又可以正确清除过期的trail
文件。
故认定此
MGR
管理进程运行一段时间后,不能自动清除
trail
文件的原因为:
MGR
管理进程将
MGR
参数放到内存中运行一段时间,由于
goldengate
程序的
BUG
,导致自动清除
trail
文件的路径前多一个反斜杠(
'/'
),从而导致
MGR
管理进程不能自动清除
trail
文件。
针对此事件,同ORACLE官方的人员沟通,他们认为是一个BUG。以下为oracle官方提供的部分佐证材料:
1 申请了2个SR,严重性为2和3.

2 SR级别为普通的答复如下:




3 SR级别为严重的答复如下:





总结:根据oracle 官方工程师所述,他们认为MGR 进程不能正常清除trail 文件,就是一个BUG ,因此建议升级goldengate 到11.2.
