Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

导读:OGG将运行中因各种异常导致没有正常同步的记录信息记录在丢弃文件 discardfile /ogg/oggrm/11.2/dirdat/repa.dsc 中,当同步中出现大量异常时,该文件会急剧膨胀,甚至超过进程参数中设定的文件大小(megabytes 2000),此时便会出现OGG-01172异常,如果不清楚该文件的作用,我们通常会采取网上大部分人的操作方法,要么增加文件大小,要么删除文件重启。这样就会失去OGG中该文件的意义,正确的做法需要检查异常,排除异常从根本上解决问题。

 

一、问题再现

        监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG运行报告目录检查运行报告

  cd $OGG_HOME/dirrpt

  cat REPA.rpt

在文件末尾有一段异常信息:

  2015-04-20 09:38:36  ERROR   OGG-01172  Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000).

  2015-04-20 09:38:36  ERROR   OGG-01668  PROCESS ABENDING.

 

二、问题解决过程

     从异常的直观上看就是丢弃处理记录日志文件 /ogg/oggrm/11.2/dirdat/repa.dsc大小超出了限制 2000000000 bytes,检查进程的参数设置

GGSCI (itspdb1) 3> view params repa

replicat repa
--SETENV (ORACLE_SID = "itspyn1")
userid oggrm@itspyn,password oggrm
REPORT AT 05:59 on friday
reportrollover at 06:00 on friday
discardrollover at 06:00 on friday
assumetargetdefs
reperror default,discard
discardfile /ogg/oggrm/11.2/dirdat/repa.dsc, append,megabytes 2000
numfiles 3000
dynamicresolution
grouptransops 1000
allownoopupdates
APPLYNOOPUPDATES
--handlecollisions
GETTRUNCATES
map rm.oggtest, target rm.oggtest;
obey ./dirprm/paramfiles/repaparam

在参数设置中看到对该文件的设置,追加方式写文件,最大为 2000 MB,再确认/ogg/oggrm/11.2/dirdat/repa.dsc文件的大小情况

cd /ogg/oggrm/11.2/dirdat/

ls -lsh   加h参数带单位查看文件大小确实到2000M了,导致不能再追加写入信息。

至此,问题已经确认清楚,接下来就是看如何解决这个问题了,在网络上查询到有两种解决方式如下

法一  修改进程参数设置,增加repa.dsc大小,启动进程正常,但是很快又因为同样的问题进程挂死;

进入OGG命令控制台

ggsci

进入编辑界面,调整为3000MB,保存退出重启进程

edit params repa

 

法二   直接删除repa.dsc,重启进程,发现文件膨胀得很快,很快便接近最大值;

复制文件到其他目录备份,然后删除文件重启进程

cp  ./repa.dsc  /ogg/oggrm

rm -rf repa.dsc

 

法三 分析问题原因,从根本上解决该问题

        首先,需要弄清楚/ogg/oggrm/11.2/dirdat/repa.dsc这个文件的作用,进入文件查询发现文件中记录的信息分为两类,一类是对应的OGG复制进程运行的异常信息记录,和repa.rpt文件一样,另一类信息是在进程做增量数据同步写入目标库时处理异常的记录信息。再对文件进行分析发现文件中存在大量的同一个表违反主键约束的异常信息


OCI Error ORA-00001: unique constraint (RM.PK_TSM_MANAGED_PORT_2_SLOT_TIM) violated (status = 1). INSERT INTO "RM"."TSM_MANAGED_PORT_2_SLOT_TIME" ("RELATION_ID","SLOT_TIME_ID","MANAGED_PORT_ID","STAFF_ID","CREATED_DT","VERSION") VALUES (:a0,:a1,:a2,:a3,:a4,:a5)
Operation failed at seqno 8846 rba 98482345
Discarding record on action DISCARD on error 1
Problem replicating RM.TSM_MANAGED_PORT_2_SLOT_TIME to RM.TSM_MANAGED_PORT_2_SLOT_TIME
Mapping problem with insert record (target format)...
*
RELATION_ID = 42868760
SLOT_TIME_ID = 40455799
MANAGED_PORT_ID = 84578757
STAFF_ID = 10000
CREATED_DT = 2015-04-16 13:42:30
VERSION = 2015-04-16 13:42:30
*
Current time: 2015-04-17 18:19:41

 

再结合源端对应时间点的数据操作,可定位为源端对TSM_MANAGED_PORT_2_SLOT_TIME进行的批量数据处理导致的问题。

然后,结合两端的数据情况分析发现异常的的信息不影响两端数据的同步,可以不做处理。对表进行主键重建,删除重复的数据。

 

处理后,观察日志没有改异常信息。问题得解。

 

三、问题延伸分析

 

1)单位转换采用硬件商标准,和平时编程的有所区别

官方标准:
1字节(Byte)=8字位=8个二进制数
1字位(bit)=1个二进制数
1B=8b
1KB=1024B
1MB=1024KB
1GB=1024MB

硬件商标准:
1GB=1000MB
1MB=1000KB
1KB=1000B

你可能感兴趣的:(OGG)