在前面几篇了看了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(满)
分享到:
相关推荐
2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 7. 检查点表配置 8. OGG单向复制测试 9. OGG 双向复制测试 文档打开密码 tianlesoftware
标题中的"OGG 12c Ora2Ora Pump模式搭建最佳案例"明确指出了本文内容将会详细介绍如何搭建Oracle GoldenGate(OGG)版本12c中的Ora2Ora Pump模式。OGG是一种广泛使用的企业级数据集成、复制和数据质量解决方案,而...
震动Ora2Pg 适用于Ora2Pg的Docker映像和单页Web应用程序 概述 是一个开放源代码Perl脚本,用于将Oracle数据库迁移到PostgreSQL兼容模式。 它连接一个Oracle数据库,对其进行扫描以提取其结构或数据,然后生成SQL...
Oracle驱动DBD-Oracle-1.27是Perl编程语言中用于与Oracle数据库交互的模块。这个版本的DBD(Database Driver)专为Oracle数据库设计,允许开发人员使用Perl语言编写脚本来执行查询、更新和其他数据库操作。在本文中...
1. 安装环境说明 2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 9. 检查点表配置 8. OGG单向复制测试 9. OGG 双向复制测试
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....
1. 安装环境说明 2. 配置ORACLE_HOME和ORACLE_SID 3. 设置Library 路径 4. 安装OGG 5. 开启归档模式、强制日志、附加日志 6. 启用DDL 的支持 OGG 使用Pump单向复制测试 文档打开密码 tianlesoftware
数据迁移 oracle转mysql oracle数据迁移 mysql数据迁移 从Oracle迁移数据到MySql-工具oracle2mysqlcn 从Oracle迁移数据到MySql方法大全文章地址: http://www.bywei.cn/post/111.html
2. **扫描**:ora2pg会扫描Oracle数据库的模式,识别表、视图、索引、触发器、存储过程等元素。 3. **分析**:根据扫描结果,ora2pg会分析每个对象,确定如何在PostgreSQL中适当地映射它们。 4. **转换**:ora2pg将...
2. **用户和组的授权/权限导出**: 除了结构,ora2pg 还支持导出用户的权限设置,这对于保持数据库迁移后的安全性和访问控制至关重要。这意味着用户角色和权限将在 PostgreSQL 中得到精确的复制。 3. **筛选表的导出...
这个"ora2pg完整安装包.zip"包含了进行迁移过程所需的所有组件,包括ora2pg本身以及一系列的依赖库和软件。 ora2pg是开源软件,它的主要功能是通过SQL查询将Oracle数据库的数据导出到PostgreSQL格式,便于数据迁移...
安装ora2pt [root@rhel6 ora2pg-20.0]$ perl Makefile.PL [root@rhel6 ora2pg-20.0]# make && make install
ora2pg,很好oracle迁移到postgreSQL的迁移工具
### 手把手教你在Windows上安装ora2pg #### 知识点一:ora2pg简介与作用 - **ora2pg**是一款免费且开源的数据迁移工具,它能够有效地将Oracle数据库中的元数据和数据迁移到PostgreSQL数据库。这对于那些希望从...
压缩包内包含ora2mysql工具及mysql2ora工具。 分别支持oracle转mysql库及mysql库转oracle库。 其中有个文档简单描述了在Oracle为64位情况下,工具连接oracle时会出现oci.dll找不到或者ora-12514的错误。 这需要oracle...
2. **兼容性**:该工具应该能够处理Oracle与MySQL之间的语法差异,确保数据在转换过程中不会丢失或变形。 3. **预览与过滤**:在迁移之前,用户可能需要预览转换结果,并可以设定条件过滤某些数据,只迁移需要的...
ora2pg是一款强大的工具,专为数据库迁移而设计,它能够帮助用户将PostgreSQL数据库无缝迁移到Oracle系统中。在数据库管理系统(DBMS)的世界中,数据迁移是一项关键任务,尤其是在企业级应用中,可能需要根据业务...
3. **安全性和权限**:ora2pg会尽可能地复制Oracle的权限模型到PostgreSQL,包括用户、角色和对象权限。 4. **报告和日志**:ora2pg生成详细的迁移报告,包括迁移进度、错误和警告,帮助用户监控和调试迁移过程。 ...
【Oracle向PostgreSQL移植实例】涉及的是从Oracle数据库迁移到PostgreSQL数据库的过程,这通常是因为业务需求、成本效益分析或技术栈的改变。以下是对移植过程中关键知识点的详细解释: 1. **数据库初始化**: - ...
Oracle 到 PostgreSQL 转储 此实用程序来自需要以合理的速度将 Oracle 数据转换为 PostgreSQL 数据。 这个项目相当实用,但它是一个开始。 它不创建表; 目标表必须已经存在。 目标列名称必须与查询列名称匹配(列...