`
hunxiejun
  • 浏览: 1170497 次
文章分类
社区版块
存档分类
最新评论

Oracle Golden Gate 系列六 -- 11gR2 Ora2Ora 单向复制 GG 示例

 
阅读更多

在前面几篇了看了GG 的安装配置的一些理论东西,在这篇来搭建一个Oracle 到Oracle 的一个Golden Gate 测试环境。

测试环境:

OS: Redhat 5.4 64bit

DB:Oracle 11.2.0.3 64bit

相关的理论知识参考:

Oracle Golden Gate 系列四 --GG 安装 与 卸载 理论知识

http://blog.csdn.net/tianlesoftware/article/details/6937183

示例采用GoldenGate典型的配置:

在Source端,配置一个管理进程, 添加一个Extract进程,添加一个本地队列路径,定义一个远端的接收队列路径。
在Target端,配置一个管理进程和添加一个Replicat进程,指定一个应用队列,即抽取进程定义的远端队列。


一.安装GG 软件

1.1 OS 和 DB 版本

[root@gg2 ~]# uname -a

Linux gg2 2.6.18-164.el5xen #1 SMP Tue Aug18 15:59:52 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

[root@gg2 ~]# cat /etc/redhat-release

Red Hat Enterprise Linux Server release 5.4(Tikanga)

SQL> select * from v$version whererownum=1;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise EditionRelease 11.2.0.3.0 - 64bit Production

1.2 安装GG

在source database 和 target database 都执行如下操作:

[root@gg2 ~]# su - oracle

gg2:/home/oracle> mkdir /u01/ggate

gg2:/home/oracle> cd /u01

gg2:/u01> ls

app ggate

fbo_ggs_Linux_x64_ora11g_64bit.tar OGG_WinUnix_Rel_Notes_11.1.1.1.0.pdf

fbo_ggs_Linux_x64_ora11g_64bit.zip README.txt

gg2:/u01> tar xvffbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/ggate

1.3 添加环境变量

在/home/oracle/.bash_profile文件里添加如下内容:

export PATH=/u01/ggate:$PATH

exportLD_LIBRARY_PATH=/u01/ggate:$LD_LIBRARY_PATH

export GGATE=/u01/ggate

注意我这里的GG 和Oracle 使用的是相同的用户,所以把GG 的变量加上就可以了。加载刚刚设置的环境变量:

gg2:/home/oracle> source/home/oracle/.bash_profile

1.4 使用ggsci工具,创建必要的目录

gg1:/u01/ggate> ggsci

--调用ggsci 工具

Oracle GoldenGate Command Interpreter forOracle

Version 11.1.1.1OGGCORE_11.1.1_PLATFORMS_110421.2040

Linux, x64, 64bit (optimized), Oracle 11gon Apr 21 2011 22:42:14

Copyright (C) 1995, 2011, Oracle and/or itsaffiliates. All rights reserved.

GGSCI (gg1) 1> create subdirs

--使用ggsci 工具创建目录

Creating subdirectories under currentdirectory /u01/ggate

Parameter files /u01/ggate/dirprm: created

Report files /u01/ggate/dirrpt: created

Checkpoint files /u01/ggate/dirchk: created

Process status files /u01/ggate/dirpcs: created

SQL script files /u01/ggate/dirsql: created

Database definitions files /u01/ggate/dirdef: created

Extract data files /u01/ggate/dirdat: created

Temporary files /u01/ggate/dirtmp: created

Veridata files /u01/ggate/dirver: created

Veridata Lock files /u01/ggate/dirver/lock: created

Veridata Out-Of-Sync files /u01/ggate/dirver/oos: created

Veridata Out-Of-Sync XML files/u01/ggate/dirver/oosxml: created

Veridata Parameter files /u01/ggate/dirver/params: created

Veridata Report files /u01/ggate/dirver/report: created

Veridata Status files /u01/ggate/dirver/status: created

Veridata Trace files /u01/ggate/dirver/trace: created

Stdout files /u01/ggate/dirout: created

GGSCI (gg1) 2>

以上就是GG 的安装,在source 和target database 都执行。

二.配置Source database

GoldenGate通过抓取源端数据库重做日志进行分析,将获取的数据应用到目标端,实现数据同步。因此,源数据库需要必须处于归档模式,并启用附加日志和强制日志。

2.1 归档模式、附加日志、强制日志

--查看

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE SUPPLEME FOR

------------ -------- ---

ARCHIVELOGNO NO

--修改

(1)archivelog

SQL>shutdown immediate

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open;

(2) force logging

SQL>alterdatabase force logging;

(3)supplemental log data

SQL>alterdatabase add supplemental log data;

2.2 Oracle 9i的_LOG_PARALLELISM参数

如果是Oracle 9i的数据库,还需要将_LOG_PARALLELISM 参数设置为1. 因为GG 不支持该值超过1.

If using OracleGoldenGate for an Oracle 9i source database, set the _LOG_PARALLELISMparameter to 1. Oracle GoldenGate does not support values higher than 1.

2.3 启用DDL 支持

GG虽然支持DDL,但是也是有限制的,具体参考:

Oracle Gloden Gate 系列三 --GG 支持与不支持的对象类型与操作 说明

http://blog.csdn.net/tianlesoftware/article/details/6933969

GG 支持DDL 也是通过创建一些table 来保存这些DDL 的信息,关于这些table 的具体说明,在如下链接的第二小节:启用GG 对DDL 操作的支持有详细说明:

Oracle Golden Gate 系列四 --GG 安装 与 卸载 理论知识

http://blog.csdn.net/tianlesoftware/article/details/6937183

对于这些存放DDL 信息表的管理的理论支持,参考如下链接的第四小结:Managing theOracle DDL replication environment。

Oracle Golden Gate 系列五 --GG 使用配置 说明

http://blog.csdn.net/tianlesoftware/article/details/6947973

这块的测试内容会另篇Blog进行测试。

2.3.1 禁用Recycle Bin

如果启用DDL 支持,必须关闭recycle bin。官网的解释如下:

If the recyclebin is enabled, the Oracle GoldenGate DDL trigger session receives implicitrecycle bin DDL operations that cause the trigger to fail.

Oracle 11g:

SQL> alter system set recyclebin=offscope=spfile;

System altered.

如果数据库是10g,需要关闭recyclebin并重启;或者手工purge recyclebin。

2.3.2 创建存放DDL 信息的user并赋权

SQL> create user ggate identified by ggate default tablespace users temporary tablespace temp;

User created.

SQL> grant connect,resource to ggate;

Grant succeeded.

SQL> grant execute on utl_file to ggate;

Grant succeeded.

退出所有使用Oracle 的session,然后使用SYSDBA权限的用户执行如下脚本:

gg1:/u01/ggate> echo $GGATE

/u01/ggate

--进入GG的目录,然后调用脚本:

gg1:/home/oracle> cd $GGATE

gg1:/u01/ggate> sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production onTue Nov 8 19:41:58 2011

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise EditionRelease 11.2.0.3.0 - 64bit Production

With the Partitioning, OLAP, Data Miningand Real Application Testing options

--脚本1:

SQL> @marker_setup.sql;

Marker setup script

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--输入我们之前创建的用户名:

Enter GoldenGate schema name:ggate

Marker setup table script complete, runningverification script...

Please enter the name of a schema for theGoldenGate database objects:

Setting schema name to GGATE

MARKER TABLE

-------------------------------

OK

MARKER SEQUENCE

-------------------------------

OK

Script complete.

--脚本2:

SQL> @ddl_setup.sql;

GoldenGate DDL Replication setup script

Verifying that current user has privilegesto install DDL Replication...

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: For an Oracle 10g source, the systemrecycle bin must be disabled. For Oracle 11g and later, it can be enabled.

--注意这里提示我们在10g里,必须关闭recycle bin,在11g以后的版本,可以不用关闭。

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--提示输入GG的用户:

Enter GoldenGate schema name:ggate

You will be prompted for the mode ofinstallation.

To install or reinstall DDL replication,enter INITIALSETUP

To upgrade DDL replication, enter NORMAL

--这里让我们选择安装模式: install 和 reinstall 选择INITIALSETUP

Enter mode of installation:INITIALSETUP

Working, please wait ...

Spooling to file ddl_setup_spool.txt

Checking for sessions that are holdinglocks on Oracle Golden Gate metadata tables ...

Check complete.

Using GGATE as a GoldenGate schema name,INITIALSETUP as a mode of installation.

Working, please wait ...

DDL replication setup script complete,running verification script...

Please enter the name of a schema for theGoldenGate database objects:

Setting schema name to GGATE

DDLORA_GETTABLESPACESIZE STATUS:

……

STATUS OF DDL REPLICATION

-------------------------------------------------------------------------------------------------------

SUCCESSFUL installation of DDL Replicationsoftware components

Script complete.

--脚本3:

SQL> @role_setup.sql;

GGS Role setup script

This script will drop and recreate the roleGGS_GGSUSER_ROLE

To use a different role name, quit thisscript and then edit the params.sql script to change the gg_role parameter tothe preferred name. (Do not run the script.)

You will be prompted for the name of aschema for the GoldenGate database objects.

NOTE: The schema must be created prior torunning this script.

NOTE: Stop all DDL replication beforestarting this installation.

--同样输入GG用户名:

Enter GoldenGate schema name:ggate

Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.

Role setup script complete

Grant this role to each user assigned tothe Extract, GGSCI, and Manager processes, by using the following SQL command:

--这里提示我们赋权给相关的用户:

GRANT GGS_GGSUSER_ROLE TO<loggedUser>

where <loggedUser> is the userassigned to the GoldenGate processes.

--脚本4:赋权

SQL> grant GGS_GGSUSER_ROLE to ggate;

Grant succeeded.

--脚本5:

SQL> @ddl_enable.sql;

Trigger altered.

注意这里脚本创建的table都是使用默认的名称,当然也可以修改这些table的默认名,具体这块参考之前的文档中的说明。

三.测试GG

经过第一和第二节的配置,GG 的配置基本完成,这里我们开始测试GG。

注意:

(1) 目标库的用户名和对象名称可以与源端不同,关键在于配置文件中要能够正确匹配。

(2) 配置源和目标两端tnsnames,保持互联互通。

3.1 在Source 和 Target database上创建测试用户

--source database

SQL> create user sender identified by oracle default tablespace users temporary tablespace temp;

User created.

SQL> grant connect,resource,dba tosender;

Grant succeeded.

--target database

SQL> create user receiver identified byoracle default tablespace users temporary tablespace temp;

User created.

SQL> grant connect,resource,dba toreceiver;

Grant succeeded.

3.2 在Source 和Target 上配置Manager

gg1:/home/oracle> cd $GGATE

gg1:/u01/ggate> ggsci

Oracle GoldenGate Command Interpreter forOracle

Version 11.1.1.1OGGCORE_11.1.1_PLATFORMS_110421.2040

Linux, x64, 64bit (optimized), Oracle 11gon Apr 21 2011 22:42:14

Copyright (C) 1995, 2011, Oracle and/or itsaffiliates. All rights reserved.

GGSCI (gg1) 1> info all

ProgramStatus Group Lag Time Since Chkpt

MANAGERSTOPPED

GGSCI (gg1) 2> edit params mgr

PORT 7809

--这里我们指定了端口,然后:wq 保存退出。

GGSCI (gg1) 3> start manager

Manager started.

以上是在Source 库上执行的,在Target 库上执行同样的操作。

3.3 配置SourceDB 的复制队列

3.3.1 先连接到数据库,测试连接:

GGSCI (gg1) 10> dblogin useridggate@gg1, password ggate

Successfully logged into database.

3.3.2 增加一个抽取:

GGSCI (gg1) 11> add extract ext1,tranlog, begin now

2011-11-08 20:36:47 INFOOGG-01749 Successfully registeredEXTRACT EXT1 to start managing log retention at SCN 1121060.

EXTRACT added.

GGSCI (gg1) 12> add exttrail /u01/ggate/dirdat/lt, extract ext1

EXTTRAIL added


修改抽取进程ext1参数:

GGSCI (gg1) 13> edit params ext1

extract ext1

userid ggate@gg1, password ggate

rmthost gg2, mgrport 7809

rmttrail /u01/ggate/dirdat/lt

ddl include mapped objname sender.*;

table sender.*;

GGSCI (gg1) 14> info all

ProgramStatus Group Lag Time Since Chkpt

MANAGERRUNNING

EXTRACTSTOPPED EXT1 00:00:00 00:03:26

3.4 配置TargetDB 同步队列

3.4.1 在Target 端添加checkpoint表:

GGSCI (gg2) 6> edit params ./GLOBAL

GGSCHEMA ggate

CHECKPOINTTABLE ggate.checkpoint

添加如上2条记录。

GGSCI (gg2) 12> dblogin userid ggate@gg2,password ggate

Successfully logged into database.

--说明,这个用户是在Source 库启用DDL 创建的,我在Target 库也创建了这个用户。

GGSCI (gg2) 13> add checkpointtable ggate.checkpoint

Successfully created checkpoint tableGGATE.CHECKPOINT.

3.4.2 创建同步队列

GGSCI (gg2) 14> add replicat rep1,exttrail /u01/ggate/dirdat/lt, checkpointtable ggate.checkpoint

REPLICAT added.

GGSCI (gg2) 15> edit params rep1

replicat rep1

ASSUMETARGETDEFS

userid ggate@gg2,password ggate

discardfile /u01/ggate/dirdat/rep1_discard.txt,append, megabytes 10

DDL

map sender.*, target receiver.*;

添加如上内容。

3.5开启同步

3.5.1 Source DB:

GGSCI (gg1) 15> start extract ext1

Sending START request to MANAGER ...

EXTRACT EXT1 starting

GGSCI (gg1) 16> info all

ProgramStatus Group Lag Time Since Chkpt

MANAGERRUNNING

EXTRACTSTOPPED EXT1 00:00:00 00:14:16

GGSCI (gg1) 17> info all

ProgramStatus Group Lag Time Since Chkpt

MANAGERRUNNING

EXTRACTRUNNING EXT1 00:14:26 00:00:02

3.5.2 Target DB

GGSCI (gg2) 16> start replicat rep1

Sending START request to MANAGER ...

REPLICAT REP1 starting

GGSCI (gg2) 17> info all

ProgramStatus Group Lag Time Since Chkpt

MANAGERRUNNING

REPLICATRUNNING REP1 00:00:00 00:00:04

3.6 测试Data 复制

我们在Source DB上的sender 用户下创建一张表,然后看这张表是否同步到了Target DB的receiver用户下。

--Source DB:

SQL> conn sender/oracle;

Connected.

SQL> create table dave as select * fromsys.all_users;

Table created.

--Target DB:

SQL> conn receiver/oracle;

Connected.

SQL> select count(*) from dave;

COUNT(*)

----------

32

数据同步过来了,因为我们启用了DDL的支持,所以这里把表给复制过来了。

现在我们在Source DB上在插入一些记录,在验证下GG的同步情况:

SQL> insert into dave select * fromsys.all_users;

32 rows created.

SQL> commit;

Commit complete.

在Target DB 验证:

SQL> select count(*) from dave;

COUNT(*)

----------

32

SQL> /

COUNT(*)

----------

64

同步正常,以上就是Oracle to Oracle 下的一个GG 单向复制示例。有关GG的更多内容会继续测试。

-------------------------------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: tianlesoftware@gmail.com

Skype: tianlesoftware

-------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)

DBA 超级群:63306533(满); DBA4 群:83829929(满) DBA5群: 142216823(满)

DBA6 群:158654907(满) DBA7 群:69087192(满)DBA8 群:172855474

DBA 超级群2:151508914 DBA9群:102954821 聊天 群:40132017(满)

分享到:
评论

相关推荐

    Goldengate 12c Ora2Ora 典型模式搭建案例

    2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 7. 检查点表配置 8. OGG单向复制测试 9. OGG 双向复制测试 文档打开密码 tianlesoftware

    OGG 12c Ora2Ora Pump模式搭建最佳案例

    标题中的"OGG 12c Ora2Ora Pump模式搭建最佳案例"明确指出了本文内容将会详细介绍如何搭建Oracle GoldenGate(OGG)版本12c中的Ora2Ora Pump模式。OGG是一种广泛使用的企业级数据集成、复制和数据质量解决方案,而...

    visulate-ora2pg:适用于Ora2Pg的Docker映像和单页Web应用程序

    震动Ora2Pg 适用于Ora2Pg的Docker映像和单页Web应用程序 概述 是一个开放源代码Perl脚本,用于将Oracle数据库迁移到PostgreSQL兼容模式。 它连接一个Oracle数据库,对其进行扫描以提取其结构或数据,然后生成SQL...

    oracle驱动DBD-Oracle-1.27

    Oracle驱动DBD-Oracle-1.27是Perl编程语言中用于与Oracle数据库交互的模块。这个版本的DBD(Database Driver)专为Oracle数据库设计,允许开发人员使用Perl语言编写脚本来执行查询、更新和其他数据库操作。在本文中...

    OGG 12c Ora2Ora Pump模式搭建案例

    1. 安装环境说明 2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 9. 检查点表配置 8. OGG单向复制测试 9. OGG 双向复制测试

    postgresql dba学习与工作 软件合集

    ora2pg-21.1.tar.bz2 ora2pg-21.1.tar.gz ora2pg.conf oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm oracle-instantclient-devel-21.1.0.0.0-1.x86_64.rpm oracle-instantclient-jdbc-21.1.0.0.0-1....

    Goldengate 12c Ora2Ora Pump模式搭建案例

    1. 安装环境说明 2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 4. 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 OGG 使用Pump单向复制测试 文档打开密码 tianlesoftware

    从Oracle迁移数据到MySql-工具oracle2mysqlcn

    数据迁移 oracle转mysql oracle数据迁移 mysql数据迁移 从Oracle迁移数据到MySql-工具oracle2mysqlcn 从Oracle迁移数据到MySql方法大全文章地址: http://www.bywei.cn/post/111.html

    ora2pg-18.2.zip_oracle

    2. **扫描**:ora2pg会扫描Oracle数据库的模式,识别表、视图、索引、触发器、存储过程等元素。 3. **分析**:根据扫描结果,ora2pg会分析每个对象,确定如何在PostgreSQL中适当地映射它们。 4. **转换**:ora2pg将...

    ora2pg使用指南1

    2. **用户和组的授权/权限导出**: 除了结构,ora2pg 还支持导出用户的权限设置,这对于保持数据库迁移后的安全性和访问控制至关重要。这意味着用户角色和权限将在 PostgreSQL 中得到精确的复制。 3. **筛选表的导出...

    ora2pg完整安装包.zip

    这个"ora2pg完整安装包.zip"包含了进行迁移过程所需的所有组件,包括ora2pg本身以及一系列的依赖库和软件。 ora2pg是开源软件,它的主要功能是通过SQL查询将Oracle数据库的数据导出到PostgreSQL格式,便于数据迁移...

    ora2pg-20.0.tar.bz2

    安装ora2pt [root@rhel6 ora2pg-20.0]$ perl Makefile.PL [root@rhel6 ora2pg-20.0]# make && make install

    ora2pg-10.1

    ora2pg,很好oracle迁移到postgreSQL的迁移工具

    手把手教你在Windows上安装ora2pg

    ### 手把手教你在Windows上安装ora2pg #### 知识点一:ora2pg简介与作用 - **ora2pg**是一款免费且开源的数据迁移工具,它能够有效地将Oracle数据库中的元数据和数据迁移到PostgreSQL数据库。这对于那些希望从...

    Oracle与Mysql表相互转化工具及问题说明

    压缩包内包含ora2mysql工具及mysql2ora工具。 分别支持oracle转mysql库及mysql库转oracle库。 其中有个文档简单描述了在Oracle为64位情况下,工具连接oracle时会出现oci.dll找不到或者ora-12514的错误。 这需要oracle...

    oracle数据库转mysql数据库免费工具

    2. **兼容性**:该工具应该能够处理Oracle与MySQL之间的语法差异,确保数据在转换过程中不会丢失或变形。 3. **预览与过滤**:在迁移之前,用户可能需要预览转换结果,并可以设定条件过滤某些数据,只迁移需要的...

    ora2pg-15.2.tar.gz

    ora2pg是一款强大的工具,专为数据库迁移而设计,它能够帮助用户将PostgreSQL数据库无缝迁移到Oracle系统中。在数据库管理系统(DBMS)的世界中,数据迁移是一项关键任务,尤其是在企业级应用中,可能需要根据业务...

    ora2pg-24.3.tar.gz

    3. **安全性和权限**:ora2pg会尽可能地复制Oracle的权限模型到PostgreSQL,包括用户、角色和对象权限。 4. **报告和日志**:ora2pg生成详细的迁移报告,包括迁移进度、错误和警告,帮助用户监控和调试迁移过程。 ...

    Oracle向PostgreSQL移植实例

    【Oracle向PostgreSQL移植实例】涉及的是从Oracle数据库迁移到PostgreSQL数据库的过程,这通常是因为业务需求、成本效益分析或技术栈的改变。以下是对移植过程中关键知识点的详细解释: 1. **数据库初始化**: - ...

    Ora2PgDump:Oracle 到 PostgreSQL 转储

    Oracle 到 PostgreSQL 转储 此实用程序来自需要以合理的速度将 Oracle 数据转换为 PostgreSQL 数据。 这个项目相当实用,但它是一个开始。 它不创建表; 目标表必须已经存在。 目标列名称必须与查询列名称匹配(列...

Global site tag (gtag.js) - Google Analytics