【官方文檔】使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之間復(fù)制事務(wù)

官方地址:https://www.oracle.com/technetwork/cn/articles/datawarehouse/oracle-sqlserver-goldengate-1396114-zhs.html
分步構(gòu)建一個(gè)跨這些平臺(tái)的簡單事務(wù)復(fù)制示例。

2011 年 8 月發(fā)布

大多數(shù)關(guān)注數(shù)據(jù)復(fù)制的 Oracle 技術(shù)專家都熟悉 Oracle Streams势告。在 2009 年之前谭贪,Streams 一直是推薦使用的最流行的 Oracle 數(shù)據(jù)分發(fā)技術(shù)匙握。

2009 年 7 月褒颈,Oracle 收購了 GoldenGate 這一數(shù)據(jù)庫復(fù)制軟件供應(yīng)商。Oracle 現(xiàn)在鼓勵(lì)客戶使用 Oracle GoldenGateOracle 融合中間件系列的組成部分)來滿足新應(yīng)用中的數(shù)據(jù)復(fù)制需求父叙。Oracle 關(guān)于 Oracle Streams 的發(fā)展方向聲明表示該產(chǎn)品“將繼續(xù)得到支持徙垫,但不會(huì)積極增強(qiáng)其功能”饺汹。

在本文中蛔添,我們將使用 Oracle GoldenGate 構(gòu)建一個(gè)簡單事務(wù)復(fù)制示例,以便熟悉這一新技術(shù)兜辞。

Oracle GoldenGate 架構(gòu)

GoldenGate v11 能夠在異構(gòu)平臺(tái)之間實(shí)現(xiàn)事務(wù)級(jí)的復(fù)制迎瞧。它支持 Oracle Database、IBM DB2逸吵、Microsoft SQL Server凶硅、MySQL、Teradata 以及眾多其他平臺(tái)扫皱。(它還支持通過通用 ODBC 驅(qū)動(dòng)程序進(jìn)行訪問足绅。)

我們需要熟悉的最重要的組件是 Extract 和 Replicat 進(jìn)程。Extract 進(jìn)程運(yùn)行在源系統(tǒng)上啸罢,負(fù)責(zé)捕獲數(shù)據(jù)更改编检。Replicat 運(yùn)行在目標(biāo)計(jì)算機(jī)上,負(fù)責(zé)將更改應(yīng)用于目標(biāo)數(shù)據(jù)庫扰才。

oracle-sqlserver-goldengate-f1

以上是 Extract 進(jìn)程的兩個(gè)常見配置。所謂的“初始加載”用于用源數(shù)據(jù)的精確副本填充目標(biāo)數(shù)據(jù)庫(即 Extract 從源數(shù)據(jù)庫提取所有數(shù)據(jù)并且通常只運(yùn)行一次)厕怜。然后就可以進(jìn)行“更改同步”衩匣。在“更改同步”配置中,Extract 不間斷地監(jiān)視源數(shù)據(jù)庫并即時(shí)捕獲所有更改粥航。

在本演示中琅捏,我們將 Microsoft SQL Server 2008 配置為源數(shù)據(jù)庫,配置并執(zhí)行一個(gè)初始加載递雀,然后以更改同步模式啟動(dòng) Extract 進(jìn)程柄延。為了顯示此復(fù)制的確是異構(gòu)的,我們將在 Windows XP 上運(yùn)行 SQL Server缀程,在 Oracle Linux 5 上運(yùn)行 Oracle Database 11g 第 2 版搜吧。作為先決條件,假定您在 Windows 系統(tǒng)上安裝了干凈的 SQL Server 2008杨凑,在 Linux 系統(tǒng)安裝了 Oracle Database滤奈。

我們將從安裝 GoldenGate 開始構(gòu)建演示場(chǎng)景。首先從 Windows 系統(tǒng)開始撩满。

在 Windows XP 上安裝適用于 SQL Server 的 GoldenGate

首先蜒程,需要適用于 SQL Server 的 Oracle GoldenGate v11绅你。可以從 http://edelivery.oracle.com 下載 (Oracle Fusion Middleware → Microsoft Windows x32 → Oracle GoldenGate for Non Oracle Database v11)昭躺。所需介質(zhì)包的序列號(hào)是 V22241-01忌锯。

oracle-sqlserver-goldengate-f2

在希望安裝 Oracle GoldenGate 的位置(在本示例中為 C:\GG)解壓縮下載的壓縮包。然后打開命令提示符领炫,轉(zhuǎn)到 C:\GG 目錄偶垮,啟動(dòng) GGSCI(GoldenGate 命令界面):

C:\GG>ggsci

Oracle GoldenGate Command Interpreter for ODBC
Version 11.1.1.0.0 Build 078
Windows (optimized), Microsoft SQL Server on Jul 28 2010 18:55:52

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

GGSCI (MSSQL) 1>

接著執(zhí)行 CREATE SUBDIRS 命令創(chuàng)建 Oracle GoldenGate 工作目錄。

