GoldenGate技术

维护经验

一、日常维护

1、配置定时删除过期队列

用于自动删除过期队列,节省硬盘空间。建议配置在Mgr进程中,可集中管理所有队列。在mgr参数中加入以下行:purgeoldextracts /<goldengate安装目录>/dirdat/*, usecheckpoint, minkeepdays 7。其中,第一个参数为队列位置,*可匹配备份中心所有队列文件;第二个参数表示是首先要保证满足检查点需要,不能删除未处理队列;第三个参数表示最小保留多少天,后面的数字为天数。例如,如果希望只保留队列/ggs/dirdat/xm文件3天,可以配置如下:purgeoldextracts /ggs/dirdat/xm, usecheckpoint, minkeepdays 3。说明:Mgr进程参数需重启Mgr进程后生效,临时停止mgr进程并不影响数据复制。

2、配置自动定时重启进程

用于自动恢复由于网络临时中断、数据库或系统维护等原因造成的进程终止,降低人工工作量。建议在Mgr进程配置,在mgr参数文件加入以下行:AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60。以上参数表示每5分钟尝试重新启动所有进程,共尝试三次。以后每60分钟清零,再按照每5分钟尝试一次共试3次。说明:需重启Mgr进程使参数生效,可查询ggserr.log文件查看重启尝试信息

3、配置长交易告警

可以在extract进程中配置长交易告警,参数如下所示:warnlongtrans 12h, checkintervals 10m。以上表示GoldenGate会每隔10分钟检查一下长交易,如果有超过12个小时的长交易,GoldenGate会在根目录下的ggserr.log里面加入一条告警信息。通过察看ggserr.log或者在ggsci中执行view ggsevt命令查看这些告警信息,可以配置Director或自定义脚本发送告警邮件。

4、增加复制表的步骤

停止Extract/Data Pump/Replicat进程,注意停止Extract时检查长交易和归档日志,在源和目标建立复制表,在源端为该表添加附加日志,修改Extract/Data Pump/Replicat参数中复制范围包含该表,重启Extract/Data Pump/Replicat进程,可以开始对新增表进行操作,注意:以上操作仅限于DML复制。如配置了DDL复制则可以自动生成附加日志和在目标端创建表结构。

二、常见故障处理

故障处理的一般步骤:首先确定是GoldenGate的哪类进程有故障(是抽取,投递还是复制进程有问题),解决故障的一般思路如下。(1)通过GGSCI>view report命令查找ERROR字样,确定错误原因并根据其信息进行排除。(2)通过GGSCI>view ggsevt查看告警日志信息。(3)检查两端数据库是否正常运行,网络是否连通。(4)通过logdump工具对队列文件进行分析。

1、用户不存在

问题描述:2010-05-02 10:45:20 GGS ERROR 2001 Oracle GoldenGate Delivery for Oracle, rcrmheal.prm: Fatal error executing DDL replication: error [Error code [1918], ORA-01918: user 'KINGSTAR' does not exist, SQL /* GOLDENGATE_DDL_REPLICATION */ alter user kingstar account unlock ], no error handler present.

问题分析:根据分析日志可以确定是目标端不存在该用户导致的故障。

问题处理:方法1、如果不需要同步该用户,可以在目标端去掉掉映射该用户,再重启进程。 例如去掉:MAP KINGSTAR.*, TARGET CRMKINGSTAR.*; 方法2、在目标端手工创建该用户,再重启进程。

2、表不存在

问题描述:2010-05-10 15:02:12 GGS ERROR 101 Oracle GoldenGate Delivery for Oracle, rcrmheal.prm: Table CRMOLAP.TB_FT_OFSTK_CLIENT_BY_DAY does not exist in target database.

问题分析:根据分析日志可以确定是目标端不存在该表导致的故障。

问题处理:方法1、如果不需要同步该表,可以在目标端排除掉该表,再重启进程。例如添加:MAPEXCLUDE OLAP.TB_FT_OFSTK_CLIENT_BY_DAY 方法2、在目标端手工创建该表, 异构数据库还需要重新生成表结构定义文件,再重启进程。

3、表空间不足

问题描述:2010-02-01 17:19:18 GGS ERROR 103 Discard file (./dirrpt/rep1.dsc) exceeded max bytes (10000000).

问题分析:根据错误可以看出直接引起GoldenGate进程停止的原因是discard文件被写满了,是什么原因造成discard文件被写满的呢?从discard文件中我们看到是发生了ORA-01653: unable to extend 错误,看到这里我相信大家都知道该怎么处理了吧,我们只要扩展这个aaa.TB_LVY_TEMPINVOIC对象所在的表空间的大小即可。

问题处理:1、找到相关对象存储的表空间; 例如:select owner,table_name,tablespace_name from dba_tables 2、执行表空间扩展 例如:ALTER TABLESPACE tbs_03 ADD DATAFILE 'tbs_f04.dbf' SIZE 100K AUTOEXTEND ON NEXT 10K MAXSIZE 100K。

4、磁盘空间不足

问题描述:2010-05-07 04:05:31 GGS ERROR 103 Oracle GoldenGate Collector: Unable to write to file "./dirdat/crm/fl003629" (error 28, No space left on device). 2010-05-07 04:05:31 GGS ERROR 190 PROCESS ABENDING.

问题分析:根据分析日志可以确定是磁盘空间不足导致的故障。

问题处理:划分足够的磁盘空间,再重启进程。