老头子的博客  2018年04月20日 星期五

手机版

关于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, SQL <UPDATE "NEWGDLV"."T_O_CERTIFICATEINFO" SET "CFI_PRINTCERTDATE" = :a1,"CFI_PRINTSTATUS" = :a2,"CFI_SENDSTATUS" = :a3,"CFI_MODTIME" = :a4,"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,加上的完整语句如下:

MAPEXCLUDE  NEWGDSFLV.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,PASSWORD AACAAAAAAAAAAAIAAGLHJDWAVIWIIBYE, BLOWFISH, 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。删除附加日志用命令:delete trandata xxx.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、导入数据,检查同步是否生效



标签:
上一篇: mysql能用localhost连接不能使用127.0.0.1连接的解决办法
下一篇: 在Windows下通过mklink /d 实现符号链接到网络资源盘符

发表评论:

*