GGSCI (MSSQL) 1> CREATE SUBDIRS

Creating subdirectories under current directory C:\GG

Parameter files C:\GG\dirprm: created
Report files C:\GG\dirrpt: created
Checkpoint files C:\GG\dirchk: created
Process status files C:\GG\dirpcs: created
SQL script files C:\GG\dirsql: created
Database definitions files C:\GG\dirdef: created
Extract data files C:\GG\dirdat: created
Temporary files C:\GG\dirtmp: created
Veridata files C:\GG\dirver: created
Veridata Lock files C:\GG\dirver\lock: created
Veridata Out-Of-Sync files C:\GG\dirver\oos: created
Veridata Out-Of-Sync XML files C:\GG\dirver\oosxml: created
Veridata Parameter files C:\GG\dirver\params: created
Veridata Report files C:\GG\dirver\report: created
Veridata Status files C:\GG\dirver\status: created
Veridata Trace files C:\GG\dirver\trace: created
Stdout files C:\GG\dirout: created

GGSCI (MSSQL) 2> EXIT

C:\GG>

根據(jù)官方文檔驹吮,GGSCI 支持每個(gè) Oracle GoldenGate 實(shí)例最多 300 個(gè)并發(fā)的 Extract 和 Replicat 進(jìn)程针史。不過,有一個(gè)進(jìn)程負(fù)責(zé)控制其他進(jìn)程碟狞;這個(gè)進(jìn)程被稱作 Manager 進(jìn)程啄枕。雖然您可以手動(dòng)運(yùn)行此進(jìn)程,但最好將其安裝為服務(wù)族沃,否則當(dāng)啟動(dòng)該進(jìn)程的用戶注銷時(shí)频祝,該進(jìn)程將停止。

要將 Manager 進(jìn)程添加為 Windows 服務(wù)脆淹,請(qǐng)?jiān)?GoldenGate 安裝目錄中執(zhí)行 INSTALL ADDSERVICE 命令常空。

C:\GG>INSTALL ADDSERVICE

Service 'GGSMGR' created.

Install program terminated normally.

C:\GG>

這樣就差不多完成了 Windows 安裝。我們轉(zhuǎn)到 Linux 系統(tǒng)盖溺。

在 Oracle Linux 5 上安裝適用于 Oracle 的 GoldenGate

在 Linux 上安裝 Oracle GoldenGate 與您剛才在 Windows XP 上進(jìn)行的安裝大同小異漓糙。您需要下載適用于 Linux 上的 Oracle 的 GoldenGate 介質(zhì)包 (V22228-01)。創(chuàng)建一個(gè)安裝目錄并將壓縮包解壓縮到該目錄烘嘱。在本示例中昆禽,我使用 /u01/app/oracle/gg 目錄,因?yàn)?ORACLE_BASE 指向 /u01/app/oracle蝇庭。完成該操作后醉鳖,需要設(shè)置 PATH 和 LD_LIBRARY_PATH 環(huán)境變量,如下所示:

[oracle@oradb ~]**export PATH=PATH:ORACLE_BASE/gg** [oracle@oradb ~] export LD_LIBRARY_PATH=ORACLE_HOME/lib:ORACLE_BASE/gg

啟動(dòng) GGSCI 并執(zhí)行 CREATE SUBDIRS哮内。

[oracle@oradb ggs]**cdORACLE_BASE/gg**
[oracle@oradb gg]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 11 on Jul 28 2010 13:22:25

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

GGSCI (oradb) 1> CREATE SUBDIRS

Creating subdirectories under current directory /u01/app/oracle/gg

Parameter files /u01/app/oracle/gg/dirprm: created
Report files /u01/app/oracle/gg/dirrpt: created
Checkpoint files /u01/app/oracle/gg/dirchk: created
Process status files /u01/app/oracle/gg/dirpcs: created
SQL script files /u01/app/oracle/gg/dirsql: created
Database definitions files /u01/app/oracle/gg/dirdef: created
Extract data files /u01/app/oracle/gg/dirdat: created
Temporary files /u01/app/oracle/gg/dirtmp: created
Veridata files /u01/app/oracle/gg/dirver: created
Veridata Lock files /u01/app/oracle/gg/dirver/lock: created
Veridata Out-Of-Sync files /u01/app/oracle/gg/dirver/oos: created
Veridata Out-Of-Sync XML files /u01/app/oracle/gg/dirver/oosxml: created
Veridata Parameter files /u01/app/oracle/gg/dirver/params: created
Veridata Report files /u01/app/oracle/gg/dirver/report: created
Veridata Status files /u01/app/oracle/gg/dirver/status: created
Veridata Trace files /u01/app/oracle/gg/dirver/trace: created
Stdout files /u01/app/oracle/gg/dirout: created

GGSCI (oradb) 2> EXIT
[oracle@oradb gg]$

