关于oracle ogg复制进程挂起的处理
针对ogg的P进程挂起的处理步骤(以内网为例,内网操作步骤一致) 查出问题表:1、首先登陆ogg服务器 2、用命令 su - oracle却换到oracle用户 3、用命令 cd ogg进入到ogg目录 4、用命令 ./ggsci进入到ogg命令行界面 5、用命令 info all查看ogg进程运行情况 6、用命令 view report xxxx可以查看某个进入的运行信息日志 (如何那个进程挂起了就看那个的) 例如view report r_in 7、从日志信息中查看报错的信息,如下所示: 2016-11-16 14:43:23 WARNING OGG-01004 Aborted grouped transaction on 'NEWGDLV.T_O_CERTIFICATEINFO',Database error 1403 (OCI Error ORA-01403: no data foun d,SQL <UPDATE "NEWGDLV"."T_O_CERTIFICATEINFO" SET "CFI_PRINTCERTDATE" = :a1,"CFI_PRINTSTATUS" = :a2,"CFI_SENDSTATUS" = :a3,"CFI_MODTIME" = :a4,"CFI_MODUSER ID" = :a5,"CFI_MODUSER" = :a6 WHERE "CFI_ID" = :b0>). 2016-11-16 14:43:23 WARNING OGG-01003 Repositioning to rba 459579136 in seqno 31. 2016-11-16 14:43:23 WARNING OGG-01154 SQL error 1403 mapping NEWGDSFLV.T_O_CERTIFICATEINFO to NEWGDLV.T_O_CERTIFICATEINFO OCI Error ORA-01403: no data fou nd,"CFI_MODUSE RID" = :a5,"CFI_MODUSER" = :a6 WHERE "CFI_ID" = :b0>. 8、这里我们可以看到NEWGDLV.T_O_CERTIFICATEINFO这个表有报错 9、报错原因可能有: a、该表没有主键 b、该表没有附加日志
10、我们通过数据库可以看到这个表是有主键的。那么原因就是没有附加日志造成的了 在对应进程中排除问题表:1、排除影响复制复制进程的表,用命令:edit param r_out 结果显示如下图:
然后用命令:edit param r_out 编辑这个参数配置文件按字母i进入编辑状态 在OBEY语句前面加上影响复制进程对应的目标表即NEWGDSFLV.T_O_CERTIFICATEINFO,加上的完整语句如下: MAPEXCLUDENEWGDSFLV.T_O_CERTIFICATEINFO 按下esc键然后依次键入:wq保存退出 重启ogg:1、停止所有ogg进程,用命令stop * 2、启动所有ogg进程,用命令start * 为问题表添加附加日志:1、在ogg的命令界面执行命令view param e_in显示如下信息: extract E_IN SETENV (ORACLE_SID="exdb") SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) Userid ggs,PASSWORD AACAAAAAAAAAAAIAAGLHJDWAVIWIIBYE,BLOWFISH,ENCRYPTKEY DEFAULT --TRANLOGOPTIONS ASMUSER SYS@ASM,ASMPASSWORD oracle REPORT AT 01:59 REPORTROLLOVER AT 02:00 CACHEMGR,CACHESIZE 256MB TRANLOGOPTIONS EXCLUDEUSER GGS EXTTRAIL /ora_data/dirdat/in NUMFILES 3000 EOFDELAYCSECS 30 GETTRUNCATES TRANLOGOPTIONS DBLOGREADER DYNAMICRESOLUTION BR BRINTERVAL 2H,BRDIR BR GETUPDATEBEFORES NOCOMPRESSDELETES WARNLONGTRANS 3H,CHECKINTERVAL 3M OBEY /oracle/ogg/dirprm/e_in.txt
2、登录数据库 dblogin Userid ggs,ENCRYPTKEY DEFAULT(这行是从上面结果中复制过来的) Successfully logged into database. 3、查看目标表是否有附加日志 info trandata NEWGDSFLV.T_O_CERTIFICATEINFO Logging of supplemental redo log data is disabled for table NEWGDSFLV.T_O_CERTIFICATEINFO. 4、结果显示是没有附加日志的,用命令为该表添加附加日志add trandata NEWGDSFLV.T_O_CERTIFICATEINFO。删除附加日志用命令:deletetrandataxxx.yy Logging of supplemental redo data enabled for table NEWGDSFLV.T_O_CERTIFICATEINFO. 5、查看附加日志是否添加成功,info trandata NEWGDSFLV.T_O_CERTIFICATEINFO Logging of supplemental redo log data is enabled for table NEWGDSFLV.T_O_CERTIFICATEINFO. Columns supplementally logged for table NEWGDSFLV.T_O_CERTIFICATEINFO: CFI_ID.
6、显示附加日志添加成功了! 初始化数据:1、初始化内外网对应问题的数据库数据,该表是以内网为准,所以我们备份内网对应的该表然后清空内网原始的表 停止所有ogg进程:1、停止所有ogg进程,用命令stop * 恢复被排除的表:1、恢复被排除的表(删掉或注释之前排除表的那行语句即可) 启动所有ogg进程:1、启动所有ogg进程,用命令start * 2、外网也以同样的方式处理 导入数据:1、从备份表导入数据到被清空的原始表,然后去外网查看数据是否有同步 2、通过数据库查看,我们看到数据已经成功同步到外网了 总结:当ogg出现某一进程因某张表异常挂起之后总体处理步骤如下: 1、查出这张表 2、在对应进程的配置文件中排除问题表 3、重启ogg 4、为问题表添加附加日志或者主键 5、初始化数据 6、停止ogg所有进程 7、恢复被排除的问题表 8、启动ogg所有进程 9、导入数据,检查同步是否生效 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |