您好,欢迎访问三七文档
第9章GoldenGate错误分析与处理在维护GoldenGate过程中,由于各种意外情况,难免还是会遇到各种各样的问题。掌握一些常见的GoldenGate故障诊断和错误分析的方法是非常有必要的,而且掌握这些错误分析工具也进一步加深对GoldenGate产品的认识与对GoldenGate原理的理解。9.1GoldenGate常见异常处理GoldenGate运行起来后,随着时间的推移可能会碰到各种各样的问题,下面就来介绍常见的异常现象以及常见的异常处理方法。9.1.1异常处理的一般步骤首先确定是GoldenGate的哪类进程有故障(是抽取,投递还是复制进程有问题),解决故障的一般思路如下。(1)通过GGSCIviewreport命令查找ERROR字样,确定错误原因并根据其信息进行排除。(2)通过GGSCIviewggsevt查看告警日志信息。(3)检查两端数据库是否正常运行,网络是否连通。(4)通过logdump工具对队列文件进行分析。9.1.2RAC单节点失败在RAC环境下,GoldenGate软件安装在共享目录下,可以通过任一个节点连接到共享目录,启动GoldenGate运行界面。如果其中一个节点失败,导致GoldenGate进程中止,可直接切换到另外一个节点继续运行。操作步骤如下。(1)以Oracle用户登录源系统(使用另外一个正常的节点)。(2)确认将GoldenGate安装的所在文件系统装载到另一节点相同目录。(3)确认GoldenGate安装目录属于Oracle用户及其所在组。(4)确认Oracle用户及其所在组对GoldenGate安装目录拥有读写权限。(5)进入GoldenGate安装目录。(6)执行./ggsci进入命令行界面。(7)执行startmgr启动MGR。第9章GoldenGate错误分析与处理125(8)执行starter*启动所有进程。检查各进程是否正常启动,即可进入正常复制。9.1.3Extract常见异常以下为列举的一些常见错误信息作参考用。Extract进程包括抽取与投递进程,投递进程报错大部分原因是由于网络故障。对于源数据库,抽取进程ext**如果变为abended,则可以通过在GGSCI中使用viewreport命令查看报告,可以通过搜索ERROR快速定位错误。一般情况下,抽取异常的原因是因为其无法找到对应的归档日志,可以通过到归档日志目录命令行下执行示例9-1:ls–ltarch_x_xxxx.arc查看该日志是否存在,如不存在则可能的原因如下。日志已经被压缩。GoldenGate无法自动解压缩,需要人工解压缩后才能读取。日志已经被删除。如果日志已经被删除,需要进行恢复才能继续复制。一般需要定期备份归档日志,并清除旧的归档日志。需要保证归档日志在归档目录中保留足够长时间之后,才能被备份和清除。即定期备份清除若干小时之前的归档,而不是全部归档。保留时间计算如下。某归档文件保留时间抽取进程处理完该文件中所有日志所需的时间。可以通过命令行或者GoldenGateDirectorWeb界面,运行infoextxxshowch命令查看抓取进程ext处理到哪条日志序列号。在此序列号之前的归档,都可以被安全的清除。抽取进程在抽取不支持的数据对象时也会abend,report文件会有详细的报错信息,根据report文件来定位错误信息然后再排错即可。下面再单独列出更多的几个故障。(1)Extract:Applicationfaildedtoinitialize(Win)。错误信息:runGGSCIcommandbuttheAlertwindowreportApplicationfaildedtoinitialize(0xc000026e)。GoldenGate在Windows平台上需要安装MicrosoftVisualC++2005SP1RedistributablePackage。如果是MicrosoftItanium平台,需要安装vcredist_IA64.exe。Windows2008需以下额外操作:右击‘cmd’(DOS),选择‘runasadministrator’,然后在该命令行窗口中启动MGR和Extract才能够读取数据库日志。将OGG安装为服务时(即运行“installADDSERVICE”),需要使用管理员权限,这样启动服务后即能访问日志。通过以下方法为运行MGR和Extract的用户添加读取日志文件的权限,右键单击文件叱咤风云:GoldenGate企业级运维实战126-property-security-edit-add。(2)Extract:Cannotloadprogram./ggsci…错误分析:请首先检查该OGGBuild是否与操作系统和数据库相符;其次如果是Aix请检查xLC版本是否符合10.0以上。另外,检查环境变量中动态库路径是否包含了数据库动态库目录,例如:示例9-2:exportLD_LIBRARY_PATH=$ORACLE_HOME/lib不同平台下的环境变量不同。AIXLIBPATH。Solaris、Linux等LD_LIBRARY_PATH。HP-UnixSHLIB_PATH。重设环境变量需重启Mgr和Ext/Rep进程。(3)Extract:Blocksizemismatch(8192/512)…裸设备的偏移量各操作系统默认为0,但AIX默认为4096。当创建裸设备时使用了-TO选项时,Oracle不会跳过4096字节而是直接从0开始读写。因此在AIX下使用裸设备时,出现此错误需要指定OGG从偏移量0开始读取。示例9-3:tranlogoptionsrawdeviceoffset0该参数其在实际环境中使用几率非常高,在以前版本中如果缺少此参数Extract立即终止,但新版本Extract会持续进行尝试,并不自动终止,需检查报告文件。(4)Extract:ORA-15000ASMconnectionerror该错误为OCI错误,表示Extract是在连接数据库时出现问题,根据错误信息判断为权限问题。首先在Extract参数中检查ASM相关参数tranlogoptionsasmusersys@+ASM1,asmpasswordoracle,再检查tnsnames.ora和listener.ora验证ASM实例配置是否正确,确认ASM用户具有SYSDBA权限;如果使用SYS,需要将ASM实例的init.ora中REMOTE_LOGIN_PASSWORDFILE参数设置为SHARED(多个数据库可以使用一个password文件,只有SYS用户可以远程登录)。使用sqlplus验证:示例9-4:sqlplussys/oracle@asm1assysdba;//可以登录sqlplussys/oracle@asm1;//报告15000错误(5)Extract:EncounteredSCNThatIsNotGreaterThanTheHighestSCNAlreadyProcessed…原因分析:在OracleRAC环境中,Extract会启动一个coordinator线程对各个节点上的操作进行根据SCN进行排序,它在交易提交后会等待THREADOPTIONSMAXCOMMITPROPAGATIONDELAY参数所定义时间来确认空闲节点没有交易,然后再第9章GoldenGate错误分析与处理127收集交易数据;写入该交易后如果空闲节点后来又读到了一个SCN号要小的交易,则会报告该错误。可能原因:各节点之间没有配置时钟同步。一个节点比另外一个节点慢(IO问题可能性较大)。解决办法:调整Extract参数:示例9-5:THREADOPTIONSMAXCOMMITPROPAGATIONDELAYmsecIOLATENCYmsecMAXCOMMITPROPAGATIONDELAY有效范围是0-90000ms,默认为3s(即3000ms)。GGSV9.x多了一个IOLATENCY参数,可以与上面参数一起加大等待时间。IOLATENCY默认为1.5s,最大值为180000。建议出现该错误后可以将此二参数设置为较大值,然后逐步降低获取最佳设置。需要补充说明的是,出现此错误后,因后面的交易可能已被写入日志,重启Extract可成功启动,但是可能出现如下问题:Extract会重写当前队列覆盖前面的交易数据,后面的DataPump进程可能会出现“abendwithincompatiblerecorderrors”错误终止(旧版本可能出现)。此问题的恢复步骤如下。①停止所有DataPump和Replicat,针对所有的Extract记录其WriteCheckpoint的队列Seqno。②对于每个Extract向下滚动一个队列:示例9-6:ALTEREXTRACT[name],ETROLLOVER启动Extract查看是否滚动到了下一个队列,记录其新队列seqno,应当是旧队列号+1。③修改DataPump从新的队列开始传输:示例9-7:ALTEREXTRACT[pump_name],EXTSEQNO#####EXTRBA0重启DataPump查看是否能够重启成功并从新的队列传输。④修改Replicat参数文件,加入或者打开HANDLECOLLISIONS,如果有GROUPTRANSOPS和MAXTRANSOPS请注释掉,启动Replicat,观察其是否能够读取新传输过来的队列如Replicat无法自动滚动到下一个队列,需要通过如下命令手工滚动:示例9-8:alterreplicat[replicat_name],EXTSEQNO#####EXTRBA0等待Replicat处理到结尾没有延迟时,可以关闭HANDLECOLLISIONS和恢复原来的叱咤风云:GoldenGate企业级运维实战128GROUPTRANSOPS和MAXTRANSOPS参数。⑤重新启动Replicat即可恢复正常复制。9.1.4网络故障如果MGR进程参数文件里面设置了autorestart参数,GoldenGate可以自动重启,无需人工干预。当网络不稳定或者发生中断时,GoldenGate负责产生远地队列的Pump进程会自动停止。此时,MGR进程会定期根据mgr.prm里面autorestart设置自动启动Pump进程以试探网络是否恢复。在网络恢复后,负责产生远程队列的Pump进程会被重新启动,GoldenGate的检查点机制可以保证进程继续从上次中止复制的日志位置继续复制。需要注意的是,因为源端的抽取进程(Capture)仍然在不断地抓取日志并写入本地队列文件,但是Pump进程不能及时把本地队列搬动到远地,所以本地队列文件无法被自动清除而堆积下来,需要保证足够容量的存储空间来存储堆积的队列文件。计算公式如下。存储容量单位时间产生的队列大小×网络故障恢复时间MGR定期启动抓取和复制进程参数配置参考:示例9-9:GGSCIeditparammgrport7809autorestarter*,waitminutes3,retries5,RESETMINUTES60每3分钟重试一次,5次重试失败以后等待60分钟,然后重新试三次。9.1.5Replicat进程常见异常对于目标数据库,投递进程repXX如果变为abended,则可以通过在GGSCI中使用viewreport命令查看报告,可以通过搜索ERROR快速定位错误。复制进程的错误通常为目标数据库错误,比如:数据库临时停机。目标表空间存储空间不够。目标表出现不一致。可以根据报告查看错误原因,排除后重新启动rep进程即可。需要注意一点:往往容易忽略UNDO表空间。如果DML语句中包含了大量的UPDATE和DELETE操作,则目标端UNDO的生成速度会很快,有可能填满UNDO表空间。典型错误(数据复制典型错误)如下:示例9-10:-SQLerror1403mapping2010-02-2513:20:08GGSWA
本文标题:《叱咤风云GoldenGate企业级运维实战》第9章__GoldenGate错误分析与处理
链接地址:https://www.777doc.com/doc-2831788 .html