Linux 系統(tǒng)上的安裝現(xiàn)已完成盗棵。

準(zhǔn)備源數(shù)據(jù)庫

下一步是在 SQL Server 中新建一個(gè)數(shù)據(jù)庫并用一些示例數(shù)據(jù)進(jìn)行填充。該數(shù)據(jù)庫名為 EMP北发∥埔颍可以通過啟動(dòng) SQL Server Management Studio,右鍵單擊 Databases 并選擇 New Database 來創(chuàng)建該數(shù)據(jù)庫鲫竞。

oracle-sqlserver-goldengate-f3

在 Database name 域中鍵入 EMP辐怕,然后單擊 OK,其他選項(xiàng)保留默認(rèn)值从绘。

我們?cè)谛聞?chuàng)建的數(shù)據(jù)庫中添加一個(gè)新的數(shù)據(jù)庫模式 (HRSCHEMA)寄疏、一個(gè)表 (EMP) 和幾條測(cè)試記錄是牢。通過運(yùn)行以下 SQL 來實(shí)現(xiàn)這些操作:

set ansi_nulls on
go

set quoted_identifier on
go

create schema hrschema
go

create table [hrschema].[emp] (
[id] [smallint] not null,
[first_name] varchar(50) not null,
[last_name] varchar(50) not null,
constraint [emp_pk] primary key clustered (
[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

-- TEST DATA

INSERT INTO [hrschema].[emp] ([id], [first_name], [last_name]) VALUES (1,'Dave','Mustaine')
INSERT INTO [hrschema].[emp] ([id], [first_name], [last_name]) VALUES (2,'Chris','Broderick')
INSERT INTO [hrschema].[emp] ([id], [first_name], [last_name]) VALUES (3,'David','Ellefson')
INSERT INTO [hrschema].[emp] ([id], [first_name], [last_name]) VALUES (4,'Shawn','Drover')
GO

首先新建一個(gè)查詢(右鍵單擊數(shù)據(jù)庫名并選擇 New Query)。然后貼入以上 SQL 文本陕截,按 F5 執(zhí)行驳棱。

oracle-sqlserver-goldengate-f4

現(xiàn)在,為使 Oracle GoldenGate 能夠訪問 EMP 數(shù)據(jù)庫农曲,必須為其創(chuàng)建一個(gè) ODBC 數(shù)據(jù)源社搅。轉(zhuǎn)到 Control Panel -> Administrative Tools -> Data Sources (ODBC),添加一個(gè)新的系統(tǒng) DSN乳规。選擇 SQL Server 作為數(shù)據(jù)庫驅(qū)動(dòng)程序并將該數(shù)據(jù)源命名為 HR形葬。將來源指向本地 SQL Server (MSSQL) 并填寫登錄憑證。數(shù)據(jù)源摘要應(yīng)類似如下所示:

oracle-sqlserver-goldengate-f5

現(xiàn)在該讓 Oracle GoldenGate 能夠從事務(wù)日志中獲取有關(guān) EMP 表的事務(wù)信息了暮的。您仍將使用 GGSCI:

C:\GG>ggsci.exe

Oracle GoldenGate Command Interpreter for ODBC
Version 11.1.1.0.0 Build 078
Windows (optimized), Microsoft SQL Server on Jul 28 2010 18:55:52

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

GGSCI (MSSQL) 1> DBLOGIN SOURCEDB HR
Successfully logged into database.

GGSCI (MSSQL) 2> ADD TRANDATA HRSCHEMA.EMP

Logging of supplemental log data is enabled for table hrschema.emp

GGSCI (MSSQL) 3>

因?yàn)?Oracle 和 SQL Server 中的數(shù)據(jù)類型不同笙以,所以您必須建立數(shù)據(jù)類型轉(zhuǎn)換。GoldenGate 提供了一個(gè)名為 DEFGEN 的專用工具冻辩,用于生成數(shù)據(jù)定義猖腕,當(dāng)源表和目標(biāo)表中的定義不同時(shí),Oracle GoldenGate 進(jìn)程將引用該專用工具恨闪。在運(yùn)行 DEFGEN 之前倘感,需要為其創(chuàng)建一個(gè)參數(shù)文件,指定該工具應(yīng)檢查哪些表以及在檢查表之后存放類型定義文件的位置咙咽±下辏可以在 GGSCI 內(nèi)使用 EDIT PARAMS 命令創(chuàng)建這樣一個(gè)參數(shù)文件。

GGSCI (MSSQL) 3> EDIT PARAMS DEFGEN

GGSCI (MSSQL) 4>

這將創(chuàng)建一個(gè)名為 DEFGEN.PRM 的空參數(shù)文件钧敞,該文件位于 GoldenGate 安裝的 DIRPRM 文件夾中逻炊。將以下內(nèi)容放入該文件內(nèi):

defsfile c:\gg\dirdef\emp.def
sourcedb hr
table hrschema.emp;

參數(shù)的含義不言自明。我們希望 DEFGEN 檢查 HRSCHEMA 內(nèi)的 EMP 表并在 DIRDEF 子目錄中放置一個(gè)名為 EMP.DEF 的定義文件犁享。我們來調(diào)用 DEFGEN 并檢查其輸出。

C:\GG>defgen paramfile c:\gg\dirprm\defgen.prm


     Oracle GoldenGate Table Definition Generator for ODBC
                 Version 11.1.1.0.0 Build 078

Windows (optimized), Microsoft SQL Server on Jul 28 2010 19:16:56

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

                Starting at 2011-04-08 14:41:06

Operating System Version:
Microsoft Windows XP Professional, on x86
Version 5.1 (Build 2600: Service Pack 3)

Process id: 2948


** Running with the following parameters **


defsfile c:\gg\dirdef\emp.def
sourcedb hr
table hrschema.emp;
Retrieving definition for HRSCHEMA.EMP

Definitions generated for 1 tables in c:\gg\dirdef\emp.def
C:\GG>

如果您費(fèi)心檢查一下 EMP.DEF 的內(nèi)容豹休,就會(huì)發(fā)現(xiàn)其內(nèi)容類似如下所示:

  • Definitions created/modified 2011-07-07 10:27
  • Field descriptions for each column entry:
  • 1    Name
    
  • 2    Data Type
    
  • 3    External Length
    
  • 4    Fetch Offset
    
  • 5    Scale
    
  • 6    Level
    
  • 7    Null
    
  • 8    Bump if Odd
    
  • 9    Internal Length
    
  • 10 Binary Length
  • 11 Table Length
  • 12 Most Significant DT
  • 13 Least Significant DT
  • 14 High Precision
  • 15 Low Precision
  • 16 Elementary Item
  • 17 Occurs
  • 18 Key Column
  • 19 Sub Data Type

Definition for table HRSCHEMA.EMP
Record length: 121
Syskey: 0
Columns: 3
id 134 23 0 0 0 1 0 8 8 8 0 0 0 0 1 0 1 0
first_name 64 50 11 0 0 1 0 50 50 0 0 0 0 0 1 0 0 0
last_name 64 50 66 0 0 1 0 50 50 0 0 0 0 0 1 0 0 0
End of definition

基本上炊昆,它列出了所有表/列并使用更一般的定義描述了原生數(shù)據(jù)庫類型。

現(xiàn)在需要將 EMP.DEF 文件復(fù)制到目標(biāo)計(jì)算機(jī)威根,因?yàn)樵撐募枰?Replicat 進(jìn)程使用凤巨。Replicat 還必須執(zhí)行另一項(xiàng)轉(zhuǎn)換。該進(jìn)程將更一般的類型重新映射為數(shù)據(jù)庫特定的類型(但這次這些類型將對(duì)應(yīng)于目標(biāo)數(shù)據(jù)庫所使用的類型)洛搀「易拢可以使用 FTP/SFTP 或 SCP 傳輸來復(fù)制文件。(我個(gè)人使用免費(fèi) FTP/SFTP/SCP 客戶端 WinSCP 將 EMP.DEF 從 Windows 系統(tǒng)復(fù)制到 Linux 系統(tǒng)上的 /u01/app/oracle/gg/dirdef 文件夾中留美。)

oracle-sqlserver-goldengate-f6

準(zhǔn)備目標(biāo)數(shù)據(jù)庫

源端的準(zhǔn)備工作完成之后彰檬,現(xiàn)在輪到目標(biāo)計(jì)算機(jī)了伸刃。首先創(chuàng)建一個(gè)模式 (GG_USER) 和一個(gè)表,以便 Replicat 進(jìn)程可以在其中應(yīng)用來自源數(shù)據(jù)庫的事務(wù)逢倍。

[oracle@oradb ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 8 14:11:49 2011

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

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create user gg_user identified by welcome1;

User created.

SQL> grant connect, resource,select any dictionary to gg_user;

Grant succeeded.

SQL>

EMP 表應(yīng)位于 GG_USER 模式中:

SQL> create table gg_user.emp (id number not null, first_name varchar2(50), last_name varchar2(50));

Table created.

SQL>

一定要記住捧颅,如果 Replicat 進(jìn)程將數(shù)據(jù)應(yīng)用于位于不同模式中的表,GG_USER 將需要額外的權(quán)限(如 SELECT ANY TABLE较雕、LOCK ANY TABLE 等)碉哑。官方文檔中列出了所需權(quán)限的詳細(xì)列表。

針對(duì)初始數(shù)據(jù)加載配置 Extract 和 Replicat
首先在源計(jì)算機(jī)上配置 Extract 進(jìn)程亮蒋。將進(jìn)程命名為 INEXT(表示 INitial EXTract扣典,初始提取)慎玖。接下來贮尖,按照為 DEFGEN 實(shí)用程序創(chuàng)建參數(shù)文件的方式創(chuàng)建一個(gè)參數(shù)文件。文件名為 INEXT.PRM凄吏。

C:\GG>ggsci.exe

Oracle GoldenGate Command Interpreter for ODBC
Version 11.1.1.0.0 Build 078
Windows (optimized), Microsoft SQL Server on Jul 28 2010 18:55:52

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

GGSCI (MSSQL) 1> EDIT PARAMS INEXT

將以下內(nèi)容粘貼到 INEXT.PRM 中:

SOURCEISTABLE
SOURCEDB HR
RMTHOST ORADB, MGRPORT 7809
RMTFILE /u01/app/oracle/gg/dirdat/ex
TABLE hrschema.emp;

SOURCEISTABLE 參數(shù)指示 Extract 進(jìn)程直接從表而不是從事務(wù)日志獲取數(shù)據(jù)远舅。這是我們?yōu)閳?zhí)行完整提取所期望的行為。SOURCEDB 指向包含數(shù)據(jù)的數(shù)據(jù)庫痕钢。RMTHOST 和 MGRPORT 指定遠(yuǎn)程計(jì)算機(jī)和 Manager 端口图柏。RMTFILE 指定所提取的數(shù)據(jù)將寫入的文件。

