1 簡介
Oracle Golden Gate軟件是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。Oracle Golden Gate可以在異構的IT基礎結構(包括幾乎所有常用操作系統平台和數據庫平台)之間實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構
2 GoldenGate安裝
2.1 GoldenGate的獲取
Oracle GoldenGate(下文簡稱ogg)軟件可以通過ORACLE官方網站進行下載,根據ORACLE的版本及操作系統來下載對應版本的ogg,官方下載地址:
http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
2.2 GoldenGate的安裝
ogg安裝非常簡單,但需在源數據庫和目標數據庫服務器上均安裝ogg軟件即可,具體請參考以下步驟:
1、 將壓縮包解壓到系統目錄/oracle/ogg (該路徑可以根據需要自行選擇)
2、 進入/oracle/ogg目錄,運行./ggsci,進入ogg管理控制台
3、 在ogg控制台輸入命令: create subdirs ,讓ogg創建其需要用到的目錄
4、 手工在ogg目錄下創建discard文件夾,mkdir discard
5、 配置操作系統環境變量(請確保環境變量配置了ORACLE_HOME和ORACLE_SID)
export LD_LIBRARY_PATH=/oradata/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
6、 在ORACLE中創建ogg專屬用戶
[oracle@local ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> create user ogg identified by ogg; (注:賬號密碼根據實際情況設置)
SQL> grant connect,resource to ogg;
SQL> grant unlimited tablespace to ogg;
SQL> grant execute on utl_file to ogg;
7、 為新創建的ogg用戶執行配置腳本
在ogg的安裝目錄下登陸sqlplus,使用sys登陸sqlplus,然后執行如下配置
[oracle@local ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> @marker_setup.sql
SQL> @ddl_setup.sql;
SQL> @role_setup.sql;
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable.sql;
進入ogg控制台,測試用戶是否創建成功
GGSCI (local) 1> dblogin userid ogg
Password: ogg
Successfully logged into database.
通過上述步驟,ogg就安裝成功了。
3 單項復制的配置
為了能讓ogg成功的將源數據庫及目標數據庫進行同步,下面還需要對ogg及oracle進行一系列配置(ogg支持多種復制方式,比如單項復制、雙向復制等等,因實際需要,本文僅介紹單項復制相關配置)。
首先說說ogg的一些概念:
1、 Manager:ogg所有服務必須依賴Manager,Manger如同ogg的總調度。
2、 Extract :ogg用來獲取源數據庫數據更新的,將變更的數據發送到目標數據庫
3、 Replicat :ogg用來接收源數據庫的更新,一旦源數據庫Extract將數據發送過來后,Replicat會自動將更新腳本同步到目標數據庫。
3.1 源服務器配置
1、開啟ORACLE歸檔模式,設置日志模式
[oracle@local ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database force logging;
SQL> alter database add supplemental log data;
SQL> alter database open;
2、 回收站功能會影響同步,需要關閉回收站
SQL>alter session set recyclebin=off;
SQL>alter system set recyclebin=off;
3、配置環境變量NLS_LANG(不配置中文同步會亂碼)
首先在oracle中查詢select userenv( 'language') from dual;
然后將查詢的結果配置到linux環境變量中
如export NLS_LANG=” SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
4、登陸ogg控制台,設置需要進行同步的oracle表
GGSCI (local) 1> dblogin userid ogg
GGSCI (local) 1> add trandata dbuser.*
5、配置ogg manager&啟動manager(配置界面操作類似vi)
GGSCI (local) 1> edit param mgr
PORT 7809
GGSCI (local) 1> info all(查看當前mgr狀態)
GGSCI (local) 1> start manager(啟動manager,啟動完后可以用info all再次查看狀態)
6、 添加一個ogg extract進程,用於抽取源服務器數據
GGSCI (local) 1> add extract ext4,tranlog,begin now (增加一個抽取進程ext4,ext4名字可以根據需要修改)
GGSCI (local) 1> add exttrail /oracle/ogg/dirdat/wf,extract ext4 (將ext4抽取的源數據變更數據寫到該文件夾)
GGSCI (local) 1> edit params ext4 (修改ext4的配置參數)
extract ext4
userid ogg,password ogg
rmthost xxxx.xxx.xxx.xxx,mgrport 7809 --目標服務器ip
rmttrail /oracle/ogg/dirdat/wf --目標服務器文件夾
ddl include mapped objname dbuser.*;
table dbuser.*;
配置完成后可以通過info all查看到新添加的extract的狀態
7、啟動ogg extract命令
GGSCI (local) 1> start extract ext4 (等目標服務器ogg配置成功后再啟動ext)
3.2 目標服務器配置
1、登陸ogg控制台
GGSCI (local) 1> dblogin userid ogg
2、配置ogg manager&啟動manager(配置界面操作類似vi)
GGSCI (local) 1> edit param mgr
PORT 7809
DYNAMICPORTLIST 7840-7850 --遠程隊列端口范圍
GGSCI (local) 1> info all(查看當前mgr狀態)
3、 添加一個ogg replicat進程,用於更新目標服務器數據
GGSCI (local) 1> edit params ./GLOBAL
GSSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
GGSCI (local) 2> dblogin userid ogg
Password: ogg
Successfully logged into database.
GGSCI (local) 3> add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.CHECKPOINT.
GGSCI (local) 4> ADD replicat rep2 EXTTRAIL /hom/wangfan/ggs/dirdat/wf, checkpointtable ogg.checkpoint
GGSCI (local) 5> edit param rep2
--Replicat group --
replicat rep2
--source and target definitions
ASSUMETARGETDEFS
--target database login --
userid ogg, password ogg
--file for dicarded transaction --
discardfile /oracle/ogg/discard/rep2_discard.txt, append, megabytes 10
--ddl support DDL
DDL INCLUDE MAPPED
DDLERROR DEFAULT IGNORE RETRYOP
--Specify table mapping ---
map dbuser.*, target dbuser.*;
配置完成后可以通過info all查看到新添加的extract的狀態
4、啟動ogg manager & replicat命令
GGSCI (local) 1> start manager
GGSCI (local) 1> start replicat rep2
最后參考源服務器配置,啟動ext4
4 維護相關
4.1 OGG常用命令
1、 啟動manager:start manager
2、 啟動extract:start extract extn
3、 啟動replicat:start replicat repn
4、 停止manager:stop manager
5、 停止 extract:stop extract extn
6、 停止replicat:stop replicat repn
7、 刪除extract:delete extract extn
8、 刪除replicat:delete extract repn
9、 查看ogg狀態:info all
10、 修改manager參數:edit params mgr
11、 修改extract參數:edit params extn
12、 修改replicat參數:edit params repn
13、 修改全局參數:edit params ./GLOBAL
4.2 OGG日志路徑
$OGG_HOME/ggserr.log
4.3 OGG開機自啟
操作系統設置:
1、用oracle用戶建立/oracle/ogg/autostart/info.txt,文件內容如下:
sh dat
start mgr
2、chmod x info.txt
3、用oracle用戶建立/oracle/ogg/autostart/startmgr.sh,文件內如下:
/oracle/ogg/ggsci paramfile /oracle/ogg/autostart/info.txt >> /oracle/ogg/autostart/log.txt
4、chmod x startmgr.sh
5、用root用戶編輯 /etc/rc.local ,添加如下信息:
su - oracle -c "/oracle/ogg/autostart/startmgr.sh"
OGG設置:
在ogg中主進程是manager進程,使用startmgr啟動。可以在mgr進程中添加一些參數用來在啟動mgr進程的同時啟動extract和replicat進程。
1、以下是extract端的mgr參數配置
GGSCI (gg01) 130> edit params mgr
PORT 7809
DYNAMICPORTLIST 7800-7909
--啟動mgr進程啟動啟動extract進程
AUTOSTART EXTRACT *
--extract異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的extract進程,一共嘗試3次,5分鍾清零
AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10
2、配置目標端replicat進程自啟動,在mgr參數中添加如下
GGSCI (gg02) 140> edit params mgr
PORT 7809
--動態端口,當指定端口不可用時,會從以下列表中選擇一個可用端口
DYNAMICPORTLIST 7800-7909
--自動啟動replicat進程
AUTOSTART REPLICAT *
--當replicat進程異常終止時會自動啟動,每5分鍾嘗試重新啟動所有的replicat進程,一共嘗試5次
AUTORESTART REPLICAT *, WAITMINUTES 2, RETRIES 5
--mgr每隔1小時檢查extract延時情況,超5分鍾作為信息記錄log中,超過7分鍾作為警告記錄log中
LAGREPORTHOURS 1
LAGINFOMINUTES 5
LAGCRITICALMINUTES 7
--刪除10天前的trail文件
PURGEOLDEXTRACTS /oracle/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10