使用Goldengate 實現Oracle for Oracle 單向資料同步

來源:互聯網
上載者:User

標籤:goldengate 資料同步

實驗環境

資料來源端:  host1 ip 192.168.199.163  

資料目標端: host2 ip 192.168.199.104


兩台機器都安裝 http://lqding.blog.51cto.com/9123978/1694971 文中描述安裝配置好了Goldengate 。


要實現資料的同步,Oracle源端必須滿足如下設定

  1. Oracle需要運行在歸檔模式下

SQL> startup mount ORACLE instance started.Total System Global Area  835104768 bytesFixed Size    2217952 bytesVariable Size  574621728 bytesDatabase Buffers  255852544 bytesRedo Buffers    2412544 bytesDatabase mounted.SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.

2. 開啟日誌附加屬性

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;Database altered.SQL> ALTER SYSTEM SWITCH LOGFILE;System altered.


ogg安裝目錄下提供了一些demo的sql

[[email protected] ogg]$ ls demo_ora_*demo_ora_create.sql  demo_ora_insert.sql  demo_ora_lob_create.sql  demo_ora_misc.sql  demo_ora_pk_befores_create.sql  demo_ora_pk_befores_insert.sql  demo_ora_pk_befores_updates.sql


我們使用demo_ora_create.sql在源和目的端都建立兩張表,在源端使用demo_ora_insert.sql插入資料。

host1

SQL> alter user scott identified by tiger account unlock;User altered.SQL> grant resource to scott;  #ggsci 登入資料庫時需要該許可權Grant succeeded.SQL> grant select any dictionary to scott; # add trandata時需要該許可權Grant succeeded.SQL> conn scott/tigerConnected.SQL> @demo_ora_create.sqlSQL> @demo_ora_insert.sql

host2

SQL> alter user scott identified by tiger account unlock;User altered.SQL> grant resource to scott;  #ggsci 登入資料庫時需要該許可權Grant succeeded.SQL> grant select any dictionary to scott; # add trandata時需要該許可權SQL> conn scott/tigerConnected.SQL> @demo_ora_create.sql


為需要同步的表,添加附加日誌

GGSCI (localhost.localdomain) 1> dblogin userid scott, password tigerSuccessfully logged into database.GGSCI (localhost.localdomain) 2> add trandata scott.tcustmerLogging of supplemental redo data enabled for table SCOTT.TCUSTMER.GGSCI (localhost.localdomain) 3> add trandata scott.tcustordLogging of supplemental redo data enabled for table SCOTT.TCUSTORD.


一、初始化載入資料


在源端配置一個初始化Extract,用來同步表中現有資料

GGSCI (localhost.localdomain) 7> ADD EXTRACT EINILOAD, SOURCEISTABLEEXTRACT added.

ADD EXTRACT命令用來添加一個EXTRACT, EINILOAD為Extract的group name 。SOURCEISTABLE表示資料來源為表。

查看Extract的資訊

GGSCI (localhost.localdomain) 9> INFO EXTRACT *, TASKSEXTRACT    EINILOAD  Initialized   2015-09-11 15:25   Status STOPPEDCheckpoint Lag       Not AvailableLog Read Checkpoint  Not Available                     First Record         Record 0Task                 SOURCEISTABLE

配置初始化載入的捕獲參數

GGSCI (localhost.localdomain) 10> edit params EINILOAD---- GoldenGate Initial Data Capture-- for TCUSTMER and TCUSTORD--EXTRACT EINILOADUSERID system, PASSWORD "oracle"RMTHOST 192.168.199.104, MGRPORT 7809RMTTASK REPLICAT, GROUP RINILOADTABLE SCOTT.TCUSTMER;TABLE SCOTT.TCUSTORD;


在目標端,配置一個REPLICAT

GGSCI (localhost.localdomain) 2> ADD REPLICAT RINILOAD, SPECIALRUNREPLICAT added.


查看REPLICAT資訊

GGSCI (localhost.localdomain) 4> info replicat *, tasksREPLICAT   RINILOAD  Initialized   2015-08-22 14:18   Status STOPPEDCheckpoint Lag       00:00:00 (updated 00:02:50 ago)Log Read Checkpoint  Not AvailableTask                 SPECIALRUN

配置Replicat參數

GGSCI (localhost.localdomain) 5> edit params riniload---- GoldenGate Initial Load Delivery--REPLICAT RINILOADASSUMETARGETDEFSUSERID system, PASSWORD "oracle"DISCARDFILE ./dirrpt/RINILOAD.dsc, PURGEMAP scott.*, TARGET scott.*;


啟動Extract

GGSCI (localhost.localdomain) 11> start extract einiloadSending START request to MANAGER ...EXTRACT EINILOAD starting


查看日誌

GGSCI (localhost.localdomain) 21> view report einiload

如果有報錯,尋找原因並解決

Processing table SCOTT.TCUSTMERProcessing table SCOTT.TCUSTORD************************************************************************                   ** Run Time Statistics **                         ************************************************************************Report at 2015-09-11 16:23:40 (activity since 2015-09-11 16:23:33)Output to RINILOAD:From Table SCOTT.TCUSTMER:       #                   inserts:         2       #                   updates:         0       #                   deletes:         0       #                  discards:         0From Table SCOTT.TCUSTORD:       #                   inserts:         2       #                   updates:         0       #                   deletes:         0       #                  discards:         0REDO Log Statistics  Bytes parsed                    0  Bytes output                  574

日誌顯示,已成功同步資料。

到目的庫上驗證

SQL> select count(*) from tcustmer;  COUNT(*)---------- 2SQL> select count(*) from tcustord;  COUNT(*)---------- 2