這就是初始數(shù)據(jù)提取所需的全部配置任连。我們轉(zhuǎn)到 Linux 系統(tǒng)去配置初始數(shù)據(jù)加載蚤吹。

首先您必須處理 Manager 進(jìn)程:啟動(dòng) GGSCI 并創(chuàng)建一個(gè)名為 MGR.PRM 的參數(shù)文件。

[oracle@oradb gg]$ **./ggsci **

Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.0.0 Build 078
Linux, x86, 32bit (optimized), Oracle 11 on Jul 28 2010 13:22:25

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.
GGSCI (oradb) 1> EDIT PARAM MGR

在 MGR.PRM 中只需輸入一行:

PORT 7809

保存文件后在 GGSCI 內(nèi)執(zhí)行 START MANAGER 命令随抠,看看 Manager 是否正常啟動(dòng)裁着。

GGSCI (oradb) 2> START MANAGER

Manager started.

GGSCI (oradb) 3>

接下來需要為 Replicat 進(jìn)程設(shè)置參數(shù)。為此拱她,創(chuàng)建一個(gè)新的參數(shù)文件并將其命名為 INLOAD(表示 INitial LOADing二驰,初始加載)。

GGSCI (oradb) 3> EDIT PARAMS INLOAD

將以下內(nèi)容放入 INLOAD.PRM 內(nèi):

