`

oracle goldengate零停机初始化的技巧

 
阅读更多
前言
在实施goldengate过程中,初始化的方案选择是一个重要的环节,尤其对一个7*24小时的系统环境来讲。一个出色的goldengate的实施不应该以停机时间作为代价,合适的初始化方法完全可以做到零停机。 
如果事务不间断进行,如何保证初始化过程中事务的完整性和数据的准确性呢(静态的初始化环境无需多讲)?实现方法还是多样的,从工作机制上来讲,归纳起来主要有2种。
1. 利用 Keys + Handlecollisions
2.利用 commit SCN/CSN
Handlecollisions
Handlecollisions参数依赖于表上的Key(Primary key/Unique key)来对数据进行重复行和缺失行的处理,用在数据初始化过程中保证数据的一致性,gg文档上的初始化办法,比如initial load,都是用的这种办法。但是这种办法在实际的工程实施中是有相当大的限制。
首先,该初始化办法性能比较糟糕,对于大型数据库来讲,并不合适。更严重的是,它有很大的缺陷性。(引自metalink doc):
1. When there is primary key update (PKUpdate), the HANDLECOLLISIONS method may lose data. The solution in the case of a primary key update is for Extract to fetch whole row by making a flashback query. However, this is not efficient and may not be possible in certain environments.
2. When a table does not have any type of key, HANDLECOLLISIONS may introduce duplicate rows in the table. One workaround is to add a primary or unique key to the target table.
3. The exact timestamp when the initial load was started may not be known (and different tables may have different start times), so it is almost inevitable that HANDLECOLLISIONS will be used for certain records un-necessarily. This could mask a real data integrity problem.
在实际的工程实施中,个人不推荐使用基于Keys + Handlecollisions模式的初始化办法。
commit SCN
那么基于commit SCN的初始化办法是否可靠呢?如果你用过逻辑备库,Stream等东西,退一步讲,抑或是做过一致性的导入导出,应该很清楚SCN在版本一致性方面的重要作用。
问题简单化,goldengate初始化的的核心问题就变成了如何联机进行基于SCN一致性的同步。实现的工具和方法还是不少的。
1. 一致性的exp和imp
2. 一致性的expdp和impdp
通过exp和expdp的一致性参数(例如flashback_scn),导出特定SCN点上的一致性版本,使用这种方法初始化存在一个问题,就是构造一致性数据过程中会对undo造成比较大的压力,尤其对大型数据库来讲,可以通过分割的datapump来实现数据的分组同步,分散undo的压力,然后合适时间将分组的datapump合并即可。
该方法的优点就是可以跨平台和跨版本初始化。
3.基于备份的表空间搬移(Transportable Tablespace from Backup with RMAN)
为何是基于备份的表空间搬移呢? 单纯的表空间搬移需要数据库或者表空间read only,copy数据文件的这段时间应用是需要停止的,因此表空间搬移并不适合7*24小时的初始化环境。
基于备份的表空间搬移的一个最大的优势就是零停机,而且支持异构平台和跨版本(对于不同字节顺序的source-target平台初始化,需要进行convert),但是需要10g以上版本才支持,同样受到表空间搬移的那些限制条件。
4. Dataguard
Dataguard适合同平台同版本的系统环境初始化。
当然,在实际工程中,还会有别的一些处理办法,或者各种办法之间有交融,作为方案制定者和实施者,你所能驾驭的,就是对你来说合适的。

参考至:http://www.easyora.net/blog/goldengate_initialization.html
如有错误,欢迎指正
邮箱:czmcj@163.com
分享到:
评论

相关推荐

    [Expert.Oracle.GoldenGate(第1版)].源代码

    2. **安装与配置**:学习如何在源数据库和目标数据库上安装和配置GoldenGate,包括创建必要的操作系统用户、设置环境变量、安装软件包和初始化参数文件。 3. **数据抽取(Extract)**:了解如何定义和启动Extract...

    Oracle goldengate 数据迁移 从 mysql到mysql 实战.docx

    ### Oracle GoldenGate 数据迁移实战:从 MySQL 到 MySQL #### 概述 Oracle GoldenGate (OGG) 是一款强大的数据库复制工具,支持多种数据库平台之间的数据迁移与同步。本实战文档详细介绍了如何利用 OGG 从 MySQL ...

    goldengate 使用说明

    无论是对于需要实现实时数据同步的组织还是希望提升数据可用性和减少停机时间的企业而言,Oracle GoldenGate 都是一款不可或缺的工具。通过利用其丰富的功能和高级特性,用户可以轻松地应对复杂多变的IT环境挑战,...

    基于GoldenGate的实时数据同步平台架构.pdf

    数据库升级迁移过程中,OGG提供了零停机的数据迁移和升级方案,确保系统迁移或数据升级时业务不受影响。同时,它还支持回退方案,当迁移出现问题时,可以快速同步新旧数据库,保证数据一致性。 **架构演进历程**: ...

    基于GoldenGate产品的实时数据同步平台架构演进.pdf

    4. **零停机迁移**:在数据库升级或系统迁移过程中,OGG提供了零停机的数据迁移方案,确保业务连续性。 5. **灾难恢复与双活数据库同步**:OGG支持构建灾难恢复和双活数据库环境,以应对潜在的系统故障。 【使用...

    Oracle运维最佳实践-上

    正常启动Oracle数据库涉及监听器、初始化参数文件、系统全局区(SGA)和后台进程的启动。关闭数据库时,需按照正常、快速和强制三种模式进行,确保数据一致性。 三、性能监控与优化 1. SQL性能分析:通过V$视图(如V$...

    Oracle DBA 两日速成班 培训课程

    这可能包括RAC(Real Application Clusters)、Data Guard、GoldenGate等技术,它们可以帮助企业在数据库故障时实现零停机时间。 权限管理与安全性也是重要的话题。课程会教授如何创建和管理用户,分配权限,以及...

    ORACLE DBA 数据库维优

    理解等待事件、使用 Explain Plan 分析SQL执行路径,以及适时调整初始化参数都是调优的关键步骤。 3. **运维知识**:作为Oracle DBA,掌握运维知识至关重要,这包括定期备份与恢复策略、安全设置、权限管理、性能...

    XTTS-oracle数据库迁移

    通过数据泵技术进行初始化,适用于小到中等规模的数据量。 ##### 2.3 指向新数据库的应用迁移 当应用程序需要指向新的数据库环境时,XTTS是一种高效的选择。 ##### 2.4 迁移前期准备 包括但不限于属性调整、数据...

    Oracle数据库管理员技术指南

    配置包括网络服务、初始化参数设置、安全策略等,这些都是保证数据库正常运行的基础。 备份与恢复是数据库管理的重要环节。Oracle支持多种备份策略,如物理备份、逻辑备份、RMAN(恢复管理器)备份等。理解这些备份...

    oracle学习笔记

    其中,创建过程包括设置数据库类型、确定存储选项、分配表空间和数据文件,以及配置初始化参数文件。 四、表空间与数据文件 在Oracle中,表空间是逻辑存储单元,由一个或多个数据文件组成。数据文件是实际存储数据...

    ORACLE数据库跨平台迁移技术的研究——目标端数据库转换.pdf

    执行该命令时,数据库需处于只读状态,RMAN会复制数据文件,生成脚本文件和初始化参数文件,随后在目标数据库上执行这个脚本完成转换。 2. **`convert database`命令特性** - 仅传输数据表空间的数据文件,不包括...

    roacle课题笔记

    配置包括网络配置、数据库实例创建、初始化参数设置等。备份是为了防止数据丢失,Oracle提供了多种备份策略,如物理备份、逻辑备份和RMAN备份。恢复技术如RMAN(恢复管理器)和闪回技术,可以在系统故障后迅速恢复...

Global site tag (gtag.js) - Google Analytics