二、配置資料即時同步

源端,配置一個即時Extract 

GGSCI (localhost.localdomain) 22> ADD EXTRACT EORAKK, TRANLOG, BEGIN NOW, THREADS 1EXTRACT added.

編輯Extract的參數檔案

GGSCI (localhost.localdomain) 23> EDIT PARAMS EORAKK---- Change Capture parameter file to capture-- TCUSTMER and TCUSTORD Changes--EXTRACT EORAKKUSERID system, PASSWORD oracleRMTHOST 192.168.199.104, MGRPORT 7809RMTTRAIL ./dirdat/KKTABLE SCOTT.TCUSTMER;TABLE SCOTT.TCUSTORD;

為Extract添加遠端tail file,也就是說這個tail file是在目的端產生的。

GGSCI (localhost.localdomain) 24> ADD RMTTRAIL ./dirdat/KK, EXTRACT EORAKK, MEGABYTES 5RMTTRAIL added.


驗證結果

GGSCI (localhost.localdomain) 28> INFO RMTTRAIL *       Extract Trail: ./dirdat/KK             Extract: EORAKK               Seqno: 0                 RBA: 0           File Size: 5M

啟動Extract 進程

GGSCI (localhost.localdomain) 29> start extract eorakkSending START request to MANAGER ...EXTRACT EORAKK starting

驗證結果

GGSCI (localhost.localdomain) 30> INFO EXTRACT EORAKK, DETAILEXTRACT    EORAKK    Last Started 2015-09-11 17:07   Status RUNNINGCheckpoint Lag       00:00:00 (updated 00:00:01 ago)Log Read Checkpoint  Oracle Redo Logs                     2015-09-11 17:07:47  Thread 1, Seqno 25, RBA 36139008                     SCN 0.1174781 (1174781)  Target Extract Trails:  Remote Trail Name                                Seqno        RBA     Max MB  ./dirdat/KK                                          0       1050          5  Extract Source                          Begin             End               /u01/app/oracle/oradata/orcl/redo01.log  2015-09-11 16:58  2015-09-11 17:07  Not Available                           * Initialized *   2015-09-11 16:58Current directory    /u01/app/oggReport file          /u01/app/ogg/dirrpt/EORAKK.rptParameter file       /u01/app/ogg/dirprm/eorakk.prmCheckpoint file      /u01/app/ogg/dirchk/EORAKK.cpeProcess file         /u01/app/ogg/dirpcs/EORAKK.pceStdout file          /u01/app/ogg/dirout/EORAKK.outError log            /u01/app/ogg/ggserr.log
GGSCI (localhost.localdomain) 31> VIEW REPORT EORAKK
GGSCI (localhost.localdomain) 32> INFO ALLProgram     Status      Group       Lag at Chkpt  Time Since ChkptMANAGER     RUNNING                                           EXTRACT     RUNNING     EORAKK      00:00:00      00:00:06


目標端,配置REPLICAT

安裝checkpoint表

配置checkpoint表的名稱

GGSCI (localhost.localdomain) 33> EDIT PARAMS ./GLOBALSHECKPOINTTABLE system.ggschkpt

產生checkpoint表 

GGSCI (localhost.localdomain) 1> DBLOGIN USERID system, PASSWORD oracleSuccessfully logged into database.GGSCI (localhost.localdomain) 2> ADD CHECKPOINTTABLENo checkpoint table specified, using GLOBALS specification (system.ggschkpt)...Successfully created checkpoint table system.ggschkpt.GGSCI (localhost.localdomain) 3>


添加Replicat

GGSCI (localhost.localdomain) 3> ADD REPLICAT RORAKK, EXTTRAIL ./dirdat/KKREPLICAT added.


建立Replicat的參數檔案

GGSCI (localhost.localdomain) 4> EDIT PARAMS RORAKK---- Change Delivery parameter file to apply-- TCUSTMER and TCUSTORD Changes--REPLICAT RORAKKUSERID system, PASSWORD oracleHANDLECOLLISIONSASSUMETARGETDEFSDISCARDFILE ./dirrpt/RORAKK.DSC, PURGEMAP scott.tcustmer, TARGET scott.tcustmer;MAP scott.tcustord, TARGET scott.tcustord;

啟動Replicat

GGSCI (localhost.localdomain) 5> start replicat rorakkSending START request to MANAGER ...REPLICAT RORAKK starting

驗證結果

GGSCI (localhost.localdomain) 6> info replicat rorakkREPLICAT   RORAKK    Last Started 2015-08-22 15:49   Status RUNNINGCheckpoint Lag       00:00:00 (updated 00:00:08 ago)Log Read Checkpoint  File ./dirdat/KK000000                     First Record  RBA 1050


驗證資料同步

在來源資料庫,執行如下指令碼,對兩個表進行insert、update、delete操作

[[email protected] ogg]$ sqlplus scott/tigerSQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 11 17:58:17 2015Copyright (c) 1982, 2009, Oracle.  All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> @/u01/app/ogg/demo_ora_misc.sql

查看源表中的資料

SQL> select count(*) from tcustmer;  COUNT(*)---------- 5SQL> select count(*) from tcustord;  COUNT(*)---------- 3

查看目的表的資料

SQL> select count(*) from tcustmer;  COUNT(*)---------- 5SQL> select count(*) from tcustord;  COUNT(*)---------- 3

資料已同步


本文出自 “叮咚” 部落格,請務必保留此出處http://lqding.blog.51cto.com/9123978/1695162

使用Goldengate 實現Oracle for Oracle 單向資料同步

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.