SPECIALRUN
END RUNTIME
USERID gg_user, PASSWORD welcome1
EXTFILE /u01/app/oracle/gg/dirdat/ex
SOURCEDEFS /u01/app/oracle/gg/dirdef/emp.def
MAP hrschema.emp, TARGET gg_user.emp;

SPECIALRUN 參數(shù)定義一個(gè)初始加載進(jìn)程(這是不使用檢查點(diǎn)的一次性加載)秉沼。文件中的下一行指示 Replicat 進(jìn)程在加載完成后終止桶雀。

接下來提供了數(shù)據(jù)庫用戶和口令、提取文件以及表定義唬复。最后一個(gè)參數(shù) MAP 指示 Replicat 將表 HRSCHEMA.EMP 重新映射到 GG_USER.EMP矗积。

運(yùn)行初始提取和加載

數(shù)據(jù)庫和進(jìn)程均已配置完成。現(xiàn)在可以啟動(dòng)初始加載敞咧,查看實(shí)際的數(shù)據(jù)復(fù)制過程棘捣。

首先需要運(yùn)行 Extract 進(jìn)程;它將提取 SQL Server 的 EMP 表中的所有數(shù)據(jù)休建,并將其寫入 Linux 主機(jī)上的 RMTFILE (/u01/app/oracle/gg/dirdat/ex) 中乍恐。

通過運(yùn)行 EXTRACT 命令并提供參數(shù)和日志文件作為命令行參數(shù)來啟動(dòng) Extract评疗。

C:\GG>extract paramfile dirprm\inext.prm reportfile dirrpt\inext.rpt


              Oracle GoldenGate Capture for ODBC
                 Version 11.1.1.0.0 Build 078

Windows (optimized), Microsoft SQL Server on Jul 28 2010 19:22:00

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

                Starting at 2011-04-08 15:57:48

Operating System Version:
Microsoft Windows XP Professional, on x86
Version 5.1 (Build 2600: Service Pack 3)

Process id:556

Description:


** Running with the following parameters **


2011-04-08 15:57:48 INFO OGG-01017 Wildcard resolution set to IMMEDIATE bec
ause SOURCEISTABLE is used.

Using the following key columns for source table HRSCHEMA.EMP: id.

CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 1G
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1.85G
CACHESIZEMAX (strict force to disk): 1.62G

