天天看點

Oracle GoldenGate學習筆記

Oracle GoldenGate學習筆記

1.Oracle GoldenGate的體系結構

    Oracle GoldenGate(OGG)是一種基于日志的結構化資料複制方式,它通過解析源資料庫線上日志或歸檔日志獲得資料的增删改變化,再将這些變化應用到目标資料庫,實作源資料庫與目标資料庫同步,雙活。

    OGG體系結構如下:

      *Manager*                                               *Manager*

                     *Extract*                *Data Pump*                 *Replicat*

    Source Database -----------> Loacl Trail -------------> Remote Trail ------------> Target Database

    ------------------------------------------------------  ------------------------------------------

                        Source Server                                      Target Server

    實體結構可分為源端(Source Server),目标端(Target Server).

    邏輯結構可分為資料抽取程序(Extract),傳輸程序(Data Pump),複制程序(Replicat).

    OGG各個程序的作用:

    程序統一由管理程序(Manager)管理。

    抽取程序(Extract)将Redo日志或歸檔日志作為資料源,當其發生變化時抽取程序會将主鍵字段和變化字段(如果是既無主鍵又無唯一索引的表就會抽取全部字段)形成本地的Trail檔案(Local Trail)。

    傳輸程序(Data Pump)根據目标端的IP和端口配置将本地Trail檔案發送至目标端,生成遠端Trail檔案(Temote Trail)。

    複制程序(Replicat)根據遠端Trail檔案反向生成SQL語句在目标資料庫中執行。

    OGG要求源端資料庫必須開啟歸檔模式,以保證正常擷取歸檔資料。

    針對既無主鍵又無唯一索引的表,OGG的處理方式為:

    一是打開資料最小附加日志開關: alter database add supplemental log data.

    二是增加單表級别的表結構字段資訊的擷取: add trandata.

    這兩項操作可以保證所用的表都能正确抽取及複制。

2.Oracle GoldenGate 12c下載下傳位址

    進入Oracle官方網址www.oracle.com,選擇Downloads/Middleware/GoldenGate

    http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

    選擇下面的下載下傳選項:

    Oracle GoldenGate 12.2.0.1.1 for Oracle on Linux x86-64 (454 MB) 

    下載下傳檔案: fbo_ggs_Linux_x64_shiphome.zip

    安裝和配置可以參考Oracle官方線上文檔:

    http://docs.oracle.com/goldengate/c1221/gg-winux/index.html

    http://docs.oracle.com/goldengate/c1221/gg-winux/GIORA/GUID-3108B63B-F2A2-446E-8006-D685C8E9B3A3.htm#GIORA110

3.Oracle GoldenGate安裝

    Oracle GoldenGate安裝很簡單,但首先需要安裝Oracle資料庫,安裝方法參考Oracle資料庫安裝文檔。

    本例安裝OGG的環境:

    作業系統: Redhat Enterprise Linux 7.3

    資料庫:   Oracle 12c 12.1.0.2

    OGG版本:  Oracle GoldenGate 12c 12.2.0.1.1

    需要設定Oracle資料庫的全局變量:

    export ORACLE_BASE=/u01/app/oracle;

    export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;

    export ORACLE_SID=sales;

    建立OGG的安裝目錄:

    # mkdir /u01/app/ogg

    # chown -R oracle /u01/app/ogg

    # chmod -R 775 /u01/app/ogg

    設定OGG的全局變量:

    export PATH=$ORACLE_HOME/bin:/u01/app/ogg/12.2.0:$PATH;

    export LD_LIBBARY_PATH=$ORACLE_HOME/lib;/u01/app/ogg/12.2.0:/lib:/usr/lib;

    然後将Oracle GoldenGate安裝包解壓,在oracle使用者下運作安裝程式即可.

    # unzip fbo_ggs_Linux_x64_shiphome.zip

    # su - oracle

    $ export

    $ cd /fbo_ggs_Linux_x64_shiphome/Disk1

    $ ./runInstaller

    Software Location: 775 /u01/app/ogg/12.2.0                -- OGG軟體的安裝位置

    Database Location: /u01/app/oracle/product/12.1.0/db_1    -- 需要同步的資料庫的位置

    在源端與目标端均需要安裝.

    安裝好後在安裝目錄執行ggsci即可運作Oracle GoldenGate工具:

    $ cd /u01/app/ogg/12.2.0

    $ ggsci

    GGSCI> info all

    GGSCI> start manager

    在Oracle中建立OGG通路的賬号,在源端與目标端均需要建立.

    $ sqlplus / as sysdba;

    SQL> create user ogg identified by ogg;

    SQL> grant connect,resource,unlimited tablespace to ogg;

    SQL> grant unlimited tablespace to ogg;

    SQL> grant execute on utl_file to ogg;

    SQL> grant dba to ogg;

    進入OGG指令界面,确認能通路Oracle資料庫.

    $ cd /u01/app/ogg/12.2.0

    $ ggsci

    GGSCI (rhel7a) 1> dblogin userid ogg

    Password:

    Successfully logged into database.

