Oracle Golden Gate軟件是一種基於日誌的結構化數據複製備份軟件,它經過解析源數據庫在線日誌或歸檔日誌得到數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。Oracle Golden Gate能夠在異構的IT基礎結構(包括幾乎全部經常使用操做系統平臺和數據庫平臺)之間實現大量數據亞秒一級的實時複製,從而在能夠在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate能夠實現一對1、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構html
Oracle GoldenGate(下文簡稱ogg)軟件能夠經過ORACLE官方網站進行下載,根據ORACLE的版本及操做系統來下載對應版本的ogg,官方下載地址:linux
http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.htmlsql
ogg安裝很是簡單,但需在源數據庫和目標數據庫服務器上均安裝ogg軟件便可,具體請參考如下步驟:數據庫
一、 將壓縮包解壓到系統目錄/oracle/ogg (該路徑能夠根據須要自行選擇)服務器
二、 進入/oracle/ogg目錄,運行./ggsci,進入ogg管理控制檯session
三、 在ogg控制檯輸入命令: create subdirs ,讓ogg建立其須要用到的目錄oracle
四、 手工在ogg目錄下建立discard文件夾,mkdir discardapp
五、 配置操做系統環境變量(請確保環境變量配置了ORACLE_HOME和ORACLE_SID)ide
export LD_LIBRARY_PATH=/oradata/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH測試
六、 在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;
七、 爲新建立的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就安裝成功了。
爲了能讓ogg成功的將源數據庫及目標數據庫進行同步,下面還須要對ogg及oracle進行一系列配置(ogg支持多種複製方式,好比單項複製、雙向複製等等,因實際須要,本文僅介紹單項複製相關配置)。
首先說說ogg的一些概念:
一、 Manager:ogg全部服務必須依賴Manager,Manger如同ogg的總調度。
二、 Extract :ogg用來獲取源數據庫數據更新的,將變動的數據發送到目標數據庫
三、 Replicat :ogg用來接收源數據庫的更新,一旦源數據庫Extract將數據發送過來後,Replicat會自動將更新腳本同步到目標數據庫。
一、開啓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;
二、 回收站功能會影響同步,須要關閉回收站
SQL>alter session set recyclebin=off;
SQL>alter system set recyclebin=off;
三、配置環境變量NLS_LANG(不配置中文同步會亂碼)
首先在oracle中查詢select userenv( 'language') from dual;
而後將查詢的結果配置到linux環境變量中
如export NLS_LANG=」 SIMPLIFIED CHINESE_CHINA.ZHS16GBK」
四、登錄ogg控制檯,設置須要進行同步的oracle表
GGSCI (local) 1> dblogin userid ogg
GGSCI (local) 1> add trandata dbuser.*
五、配置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再次查看狀態)
六、 添加一個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的狀態
七、啓動ogg extract命令
GGSCI (local) 1> start extract ext4 (等目標服務器ogg配置成功後再啓動ext)
一、登錄ogg控制檯
GGSCI (local) 1> dblogin userid ogg
二、配置ogg manager&啓動manager(配置界面操做相似vi)
GGSCI (local) 1> edit param mgr
PORT 7809
DYNAMICPORTLIST 7840-7850 --遠程隊列端口範圍
GGSCI (local) 1> info all(查看當前mgr狀態)
三、 添加一個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的狀態
四、啓動ogg manager & replicat命令
GGSCI (local) 1> start manager
GGSCI (local) 1> start replicat rep2
最後參考源服務器配置,啓動ext4
一、 啓動manager:start manager
二、 啓動extract:start extract extn
三、 啓動replicat:start replicat repn
四、 中止manager:stop manager
五、 中止 extract:stop extract extn
六、 中止replicat:stop replicat repn
七、 刪除extract:delete extract extn
八、 刪除replicat:delete extract repn
九、 查看ogg狀態:info all
十、 修改manager參數:edit params mgr
十一、 修改extract參數:edit params extn
十二、 修改replicat參數:edit params repn
1三、 修改全局參數:edit params ./GLOBAL
$OGG_HOME/ggserr.log
操做系統設置:
一、用oracle用戶創建/oracle/ogg/autostart/info.txt,文件內容以下:
sh dat
start mgr
二、chmod x info.txt
三、用oracle用戶創建/oracle/ogg/autostart/startmgr.sh,文件內以下:
/oracle/ogg/ggsci paramfile /oracle/ogg/autostart/info.txt >> /oracle/ogg/autostart/log.txt
四、chmod x startmgr.sh
五、用root用戶編輯 /etc/rc.local ,添加以下信息:
su - oracle -c "/oracle/ogg/autostart/startmgr.sh"
OGG設置:
在ogg中主進程是manager進程,使用startmgr啓動。能夠在mgr進程中添加一些參數用來在啓動mgr進程的同時啓動extract和replicat進程。
一、如下是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
二、配置目標端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