使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务.docx
- 文档编号:2202905
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:27
- 大小:811.10KB
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务.docx
《使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务.docx》由会员分享,可在线阅读,更多相关《使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务.docx(27页珍藏版)》请在冰点文库上搜索。
使用OracleGoldenGate在MicrosoftSQLServer和OracleDatabase之间复制事务
使用OracleGoldenGate在MicrosoftSQLServer和OracleDatabase之间复制事务
作者:
NikolayManchev
分步构建一个跨这些平台的简单事务复制示例。
2011年8月发布
大多数关注数据复制的Oracle技术专家都熟悉OracleStreams。
在2009年之前,Streams一直是推荐使用的最流行的Oracle数据分发技术。
2009年7月,Oracle收购了GoldenGate这一数据库复制软件供应商。
Oracle现在鼓励客户使用OracleGoldenGate(Oracle融合中间件系列的组成部分)来满足新应用中的数据复制需求。
Oracle关于OracleStreams的发展方向声明表示该产品“将继续得到支持,但不会积极增强其功能”。
在本文中,我们将使用OracleGoldenGate构建一个简单事务复制示例,以便熟悉这一新技术。
OracleGoldenGate架构
GoldenGatev11能够在异构平台之间实现事务级的复制。
它支持OracleDatabase、IBMDB2、MicrosoftSQLServer、MySQL、Teradata以及众多其他平台。
(它还支持通过通用ODBC驱动程序进行访问。
)
我们需要熟悉的最重要的组件是Extract和Replicat进程。
Extract进程运行在源系统上,负责捕获数据更改。
Replicat运行在目标计算机上,负责将更改应用于目标数据库。
以上是Extract进程的两个常见配置。
所谓的“初始加载”用于用源数据的精确副本填充目标数据库(即Extract从源数据库提取所有数据并且通常只运行一次)。
然后就可以进行“更改同步”。
在“更改同步”配置中,Extract不间断地监视源数据库并即时捕获所有更改。
在本演示中,我们将MicrosoftSQLServer2008配置为源数据库,配置并执行一个初始加载,然后以更改同步模式启动Extract进程。
为了显示此复制的确是异构的,我们将在WindowsXP上运行SQLServer,在OracleLinux5上运行OracleDatabase11g第2版。
作为先决条件,假定您在Windows系统上安装了干净的SQLServer2008,在Linux系统安装了OracleDatabase。
我们将从安装GoldenGate开始构建演示场景。
首先从Windows系统开始。
在WindowsXP上安装适用于SQLServer的GoldenGate
首先,需要适用于SQLServer的OracleGoldenGatev11。
可以从下载(OracleFusionMiddleware→MicrosoftWindowsx32→OracleGoldenGateforNonOracleDatabasev11)。
所需介质包的序列号是V22241-01。
在希望安装OracleGoldenGate的位置(在本示例中为C:
\GG)解压缩下载的压缩包。
然后打开命令提示符,转到C:
\GG目录,启动GGSCI(GoldenGate命令界面):
C:
\GG>ggsci
OracleGoldenGateCommandInterpreterforODBC
Version11.1.1.0.0Build078
Windows(optimized),MicrosoftSQLServeronJul28201018:
55:
52
Copyright(C)1995,2010,Oracleand/oritsaffiliates.Allrightsreserved.
GGSCI(MSSQL)1>
接着执行CREATESUBDIRS命令创建OracleGoldenGate工作目录。
GGSCI(MSSQL)1>CREATESUBDIRS
CreatingsubdirectoriesundercurrentdirectoryC:
\GG
Parameterfiles C:
\GG\dirprm:
created
Reportfiles C:
\GG\dirrpt:
created
Checkpointfiles C:
\GG\dirchk:
created
Processstatusfiles C:
\GG\dirpcs:
created
SQLscriptfiles C:
\GG\dirsql:
created
Databasedefinitionsfiles C:
\GG\dirdef:
created
Extractdatafiles C:
\GG\dirdat:
created
Temporaryfiles C:
\GG\dirtmp:
created
Veridatafiles C:
\GG\dirver:
created
VeridataLockfiles C:
\GG\dirver\lock:
created
VeridataOut-Of-Syncfiles C:
\GG\dirver\oos:
created
VeridataOut-Of-SyncXMLfilesC:
\GG\dirver\oosxml:
created
VeridataParameterfiles C:
\GG\dirver\params:
created
VeridataReportfiles C:
\GG\dirver\report:
created
VeridataStatusfiles C:
\GG\dirver\status:
created
VeridataTracefiles C:
\GG\dirver\trace:
created
Stdoutfiles C:
\GG\dirout:
created
GGSCI(MSSQL)2>EXIT
C:
\GG>
根据官方文档,GGSCI支持每个OracleGoldenGate实例最多300个并发的Extract和Replicat进程。
不过,有一个进程负责控制其他进程;这个进程被称作Manager进程。
虽然您可以手动运行此进程,但最好将其安装为服务,否则当启动该进程的用户注销时,该进程将停止。
要将Manager进程添加为Windows服务,请在GoldenGate安装目录中执行INSTALLADDSERVICE命令。
C:
\GG>INSTALLADDSERVICE
Service'GGSMGR'created.
Installprogramterminatednormally.
C:
\GG>
这样就差不多完成了Windows安装。
我们转到Linux系统。
在OracleLinux5上安装适用于Oracle的GoldenGate
在Linux上安装OracleGoldenGate与您刚才在WindowsXP上进行的安装大同小异。
您需要下载适用于Linux上的Oracle的GoldenGate介质包(V22228-01)。
创建一个安装目录并将压缩包解压缩到该目录。
在本示例中,我使用/u01/app/oracle/gg目录,因为ORACLE_BASE指向/u01/app/oracle。
完成该操作后,需要设置PATH和LD_LIBRARY_PATH环境变量,如下所示:
[oracle@oradb~]$exportPATH=$PATH:
$ORACLE_BASE/gg
[oracle@oradb~]$exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:
$ORACLE_BASE/gg
启动GGSCI并执行CREATESUBDIRS。
[oracle@oradbggs]$cd$ORACLE_BASE/gg
[oracle@oradbgg]$./ggsci
OracleGoldenGateCommandInterpreterforOracle
Version11.1.1.0.0Build078
Linux,x86,32bit(optimized),Oracle11onJul28201013:
22:
25
Copyright(C)1995,2010,Oracleand/oritsaffiliates.Allrightsreserved.
GGSCI(oradb)1>CREATESUBDIRS
Creatingsubdirectoriesundercurrentdirectory/u01/app/oracle/gg
Parameterfiles /u01/app/oracle/gg/dirprm:
created
Reportfiles /u01/app/oracle/gg/dirrpt:
created
Checkpointfiles /u01/app/oracle/gg/dirchk:
created
Processstatusfiles /u01/app/oracle/gg/dirpcs:
created
SQLscriptfiles /u01/app/oracle/gg/dirsql:
created
Databasedefinitionsfiles /u01/app/oracle/gg/dirdef:
created
Extractdatafiles /u01/app/oracle/gg/dirdat:
created
Temporaryfiles /u01/app/oracle/gg/dirtmp:
created
Veridatafiles /u01/app/oracle/gg/dirver:
created
VeridataLockfiles /u01/app/oracle/gg/dirver/lock:
created
VeridataOut-Of-Syncfiles /u01/app/oracle/gg/dirver/oos:
created
VeridataOut-Of-SyncXMLfiles/u01/app/oracle/gg/dirver/oosxml:
created
VeridataParameterfiles /u01/app/oracle/gg/dirver/params:
created
VeridataReportfiles /u01/app/oracle/gg/dirver/report:
created
VeridataStatusfiles /u01/app/oracle/gg/dirver/status:
created
VeridataTracefiles /u01/app/oracle/gg/dirver/trace:
created
Stdoutfiles /u01/app/oracle/gg/dirout:
created
GGSCI(oradb)2>EXIT
[oracle@oradbgg]$
Linux系统上的安装现已完成。
准备源数据库
下一步是在SQLServer中新建一个数据库并用一些示例数据进行填充。
该数据库名为EMP。
可以通过启动SQLServerManagementStudio,右键单击Databases并选择NewDatabase来创建该数据库。
在Databasename域中键入EMP,然后单击OK,其他选项保留默认值。
我们在新创建的数据库中添加一个新的数据库模式(HRSCHEMA)、一个表(EMP)和几条测试记录。
通过运行以下SQL来实现这些操作:
setansi_nullson
go
setquoted_identifieron
go
createschemahrschema
go
createtable[hrschema].[emp](
[id][smallint]notnull,
[first_name]varchar(50)notnull,
[last_name]varchar(50)notnull,
constraint[emp_pk]primarykeyclustered(
[id]asc
)with(pad_index=off,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on)on[primary]
)on[primary]
go
--TESTDATA
INSERTINTO[hrschema].[emp]([id],[first_name],[last_name])VALUES(1,'Dave','Mustaine')
INSERTINTO[hrschema].[emp]([id],[first_name],[last_name])VALUES(2,'Chris','Broderick')
INSERTINTO[hrschema].[emp]([id],[first_name],[last_name])VALUES(3,'David','Ellefson')
INSERTINTO[hrschema].[emp]([id],[first_name],[last_name])VALUES(4,'Shawn','Drover')
GO
首先新建一个查询(右键单击数据库名并选择NewQuery)。
然后贴入以上SQL文本,按F5执行。
现在,为使OracleGoldenGate能够访问EMP数据库,必须为其创建一个ODBC数据源。
转到ControlPanel->AdministrativeTools->DataSources(ODBC),添加一个新的系统DSN。
选择SQLServer作为数据库驱动程序并将该数据源命名为HR。
将来源指向本地SQLServer(MSSQL)并填写登录凭证。
数据源摘要应类似如下所示:
现在该让OracleGoldenGate能够从事务日志中获取有关EMP表的事务信息了。
您仍将使用GGSCI:
C:
\GG>ggsci.exe
OracleGoldenGateCommandInterpreterforODBC
Version11.1.1.0.0Build078
Windows(optimized),MicrosoftSQLServeronJul28201018:
55:
52
Copyright(C)1995,2010,Oracleand/oritsaffiliates.Allrightsreserved.
GGSCI(MSSQL)1>DBLOGINSOURCEDBHR
Successfullyloggedintodatabase.
GGSCI(MSSQL)2>ADDTRANDATAHRSCHEMA.EMP
Loggingofsupplementallogdataisenabledfortablehrschema.emp
GGSCI(MSSQL)3>
因为Oracle和SQLServer中的数据类型不同,所以您必须建立数据类型转换。
GoldenGate提供了一个名为DEFGEN的专用工具,用于生成数据定义,当源表和目标表中的定义不同时,OracleGoldenGate进程将引用该专用工具。
在运行DEFGEN之前,需要为其创建一个参数文件,指定该工具应检查哪些表以及在检查表之后存放类型定义文件的位置。
可以在GGSCI内使用EDITPARAMS命令创建这样一个参数文件。
GGSCI(MSSQL)3>EDITPARAMSDEFGEN
GGSCI(MSSQL)4>
这将创建一个名为DEFGEN.PRM的空参数文件,该文件位于GoldenGate安装的DIRPRM文件夹中。
将以下内容放入该文件内:
defsfilec:
\gg\dirdef\emp.def
sourcedbhr
tablehrschema.emp;
参数的含义不言自明。
我们希望DEFGEN检查HRSCHEMA内的EMP表并在DIRDEF子目录中放置一个名为EMP.DEF的定义文件。
我们来调用DEFGEN并检查其输出。
C:
\GG>defgenparamfilec:
\gg\dirprm\defgen.prm
***********************************************************************
OracleGoldenGateTableDefinitionGeneratorforODBC
Version11.1.1.0.0Build078
Windows(optimized),MicrosoftSQLServeronJul28201019:
16:
56
Copyright(C)1995,2010,Oracleand/oritsaffiliates.Allrightsreserved.
Startingat2011-04-0814:
41:
06
***********************************************************************
OperatingSystemVersion:
MicrosoftWindowsXPProfessional,onx86
Version5.1(Build2600:
ServicePack3)
Processid:
2948
***********************************************************************
** Runningwiththefollowingparameters **
***********************************************************************
defsfilec:
\gg\dirdef\emp.def
sourcedbhr
tablehrschema.emp;
RetrievingdefinitionforHRSCHEMA.EMP
Definitionsgeneratedfor1tablesinc:
\gg\dirdef\emp.def
C:
\GG>
如果您费心检查一下EMP.DEF的内容,就会发现其内容类似如下所示:
*
*Definitionscreated/modified 2011-07-0710:
27
*
* Fielddescriptionsforeachcolumnentry:
*
* 1 Name
* 2 DataType
* 3 ExternalLength
* 4 FetchOffset
* 5 Scale
* 6 Level
* 7 Null
* 8 BumpifOdd
* 9 InternalLength
* 10 BinaryLength
* 11 TableLength
* 12 MostSignificantDT
* 13 LeastSignificantDT
* 14 HighPrecision
* 15 LowPrecision
* 16 ElementaryItem
* 17 Occurs
* 18 KeyColumn
* 19 SubDataType
*
*
DefinitionfortableHRSCHEMA.EMP
Recordlength:
121
Syskey:
0
Columns:
3
id 134 23 0 0 010 8 8 800001 010
first_name 64 50 11 0 010 50 50 000001 000
last_name 64 50 66 0 010 50 50 000001 000
Endofdefinition
基本上,它列出了所有表/列并使用更一般的定义描述了原生数据库类型。
现在需要将EMP.DEF文件复制到目标计算机,因为该文件需要供Replicat进程使用。
Replicat还必须执行另一项转换。
该进程将更一般的类型重新映射为数据库特定的类型(但这次这些类型将对应于目标数据库所使用的类型)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 Oracle GoldenGate Microsoft SQL Server Database 之间复制事务 之间 复制 事务
链接地址:https://www.bingdoc.com/p-2202905.html