Database Version:
Microsoft SQL Server
Version 10.00.1600
ODBC Version 03.52.0000

Driver Information:
SQLSRV32.DLL
Version 03.85.1132
ODBC Version 03.52

Database Language and Character Set:

Warning: Unable to determine the application and database codepage settings.
Please refer to user manual for more information.

2011-04-08 15:57:49 INFO OGG-01478 Output file /u01/app/oracle/gg/dirdat/ex
is using format RELEASE 10.4/11.1.

2011-04-08 15:57:55 INFO OGG-01226 Socket buffer size set to 27985 (flush s
ize 27985).

Processing table HRSCHEMA.EMP


  •               ** Run Time Statistics **                         *
    

Report at 2011-04-08 15:57:55 (activity since 2011-04-08 15:57:49)

Output to /u01/app/oracle/gg/dirdat/ex:

From Table HRSCHEMA.EMP:
# inserts: 4
# updates: 0
# deletes: 0
# discards: 0

C:\GG>

運(yùn)行時(shí)統(tǒng)計(jì)信息顯示已成功提取 4 行數(shù)據(jù)。我們轉(zhuǎn)到 Linux 系統(tǒng)去啟動(dòng) Replicat禁熏。

要將所提取的數(shù)據(jù)應(yīng)用于目標(biāo)數(shù)據(jù)庫壤巷,請(qǐng)運(yùn)行 replicat 命令并提供準(zhǔn)備好的參數(shù)文件。下面是運(yùn)行 replicat 的節(jié)選:

[oracle@oradb gg]$ ./replicat paramfile dirprm/inload.prm


             Oracle GoldenGate Delivery for Oracle
                 Version 11.1.1.0.0 Build 078

Linux, x86, 32bit (optimized), Oracle 11 on Jul 28 2010 15:42:30

Copyright (C) 1995, 2010, Oracle and/or its affiliates.All rights reserved.

                Starting at 2011-04-11 12:52:52

Operating System Version:
Linux
Version #1 SMP Mon Mar 29 20:06:41 EDT 2010, Release 2.6.18-194.el5
Node: oradb
Machine: i686
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited

Process id: 23383

Description:


** Running with the following parameters **


SPECIALRUN
END RUNTIME
USERID gg_user, PASSWORD ********
EXTFILE /u01/app/oracle/gg/dirdat/ex
SOURCEDEFS /u01/app/oracle/gg/dirdef/emp.def
MAP hrschema.emp, TARGET gg_user.emp;

CACHEMGR virtual memory values (may have been adjusted)
CACHEBUFFERSIZE: 64K
CACHESIZE: 512M
CACHEBUFFERSIZE (soft max): 4M
CACHEPAGEOUTSIZE (normal): 4M
PROCESS VM AVAIL FROM OS (min): 1G
CACHESIZEMAX (strict force to disk): 881M

Database Version:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

...

Reading /u01/app/oracle/gg/dirdat/ex, current RBA 1210, 4 records

Report at 2011-04-11 12:53:15 (activity since 2011-04-11 12:53:14)

From Table HRSCHEMA.EMP to GG_USER.EMP:
# inserts: 4
# updates: 0
# deletes: 0
# discards: 0

Last log location read:
FILE: /u01/app/oracle/gg/dirdat/ex
RBA: 1210
TIMESTAMP: 2011-04-08 16:57:55.433993
EOF: NO
READERR: 400

...

[oracle@oradb gg]$

您可以作為 GG_USER 登錄 Oracle Database瞧毙,檢查 EMP 表的內(nèi)容胧华。

SQL> select id, first_name from emp;

 ID FIRST_NAME

  1 Dave
  2 Chris
  3 David
  4 Shawn

SQL>

EMP 表現(xiàn)在包含原先在 SQL Server 上插入的所有記錄的副本。

實(shí)時(shí)數(shù)據(jù)捕獲配置

Oracle Database 現(xiàn)在已有了 SQL Server 的 EMP 表的一個(gè)精確副本宙彪,可以創(chuàng)建實(shí)時(shí)捕獲配置了矩动。我們將 Extract 和 Replicat 進(jìn)程配置成一直運(yùn)行并不斷傳輸/應(yīng)用 EMP 表的更改。

為了實(shí)現(xiàn)這一新配置释漆,需要為提取和復(fù)制創(chuàng)建新的參數(shù)文件悲没。不過首先必須在 SQL Server 上另外執(zhí)行兩個(gè)步驟:確認(rèn)數(shù)據(jù)庫已設(shè)置為完全恢復(fù),然后執(zhí)行 EMP 數(shù)據(jù)庫的完整數(shù)據(jù)庫備份男图。如果執(zhí)行完整備份失敗示姿,將阻礙 Extract 進(jìn)程捕獲實(shí)時(shí)數(shù)據(jù)更改。

通過右鍵單擊 EMP 數(shù)據(jù)庫逊笆,選擇 Properties 并檢查 Recovery model 的值栈戳,可以輕松檢查該數(shù)據(jù)庫是否處于完全恢復(fù)模式。

