GoldenGate

GoldenGate技术简介

Oracle GoldenGate 是一个实现异构 IT 环境间数据实时数据集成和复制的综合软件包。该产品集支持高可用性解决方案、实时数据集成、事务更改数据捕获、运营和分析企业系统之间的数据复制、转换和验证。Oracle GoldenGate 12c 通过简化配置和管理、加强与 Oracle Database 的集成、支持云环境、扩展异构性以及增强安全性,实现了极致性能。

GoldenGate软件提供了一个单一的平台,这个平台可以为任何企业环境实现秒一级的灾难备份。GoldenGate是一种基于日志的结构化数据复制 方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标 数据库同步、双活。

产品定位

零宕机时间数据库升级和迁移。

满足用户亚秒级实时数据的需求。

可持续的数据高可用性和实时商务智能。

异构平台及跨操作系统实时数据同步。

对源系统和目标系统是非侵入式的。

技术服务

Oracle GoldenGate 是一个实现异构 IT 环境间数据实时数据集成和复制的综合软件包。该产品集支持高可用性解决方案、实时数据集成、事务更改数据捕获、运营和分析企业系统之间的数据复制、转换和验证。Oracle GoldenGate 12c 通过简化配置和管理、加强与 Oracle Database 的集成、支持云环境、扩展异构性以及增强安全性,实现了极致性能。

利用捕捉进程(Extract Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate TDM自定义的中间格式存放在队列文件(trail file)中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点, 记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止开恢复后可从检查点位置继续复制。

目标系统接受数据变化开缓存到GoldenGate TDM队列当中,队列为系列临时存储数据变化的文件,等待投递迚程读取数据。

GoldenGate TDM投递过程(replicat process)从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。

由此可见,GoldenGate TDM是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate TDM将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达10:1的压缩率对数据迚行压缩, 可以大大降低带宽需求。在目标端,GoldenGate TDM可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库 是活动的。

维护经验

一、日常维护

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

用于自动删除过期队列,节省硬盘空间。建议配置在Mgr进程中,可集中管理所有队列。在mgr参数中加入以下行:purgeoldextracts //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.

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

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