环境:
PRD AIX 11204 RAC
DOWNSTREAM LINUX 19.7 RAC
OGG 21.3 MA
错误信息:
LOGMINER: Error 308 encountered, failed to read logfile /opt/odata/arch3_495_657561562.dbfFri Jun 03 06:35:03 CST 2011
LOGMINER: Error 308 encountered, failed to read logfile /opt/odata/arch1_116714_657561562.dbfFri Jun 03 06:35:03 CST 2011
LOGMINER: Error 308 encountered, failed to read logfile /opt/odata/arch3_496_657561562.dbfFri Jun 03 06:35:03 CST 2011
分析:
从错误信息看是日志无法获取到。
处理思路:
根据当前的用户环境来决定处理方式。
1.日志可以找回
如果日志可以从其他环境找回或者可以从备份环境恢复出来。可以将日志拷贝到解析库用如下语句注册
alter database register or replace logical logfile '/opt/odata/arch3_495_657561562.dbf' for 'OGG$CAP_EB' ;
注册以后可以继续,如果还有其他日志用相同的方法。
2.日志无法找回或者可以丢弃日志
A.抽取进程无正在处理的事务。按照设计,在这种情况下,如果OGG在异常的时候正好结束上一个事务,下一个事务还没有开始,我觉得是可以通过指定时间和SCN来规避的。也就是用如下语句来实现。
ggsci>alert extract eb,begin now
ggsci>alert extract eb,scn xxxxx
B.抽取进程刚好有事务在处理中。 这个时候日志丢失,用时间或者SCN来指定从新抽取的点会报错,抽取进程依然会报错,找不到日志。 这个时候需要登陆到数据库删除注册信息并重新注册。 没错,你可能已经发现这和重新创建进程的思路一致,不同的是,重新创建步骤更多,你会涉及到命名,同步变更复制进程等操作。重新注册还是用了原来进程的一系列信息。
ggsci>dblogin useridalias xxx domain oraclegoldengate
ggsci>unregister extract eb3 database
ggsci> register extract eb3 database
这样抽取进程会重新注册到数据库,主库会再次生成数据字典信息写入到日志文件,传递到DOWNSTREAM. 抽取很快恢复正常。
欢迎指正。