oracle-sqlserver-goldengate-f7

執(zhí)行完整備份也只需幾次單擊即可完成难裆。右鍵單擊 EMP 數(shù)據(jù)庫子檀,選擇 Tasks,然后選擇 Back Up乃戈。這將啟動(dòng) Back Up Database 對(duì)話框褂痰。確認(rèn) Backup type 配置為 Full,然后單擊 OK症虑。

oracle-sqlserver-goldengate-f8

如果一切順利缩歪,幾秒鐘后我們將看到操作成功的通知。

oracle-sqlserver-goldengate-f9

現(xiàn)在需要設(shè)置進(jìn)程谍憔。首先在 Windows 系統(tǒng)上配置 Manager 進(jìn)程驶冒。在初始加載階段我們跳過了這一步,但在構(gòu)建的新配置中韵卤,Extract 進(jìn)程必須一直運(yùn)行。這就需要一個(gè)執(zhí)行資源管理功能的活動(dòng) Manager 進(jìn)程崇猫。將遵循與 Linux 系統(tǒng)配置相同的步驟沈条。

GGSCI (MSSQL) 1> EDIT PARAM MGR

GGSCI (MSSQL) 2>

在 MGR.PRM 中填入一行用于設(shè)置 Manager 實(shí)例的端口。

PORT 7809

然后啟動(dòng) Manager诅炉。

GGSCI (MSSQL) 2> START MANAGER

Starting Manager as service ('GGSMGR')...
Service started.

GGSCI (MSSQL) 3>

我們來創(chuàng)建一個(gè)挖掘事務(wù)日志的新 extract 組蜡歹,將其命名為 MSEXT屋厘。然后設(shè)置數(shù)據(jù)更改應(yīng)寫入的目標(biāo) (/u01/app/oracle/gg/dirdat/ms)。

GGSCI (MSSQL) 3> ADD EXTRACT MSEXT, TRANLOG, BEGIN NOW
EXTRACT added.

GGSCI (MSSQL) 4> ADD RMTTRAIL /u01/app/oracle/gg/dirdat/ms, EXTRACT MSEXT
RMTTRAIL added.

還需要一個(gè)新的參數(shù)文件月而。

GGSCI (MSSQL) 5> EDIT PARAMS MSEXT

GGSCI (MSSQL) 6>

在其中輸入以下代碼行:

EXTRACT MSEXT
SOURCEDB HR
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT
RMTHOST ORADB, MGRPORT 7809
RMTTRAIL /u01/app/oracle/gg/dirdat/ms
TABLE HRSCHEMA.EMP;

這里不同的是我們省略了 SOURCEISTABLE 參數(shù)并引入一個(gè)新參數(shù):TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT汗洒。此選項(xiàng)告訴 Extract 進(jìn)程定期檢查和刪除 CDC 捕獲作業(yè),從而提高性能并減小捕獲數(shù)據(jù)所占用的空間父款。

源計(jì)算機(jī)上所需要的配置就是這些溢谤。我們轉(zhuǎn)到目標(biāo)計(jì)算機(jī)去配置復(fù)制。

在 Linux 系統(tǒng)上憨攒,首先需要?jiǎng)?chuàng)建一個(gè)檢查點(diǎn)表世杀。檢查點(diǎn)用于存儲(chǔ) Extract 和 Replicat 進(jìn)程的當(dāng)前讀/寫位置。它們可以防止數(shù)據(jù)丟失并確保進(jìn)程可以進(jìn)行故障恢復(fù)(例如肝集,如果源和目標(biāo)計(jì)算機(jī)之間的網(wǎng)絡(luò)暫時(shí)中斷)瞻坝。通過在目標(biāo)機(jī)上發(fā)出 ADD CHECKPOINT 命令創(chuàng)建一個(gè)表,用來保存檢查點(diǎn)信息杏瞻。

GGSCI (oradb) 1> DBLOGIN USERID gg_user, PASSWORD welcome1
Successfully logged into database.

GGSCI (oradb) 2> ADD CHECKPOINTTABLE gg_user.chkpt

Successfully created checkpoint table GG_USER.CHKPT.

GGSCI (oradb) 3>

添加一個(gè) Replicat 組并設(shè)置其參數(shù)所刀。

GGSCI (oradb) 3> ADD REPLICAT MSREP, EXTTRAIL /u01/app/oracle/gg/dirdat/ms, CHECKPOINTTABLE gg_user.chkpt
REPLICAT added.

GGSCI (oradb) 4> EDIT PARAMS MSREP

GGSCI (oradb) 5>

最后一步是將以下代碼行填入 MSREP.PRM。

REPLICAT MSREP
SOURCEDEFS /u01/app/oracle/gg/dirdef/emp.def
USERID gg_user, PASSWORD welcome1
MAP hrschema.emp, TARGET gg_user.emp;

