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後面尋找遠端主機動态端口,須保證遠端主機動态隊列端口設定正确,防火牆有開放端口.