4.Oracle GoldenGate源端系統配置

    (1).資料庫開啟歸檔模式

    $ sqlplus / as sysdba;

    SQL> shutdown immediate;

    SQL> startup mount;

    SQL> alter database archivelog;

    SQL> alter database add supplemental log data;          -- 添加附加日志

    SQL> alter database force logging;                      -- 強制記錄日志

    SQL> alter datebase open;

    (2).添加需要同步的表

    文法結構:

    ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]

    ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]

    例子:

    $ cd /u01/app/ogg/12.2.0

    $ ggsci

    GGSCI> dblogin userid ogg

    GGSCI> add trandata astt.*

    (3).編輯源端系統配置參數.

    管理器配置參數:

    GGSCI (rhel7a) 1> edit param mgr

    PORT 7809

    日志提取配置參數:

    GGSCI (rhel7a) 1> edit params extastt

    EXTRACT extastt

    USERID ogg, PASSWORD ogg

    EXTTRAIL /u01/app/ogg/12.2.0/dirdat/lt

    TABLE astt.*;

    資料傳輸配置參數:

    GGSCI (rhel7a) 1> edit params pumpastt

    EXTRACT pumpastt

    USERID ogg, PASSWORD ogg

    RMTHOST 192.168.1.72, MGRPORT 7809

    RMTTRAIL /u01/app/ogg/12.2.0/dirdat/rt

    TABLE astt.*;

    (4).添加源端系統程序.

    (4.1).添加提取主程序(Adding the Primary Extract):

    DBLOGIN USERIDALIAS alias

    ADD EXTRACT group name 

    {, TRANLOG | , INTEGRATED TRANLOG}

    {, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} | SCN value} 

    [, THREADS n]

    (4.2).添加Trail檔案(Add the Local Trail):

    ADD EXTTRAIL pathname, EXTRACT group name

    (4.3).添加傳輸程序(Add the Data Pump Extract Group):

    ADD EXTRACT group name, EXTTRAILSOURCE trail name 

    (4.4).添加遠端Trail檔案(Add the Remote Trail):

    ADD RMTTRAIL pathname, EXTRACT group name

    例子:

    $ ggsci

    add extract extastt, tranlog, begin now

    add exttrail /u01/app/ogg/12.2.0/dirdat/lt, extract extastt

    add extract pumpastt, exttrailsource /u01/app/ogg/12.2.0/dirdat/lt

    add rmttrail /u01/app/ogg/12.2.0/dirdat/rt, extract pumpastt

    start extract extastt

    start extract pumpastt

    源端系統打開防火牆端口:1521,7809.

5.Oracle GoldenGate目标端系統配置

    (1).修改Oracle系統參數,允許執行OGG複制.

    $ sqlplus / as sysdba;

    SQL> alter system set enable_goldengate_replication=true scope=both;

    (2).編輯目标端系統配置參數.

    管理器配置參數:

    GGSCI (rhel7b) 1> edit param mgr

    PORT 7809

    DYNAMICPORTLIST 7810-7820  --遠端隊列端口

    GLOBALS配置參數:

    GGSCI (rhel7b) 1> edit params ./GLOBALS

    CHECKPOINTTABLE ogg.checkpoint

    資料複制配置參數:

    GGSCI (rhel7b) 1> edit params repastt

    REPLICAT repastt

    USERID ogg, PASSWORD ogg

    ASSUMETARGETDEFS

    MAP astt.*, TARGET astt.*;

    (3).添加目标端系統程序.

    $ ggsci

    dblogin userid ogg

    add checkpointtable ogg.checkpoint                    -- 如果已存在需删除 delete checkpointtable ogg.checkpoint

    add replicat repastt, exttrail /u01/app/ogg/12.2.0/dirdat/rt, checkpointtable ogg.checkpoint

    start replicat repastt

    目标端系統打開防火牆端口:1521,7809,7810-7820.

6.測試同步

    在源端資料庫的表中插入資料.

    檢查源端ogg的dirdat目錄中是否有生成提取檔案.

    檢查目标端ogg的dirdat目錄中是否有接收到檔案.

    檢查目标端資料庫中是否已同步資料.

7.重新安裝OGG.

    先停止OGG的程序

    $ ggsci

    stop extastt

    stop pumpastt

    stop mgr

    删除ogg目錄所有檔案,修改下inventory.xml,去掉OGG的HOME配置即可.

    $ cd /u01/app

    $ rm -r ogg

    $ cd /u01/app/oraInventory/ContentsXML

    $ vi inventory.xml

8.檢視錯誤方法及常見錯誤資訊    

    如OGG的程序有中斷,可以通過指令檢視錯誤資訊:

    $ ggsci

    view report repastt

    常見錯誤資訊:

    (1).參數配置錯誤

    OGG-00041  Data source not specified

    檢查參數是否拼寫錯誤.

    (2).遠端主機防火牆未打開,或動态隊列端口配置有問題

    OGG-01224  TCP/IP error 113 (No route to host), endpoint: 192.168.1.72:7820

    一般OGG的DUMP程序會從管理端口7809後面尋找遠端主機動态端口,須保證遠端主機動态隊列端口設定正确,防火牆有開放端口.

繼續閱讀