配置現(xiàn)已完成捞挥。下面我們來啟動(dòng) Extract 和 Replicat 執(zhí)行一些測(cè)試浮创。

啟動(dòng)并測(cè)試聯(lián)機(jī)事務(wù)復(fù)制

要啟動(dòng) Extract 進(jìn)程,請(qǐng)使用 GGSCI 并執(zhí)行 START EXTRACT 命令树肃。

GGSCI (MSSQL) 1> START EXTRACT MSEXT

Sending START request to MANAGER ('GGSMGR') ...
EXTRACT MSEXT starting

GGSCI (MSSQL) 2>

在 Linux 系統(tǒng)上蒸矛,使用 START REPLICAT 命令。

GGSCI (oradb) 1> START REPLICAT MSREP

Sending START request to MANAGER ...
REPLICAT MSREP starting

GGSCI (oradb) 2>

以 GG_USER 身份登錄胸嘴,查看 EMP 表的內(nèi)容雏掠。

SQL> select id, first_name from emp;

 ID FIRST_NAME

  1 Dave
  2 Chris
  3 David
  4 Shawn

SQL>

沒有什么更新。自我們上次檢查之后劣像,數(shù)據(jù)未曾更改乡话。返回 SQL Server 計(jì)算機(jī)運(yùn)行以下查詢,在源的 EMP 表中另外添加一行耳奕。

BEGIN TRAN
INSERT INTO [hrschema].[emp] ([id], [first_name], [last_name]) VALUES (9,'Gar','Samuelson')
COMMIT TRAN

oracle-sqlserver-goldengate-f10

返回 Oracle Database 查看該處是否有任何更改绑青。

SQL> select id, first_name from emp;

 ID FIRST_NAME

  1 Dave
  2 Chris
  3 David
  4 Shawn
  9 Samuelson

SQL>

恭喜!不到一秒就完成了數(shù)據(jù)復(fù)制屋群,及時(shí)反映了每個(gè)事務(wù)闸婴。

總結(jié)

在本文中,我們對(duì)某些 Oracle GoldenGate 特性進(jìn)行了非成瞩铮基本的演示邪乍。您應(yīng)該了解有許多不同拓?fù)浣Y(jié)構(gòu)和使用情況。例如,可以將 GoldenGate 配置成執(zhí)行雙向復(fù)制(兩個(gè)不同的數(shù)據(jù)庫同時(shí)互相復(fù)制更改)庇楞。還有廣播(一個(gè)數(shù)據(jù)庫復(fù)制到多個(gè)目標(biāo))和整合(許多數(shù)據(jù)庫復(fù)制到一個(gè)中心數(shù)據(jù)庫)配置榜配。可以使用 GoldenGate 實(shí)現(xiàn)查詢分流(將報(bào)告與生產(chǎn)分離吕晌,但避免了傳統(tǒng)數(shù)據(jù)倉庫的時(shí)間空隙)蛋褥。GoldenGate 還是一個(gè)能夠?qū)崿F(xiàn)零停機(jī)升級(jí)及數(shù)據(jù)庫遷移的功能強(qiáng)大的解決方案。

有關(guān)特性睛驳、支持的數(shù)據(jù)庫和平臺(tái)以及推薦架構(gòu)的詳細(xì)信息烙心,請(qǐng)參見 Oracle 技術(shù)網(wǎng)上提供的官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柏靶,一起剝皮案震驚了整個(gè)濱河市弃理,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屎蜓,老刑警劉巖痘昌,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炬转,居然都是意外死亡辆苔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門扼劈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻啤,“玉大人,你說我怎么就攤上這事荐吵∑锶撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵先煎,是天一觀的道長贼涩。 經(jīng)常有香客問我,道長薯蝎,這世上最難降的妖魔是什么遥倦? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮占锯,結(jié)果婚禮上袒哥,老公的妹妹穿的比我還像新娘。我一直安慰自己消略,他們只是感情好堡称,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布侠讯。 她就那樣靜靜地躺著秀存,像睡著了一般吃媒。 火紅的嫁衣襯著肌膚如雪屹培。 梳的紋絲不亂的頭發(fā)上纫版,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天梭稚,我揣著相機(jī)與錄音拾弃,去河邊找鬼串纺。 笑死哩照,一個(gè)胖子當(dāng)著我的面吹牛挺物,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播飘弧,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼识藤,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了次伶?” 一聲冷哼從身側(cè)響起痴昧,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冠王,沒想到半個(gè)月后赶撰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柱彻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年豪娜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哟楷。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瘤载,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卖擅,到底是詐尸還是另有隱情鸣奔,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布惩阶,位于F島的核電站挎狸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏琳猫。R本人自食惡果不足惜伟叛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脐嫂。 院中可真熱鬧统刮,春花似錦、人聲如沸账千。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匀奏。三九已至鞭衩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背论衍。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工瑞佩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坯台。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓炬丸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜒蕾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稠炬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容