ORACLE GoldenGate在Windows与AIX平台ORACLE的单向、双向数据传输配置及其测试
第1章...... GoldenGate概述
1.1 GoldenGate技术原理
1.2 GoldenGate可靠的复制
1.3 GoldenGate支持操作系统和数据库类型
第2章...... 安装GoldenGate
2.1 安装GoldenGate环境
2.2 分别在源数据库,目标数据库安装GoldenGate
2.2.1 下载GoldenGate
2.2.2 解压
2.2.3 安装GoldenGate
2.3 同时在目标数据库安装GoldenGate
2.3.1 下载64位AIX平台的Goldengate软件
2.3.2 下载后,如下图:
2.3.3 用FTP把下载的GoldenGate软件上传到目标数据库服务器上
2.3.4 在目标数据库上进行安装GoldenGate
第3章...... 把源数据库的数据同步到目标数据库中
3.1 设置ORACLE_HOME,ORACLE_SID环境变量
3.2 在源数据库ora01上打开归档日志及其辅助日志
3.3 在源数据库,目标数据库创建GoldenGate GLOBALS参数文件
3.3.1 在源数据库创建
3.3.2 创建Goldengate manager服务
3.4 在目标数据库安装上面步骤创建manager
3.4.1 在目标数据库配置manager
3.4.2 启动manager:
3.5 在源数据库,目标数据库配置mgr,启动manager进程
3.5.1 配置manager服务的mgr配置文件
3.5.2 启动mgr
3.6 同样在目标数据库配置mgr文件
3.6.1 创建mgr文件
3.6.2 启动mgr:
3.7 测试把源数据库数据同步到目标数据库数据库上
3.7.1 在源数据库创建golden01数据库用户,用来测试数据传输
3.7.2 执行GoldenGate的测试脚本,创建表
3.7.3 插入数据脚本
3.7.4 在goldengate中用oracle用户登陆数据库
3.7.5 增加需要传输的用户表
3.7.6 在目标数据库创建用户及其表结构
3.8 用goldengate中的direct load方式导入数据到目标数据库的golden02用户表上
3.8.1 在源数据库配置一个extract进程 einiAA
3.8.2 在目标数据库端配置一个replicat进程,名叫riniBB
3.8.3 在源数据库执行初始化过程
3.8.4 验证目标数据库端的golden02用户表数据是否和源数据库一样
第4章...... 把源数据库的修改数据同步到目标数据库中
4.1 在源数据库配置一个EXTRACT进程及配置其文件
4.1.1 配置EXTRACT文件
4.1.2 在GGSCI.exe增加一个EXTRACT进程
4.2 配置data pump
4.2.1 在源数据库端添加一个pump进程,epmpAA文件。
4.2.2 在源数据库的ggsci中增加extract进程
4.2.3 在源数据库执行RMTTRAIL
4.3 启动data pump capture process
4.4 在目标数据库中创建goldengate专属用户gate02及其表
4.5 在目标数据库配置replicat进程
4.5.1 在ggsci增加一个replicat进程,如下图
4.5.2 编辑配置replicat文件
4.6 启动replicat进程
4.7 测试检查同步结果
4.7.1 在源数据库执行插入数据
第5章...... 把源数据库的DDL(表结构)修改同步到目标数据库中
5.1 在源数据库端关闭数据库的回收站
5.2 编辑源数据库参数文件GLOBALS
5.3 在源数据库创建gate01用户,并创建goldengate所需要的表
5.4 检查源数据库上的表是否安装好
5.5 修改源数据库配置extract文件
5.6 重新启动extract进程
5.7 验证源数据库是否可以同步表结构到目标数据库中
第6章...... 配置源数据库、目标数据库的双向数据传输
6.1 关闭目标数据库回收站,打开数据库辅助日志
6.2 在源数据库端添加checkpoint表,实现一致性
6.3 在源数据库增加一个replicat进程
6.4 在源数据库创建一个checkpoint表
6.5 编辑配置replicat进程
6.6 在目标数据库安装goldengate用户需要的表
6.7 在目标数据库配置一个extract进程
6.8 在目标数据库端配置一个pump进程
6.9 在源数据库端启动replicat进程
6.10 在目标数据库中启动extract、replicat的进程
6.11 目标数据库可以把数据、表结构的修过同步到源数据库服务器上
第7章...... 备注:
7.1 Oracle官网的下载地址
7.2 GoldenGate的eiexAA配置文件内容
7.3 GoldenGate的epmpAA配置文件内容
7.4 GoldenGate的roraBB配置文件内容
7.5 GoldenGate的eiexGG配置文件内容
7.6 GoldenGate的epmpGG配置文件内容
7.7 GoldenGate的roraFF配置文件内容
7.8 更改GoldenGate的复制时间点
7.9 查看GoldenGate命令格式
7.10 查看manager,extract,replicat是否运行
7.11 查看goldengate进程的错误
7.12 查看目标数据库的GoldenGate的eiexGG错误
第1章 GoldenGate概述
1.1 GoldenGate技术原理
Oracle公司的GoldenGate TDM(交易数据管理)软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数
据库同步、双活。GoldenGate TDM 软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,其复制过程简图如下:
如上图所示,GoldenGate TDM的数据复制过程如下:
Ø 利用捕捉进程(Capture Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate TDM自定义的中间格式存放在队列文件中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制;
Ø 目标系统接受数据变化并缓存到GoldenGate TDM队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据;
Ø GoldenGate TDM投递进程从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。
由此可见,GoldenGate TDM是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate TDM将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,GoldenGate TDM可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的。
GoldenGate TDM提供了灵活的应用方案,基于其先进、灵活的技术架构可以根据用户需求组成各种拓扑结构,如图所示:
GoldenGate TDM各种拓扑结构示意图
1、单向数据复制:由一个源数据库复制到一个目的数据库,一般用于高可用性和容灾,为生产机保持一个活动的备份数据库,从而在发生灾难的时候迅速切换,减少数据丢失和系统宕机时间;
2、 双向数据复制:利用GoldenGate TDM可以实现两个数据库之间数据的双向复制,任何一方的数据变化都会被传递到另一端,可以利用此模式开展双业务中心;
3、 广播复制---由一个数据库向多个数据库复制,利用GoldenGate TDM的数据过滤功能可以实现数据的有选择分发;
4、 集中复制---由多个数据库向一个数据库复制,可以将分布的、跨平台或异构的多个数据库集中到一个数据库。此种模式广泛应用于n+1模式的容灾,通过将多个系统数据库集中到一起,可以充分利用备份中心的设施,大幅减少投资;另外也用于跨平台多系统的数据集成,为这些提供系统提供一个统一视图便于查询和统计数据。
5、 层复制---由A数据库向B复制,同时又由B向C复制,可以在以上几种模式基础上无限制扩展。
由此可见,GoldenGate TDM的复制模式非常灵活,用户可以根据自己的需求选择特定的复制方式,并根据系统扩展对复制进行扩展。
1.2 GoldenGate可靠的复制
GoldenGate TDM 可以提供可靠的数据复制,主要体现在下面三点:
Ø 保证事务一致性
GoldenGate TDM 在灾备数据库应用复制数据库交易的顺序与在生产中心数据库上的顺序相同,并且按照相同的事务环境提交,确保在目标系统上数据的完整性和读一致性,为实时查询和事务处理创造了条件。
Ø 检查点机制保障数据无丢失
GoldenGate TDM的抽取和复制进程使用检查点机制记录完成复制的位置。对于抽取进程,其检查点记录当前已经抽取日志的位置和写队列文件的位置;对于投递进程,其检查点记录当前读取队列文件的位置。检查点机制可以保证在系统、网络或GoldenGate TDM进程故障重启后数据无丢失。
Ø 可靠的数据传输机制
GoldenGate TDM 用应答机制传输交易数据,只有在得到确认消息后才认为数据传输完成,否则将自动重新传输数据,从而保证了抽取出的所有数据都能发送到备份端。数据传输过程中支持128位加密和数据压缩功能;
1.3 GoldenGate支持操作系统和数据库类型
GoldenGate TDM公司的核心产品Transactional Data Management (TDM),可以在异构的IT基础结构之间实现大量数据的秒一级的数据捕捉、转换和投递。GoldenGate TDM可以支持几乎所有常用操作系统如和数据库平台,如下表所示:
操作系统
|
数据库
|
MS NT, 2000, XP, Linux, Sun Solaris, HP-UX, IBM AIX, HP NonStop, TRU64, IBM z/OS,OS/390
|
Oracle, DB2, MS SQL Server, MySQL, Enscribe, SQL/MP, SQL/MX, Sybase, Teradata, 其他ODBC 兼容数据库
|
第2章 安装GoldenGate
2.1 安装GoldenGate环境
源数据库平台:32位Windows2003 Oracle10.2.0.1.0版本
目标数据库平台:AIX5.3 Oracle10.2.0.1.0版本
源数据库:服务器名称:源数据库,ip:10.21.8.50
目标数据库:服务器名称:目标数据库, ip:10.21.8.20
源数据库:归档模式,ORACLE_SID:ora01 用户:golden01/golden01 goldengate专属用户:gate01/gate01
目标数据库:归档模式,ORACLE_SID:bjoms 用户:golden02/golden02 goldengate专属用户:gate02/gate02
2.2 分别在源数据库,目标数据库安装GoldenGate
2.2.1 下载GoldenGate
在源数据库下操作,windows的GoldenGate比较小,只有8.37M。如下图:
2.2.2 解压
2.2.3 安装GoldenGate
官方文档要求用administrator权限安装(需要系统管理员的权限)
双击F:\GoldenGate\V18162-01\目录下的ggsci.exe
GGSCI(源数据库) 1>CREATE SUBDIRS
然后退出:
GGSCI(源数据库) 2>EXIT
同时在目标数据库安装GoldenGate2.3
2.3.1 下载64位AIX平台的Goldengate软件
http://edelivery.oracle.com/
选择“简体中文”,继续,如下图:
然后选择“Oracle GoldenGate on Oracle Media Pack v2 for IBM AIX on POWER Systems (64-bit)”
根据AIX系统的版本和Oracle数据库的版本来下载不同的GoldenGate,如下图:
2.3.2 下载后,如下图:
2.3.3 用FTP把下载的GoldenGate软件上传到目标数据库服务器上
2.3.4 在目标数据库上进行安装GoldenGate
1、 解压
2、 安装GoldenGate,如下图
然后在GGSCI中输入“exit”即完成安装GoldenGate工作。
第3章 把源数据库的数据同步到目标数据库中
设置ORACLE_HOME,ORACLE_SID环境变量3.1
如果源数据库、目标数据库有多个Oracle数据库实例,需要在系统中分别设置ORACLE_HOME,ORACLE_SID.
如“我的电脑”右键“属性”,选择“高级”——》“环境变量”进行添加ORACLE_HOME,ORACLE_SID。如下图:
3.2 在源数据库ora01上打开归档日志及其辅助日志
SQL>archive log list; --确认数据库为归档日志
Sql>alter database add supplemental log data;
Sql>alter system switch logfile;
Sql>exit
在源数据库,目标数据库创建GoldenGate GLOBALS参数文件3.3
3.3.1 在源数据库创建
双击ggsci.exe
GGSCI>edit params ./GLOBALS
内容:
MGRSERVNAME mgr01
GGSCHEMA gate01
CHECKPOINTTABLE gate01.ggs_checkpoint
3.3.2 创建Goldengate manager服务
>INSTALL ADDSERVICE ADDEVENTS
创建后,如下图
3.4在目标数据库安装上面步骤创建manager
3.4.1 在目标数据库配置manager
内容如下:
MGRSERVNAME mgr02
PORT 7809
(#CHECKPOINTTABLE gate02.ggs_checkpoint)
(#GGSCHEMA gate02)
3.4.2 启动manager:
3.5 在源数据库,目标数据库配置mgr,启动manager进程
3.5.1 配置manager服务的mgr配置文件
在源数据库,双击ggsci.exe
源数据库的端口暂时给8001,目标数据库的端口设置为8002
GGSCI>EDIT PARAMS MGR
内容为:PORT 8001
3.5.2 启动mgr
如下图:manager的“mgr01”已经启动
3.6同样在目标数据库配置mgr文件
3.6.1 创建mgr文件
Mgr的内容为:
PORT 8002
3.6.2 启动mgr:
3.7 测试把源数据库数据同步到目标数据库数据库上
3.7.1 在源数据库创建golden01数据库用户,用来测试数据传输
3.7.2 执行GoldenGate的测试脚本,创建表
3.7.3 插入数据脚本
3.7.4 在goldengate中用oracle用户登陆数据库
双击ggsci.exe
出现这个错误有可能是golden01用户没有dba的权限
进入数据库中,把权限赋予给golden01
SQL>grant dba to golden01;
下面就可以登陆了
3.7.5 增加需要传输的用户表
需要把golden01用户的tcustmer、tcustord表的数据传输到目标数据库服务器的golden02用户上
3.7.6 在目标数据库创建用户及其表结构
在目标数据库端创建golden02用户,创建tcustmer、tcustord两个表的结构
创建表:
3.8 用goldengate中的direct load方式导入数据到目标数据库的golden02用户表上
进程 einiAA3.8.1 在源数据库配置一个extract
进程,名叫riniBB3.8.2 在目标数据库端配置一个replicat
3.8.3 在源数据库执行初始化过程
GGSCI>start extract einiAA
该进程会自动启动目标数据库端的replicat riniBB进程。
在ggsci.exe查看源数据库中的传输是否有错 view report einiAA
在ggsci.exe查看目标数据库中的是否有错:view report riniBB
3.8.4 验证目标数据库端的golden02用户表数据是否和源数据库一样
查看目标数据库的数据,已经一样。
第4章 把源数据库的修改数据同步到目标数据库中
4.1 在源数据库配置一个EXTRACT进程及配置其文件
4.1.1 配置EXTRACT文件
和初始化数据一样,先配置一个extract进程
GGSCI>EDIT PARAM eiexAA
4.1.2 在GGSCI.exe增加一个EXTRACT进程
GGSCI> ADD EXTRACT eiexAA, TRANLOG,BEGIN NOW
GGSCI> ADD EXTTRAIL ./dirdat/dd, EXTRACT eiexAA, MEGABYTES 5
4.2 配置data pump
4.2.1 在源数据库端添加一个pump进程,epmpAA文件。
4.2.2 在源数据库的ggsci中增加extract进程
其作用为读取本地trail文件到目标端trail文件
GGSCI> ADD EXTRACT epmpAA, EXTTRAILSOURCE ./dirdat/dd
添加进程 并通过EXTTRAILSOURCE说明本地trail 文件存放地。
4.2.3 在源数据库执行RMTTRAIL
GGSCI> ADD RMTTRAIL ./dirdat/dd, EXTRACT epmpAA,MEGABYTES 5
告诉其目标数据库trail文件地点
4.3 启动data pump capture process
GGSCI> START EXTRACT eiexAA
GGSCI> START EXTRACT epmpAA
GGSCI>info all
如果eiexAA不能启动,
可以用view report eiexAA查看具体原因
4.4 在目标数据库中创建goldengate专属用户gate02及其表
4.5 在目标数据库配置replicat进程
4.5.1 在ggsci增加一个replicat进程,如下图
4.5.2 编辑配置replicat文件
GGSCI (CSXXDBS01) 80>edit params roraBB
4.6 启动replicat进程
4.7 测试检查同步结果
4.7.1 在源数据库执行插入数据
SQL> @demo_ora_misc 生成数据
这样就可以把源数据库的golden01数据表同步到目标数据库的golden02数据库上。
验证目标端数据库的数据:如下图:
如果出错,可以查看源数据库,或者目标数据库上的eiexAA、epmpAA、rora01进程的错误。
如 view report eiexAA.
如果修改进程的配置文件,需要关闭进程,然后重新启动才有效。
GSCII>stop extract eiexAA (或者stop eiexAA)
GSCII>start extract eiexAA (或者start eiexAA)
第5章 把源数据库的DDL(表结构)修改同步到目标数据库中
Ddl同步默认是不支持的,需要在源数据库上安装相关goldengate包 并配置才能使用。
5.1 在源数据库端关闭数据库的回收站
Recyclebin值为off
SQL> show parameter recycle
NAME TYPE VALUE
------------------- ----------- --------------
buffer_pool_recycle string
db_recycle_cache_size big integer 0
recyclebin string OFF
5.2 编辑源数据库参数文件GLOBALS
5.3 在源数据库创建gate01用户,并创建goldengate所需要的表
在sys用户执行
sqlplus>@marker_setup --选择刚才创建的用户gate01
sqlplus>@ddl_setup.sql --选择gate01 然后选择INITIALSETUP,再然后选择yes
sqlplus>@ role_setup.sql --选择gate01
sqlplus>@ ddl_enable.sql
5.4 检查源数据库上的表是否安装好
5.5 修改源数据库配置extract文件
GGSCI>edit params eiexAA
在文件中加上ddl关键字,如下图:
5.6 重新启动extract进程
修改了eiexAA配置文件,需要关闭该进程,再启动
5.7 验证源数据库是否可以同步表结构到目标数据库中
在目标数据库查看该表结构,也已经增加上该字段。如下图:
第6章 配置源数据库、目标数据库的双向数据传输
在上面单向DDL、DML传输的基础上配置双向DDL、DML
6.1 关闭目标数据库回收站,打开数据库辅助日志
打开数据库的辅助日志:
6.2 在源数据库端添加checkpoint表,实现一致性
6.3 在源数据库增加一个replicat进程
目标端数据库发送过来的文件为 ./dirdat/gg ,上面的参数配置错误,删除replicat,重新增加。
6.4 在源数据库创建一个checkpoint表
6.5 编辑配置replicat进程
6.6 在目标数据库安装goldengate用户需要的表
用Oracle数据库的sys用户运行下面脚本
如图:
Sqlplus>grant execute on utl_file to gate02;
sqlplus>@marker_setup 选择gate02用户
sqlplus>@ddl_setup 选择gate02用户,第一次选择INITIALSETUP,再yes
sqlplus>@ role_setup 选择gate02用户
sqlplus>@ ddl_enable
6.7 在目标数据库配置一个extract进程
如下图:
内容为:
EXTRACT eiexGG
USERID gate02@BJOMS,password gate02
EXTTRAIL ./dirdat/gg
DDL
TABLE golden02.TCUSTMER;
TABLE golden02.TCUSTORD;
在ggsci中添加extract进程,如下图:
6.8 在目标数据库端配置一个pump进程
如下图:
内容:
EXTRACT epmpGG
PASSTHRU
RMTHOST 10.21.8.50,MGRPORT 8001
RMTTRAIL ./dirdat/gg
TABLE golden02.TCUSTMER;
TABLE golden02.TCUSTORD;
其作用为读取本地trail文件到目标端trail文件
6.9 在源数据库端启动replicat进程
6.10 在目标数据库中启动extract、replicat的进程
如下图:
6.11 目标数据库可以把数据、表结构的修过同步到源数据库服务器上
目标数据库:
执行下面命令:
查看源数据库:
可以把数据修改、表结构的修改在源数据库或者在目标数据库中执行,都可以同步到另一端的数据库中。
第7章 备注:
7.1 Oracle官网的下载地址
http://edelivery.oracle.com.
7.2 GoldenGate的eiexAA配置文件内容
内容:
EXTRACT eiexAA
USERID golden01@ora01,password golden01
EXTTRAIL ./dirdat/dd
DDL
TABLE golden01.TCUSTMER;
TABLE golden01.TCUSTORD;
上面的参数可以参考GoldenGate文档,
启动eiexAA进程,即是读取该配置文件的内容。把数据库中的golden01用户的DML操作和DDL的操作捕获到GoldenGate安装目录的./dirdat/目录中,生成的文件一般是gg000000,gg000001这里的文件。
7.3 GoldenGate的epmpAA配置文件内容
内容:
EXTRACT epmpAA
PASSTHRU
RMTHOST 10.21.8.20,MGRPORT 8002
RMTTRAIL ./dirdat/dd
TABLE golden01.TCUSTMER;
TABLE golden01.TCUSTORD;
该进程把当前的./dirdat/目录中的gg000000,gg000001等等文件传送到远程服务器10.21.8.20的GoldenGate目录的./dirdat目录下。
7.4 GoldenGate的roraBB配置文件内容
内容:
REPLICAT roraBB
USERID golden02@BJOMS,PASSWORD golden02
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/roraBB.DSC, PURGE
MAP golden01.TCUSTMER, TARGET golden02.TCUSTMER;
MAP golden01.TCUSTORD, TARGET golden02.TCUSTORD;
把进程把GoldenGate目录下的./dirdat/dd开头的文件中DML和DDL复制到数据库中的golden02用户中。
7.5 GoldenGate的eiexGG配置文件内容
内容:
EXTRACT eiexGG
USERID gate02@BJOMS,password gate02
EXTTRAIL ./dirdat/gg
DDL
TABLE golden02.TCUSTMER;
TABLE golden02.TCUSTORD;
7.6 GoldenGate的epmpGG配置文件内容
EXTRACT epmpGG
PASSTHRU
RMTHOST 10.21.8.50,MGRPORT 8001
RMTTRAIL ./dirdat/gg
TABLE golden02.TCUSTMER;
TABLE golden02.TCUSTORD;
7.7 GoldenGate的roraFF配置文件内容
内容:
REPLICAT roraFF
USERID golden01@ora01,PASSWORD golden01
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/roraff.DSC, PURGE
MAP golden02.TCUSTORD, TARGET golden01.TCUSTORD;
MAP golden02.TCUSTMER, TARGET golden01.TCUSTMER;
7.8 更改GoldenGate的复制时间点
如果目标数据库不想复制以前的数据,可以更改复制进程的时间点,指定从某一个时刻开始复制。
>alter replicat roraFF,begin 2010-3-3 10:28:00
如下图;
从现在开始复制:
>alter replicat roraFF,begin now
7.9 查看GoldenGate命令格式
GG>help manager
如:
7.10 查看manager,extract,replicat是否运行
GG>info all
如:
7.11 查看goldengate进程的错误
GG>view report RORABB
或者查看ggserr.log 日志
7.12 查看目标数据库的GoldenGate的eiexGG错误
错误如下:
查看错误,可以看到在数据库中找不到golden02用户的GGS_DDL_HIST表。
应该GGS_DDL_HIST表是配置在专属的gate02用户中的。
原来是eiexGG配置文件发生错误。
解决:
把eiexGG的内容改为:
EXTRACT eiexGG
USERID gate02@BJOMS,password gate02
EXTTRAIL ./dirdat/gg
DDL
TABLE golden02.TCUSTMER;
TABLE golden02.TCUSTORD;
如下图:
查看情况,正常。如下图:
出现上面的打不开文件的错误,一般是文件删除了,或者是没有该文件。可以重新配置源数据库或者目标数据库的extract,replicat进程。