官方地址: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 GoldenGate(Oracle 融合中間件系列的組成部分)來滿足新應(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ù)庫扰才。
以上是 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 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 ~]PATH: export LD_LIBRARY_PATH=ORACLE_BASE/gg
啟動(dòng) GGSCI 并執(zhí)行 CREATE SUBDIRS哮内。
[oracle@oradb ggs]ORACLE_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ù)庫鲫竞。
在 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í)行驳棱。
現(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)類似如下所示:
現(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 文件夾中留美。)
準(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ù)模式。
執(zhí)行完整備份也只需幾次單擊即可完成难裆。右鍵單擊 EMP 數(shù)據(jù)庫子檀,選擇 Tasks,然后選擇 Back Up乃戈。這將啟動(dòng) Back Up Database 對(duì)話框褂痰。確認(rèn) Backup type 配置為 Full,然后單擊 OK症虑。
如果一切順利缩歪,幾秒鐘后我們將看到操作成功的通知。
現(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 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)上提供的官方文檔。