在認真學習了GoldenGate企業級營運實戰後,重點是對OGG幾個進程的理解,結合對原理的理解,在整整實驗了近兩天,反覆配置了四次之後,終於配置成功。本文經過多次配置成功實踐整理而成,還有很多的細節需要完善。
本文出自:http://koumm.blog.51cto.com
目錄
================================
一、環境準備並安裝GoldenGate
1. 資料庫準備情況
2. 下載OGG軟體並解壓安裝
3. 準備OGG環境變數
4. 配置記錄模式
5. 建立GoldenGate使用者帳號
6. 安裝GoldenGate軟體
7. 配置源、目標資料庫一致
二、 GoldenGate DML同步源端配置
1. 源MGR進程
2. 配置Extract進程組
3. 配置Pump進程組
三、 GoldenGate DML同步目標端配置
1. 目標端MGR進程
2. 添加檢查表
3. 配置目標端Peplicat進程組
4. 可以查看checkpoint狀態
5. DML配置測試
四、 GoldenGate DDL同步配置
1. 源端支援DDL複製運行指令碼
2. 修改源端extract進程的params檔案
3. 修改目標端replicat進程的params檔案
4. 測試
=======================================
GoldenGate幾個重要進程介紹:
1、Manager管理進程在兩端開啟,監控和重啟其他進程;分配資料存放區和報告錯誤及事件;
2、Extract進程從日誌中抓取並傳輸到target端交易資料;
3、Server Collector進程在target(接受)端接受資料並寫入trail檔案;
4、Replicat進程讀取trail檔案,並應用到traget資料庫;
5、trail檔案時gg自己抓捕資訊的檔案,是一個OS檔案,存放在./dirdat/下,以X00000命名,N順序1,2,3…此檔案用完可配置參數自動刪除。
一、環境準備並安裝GoldenGate
1. 資料庫準備情況
1) 原始伺服器
IP地址:192.168.14.150
資料庫:10.2.0.5 64 bit
SID: orcl
作業系統版本:Oracle 5.4 64 bit
ogg版本:fbo_ggs_Linux_x64_ora10g_64bit.tar
說明:前提條件是資料庫已經準備方式安裝完畢。
2) 目標伺服器
IP地址:192.168.14.151
資料庫:10.2.0.5 64 bit
SID: slave
作業系統版本:Oracle 5.4 64 bit
ogg版本:fbo_ggs_Linux_x64_ora10g_64bit.tar
說明:前提條件是資料庫已經準備方式安裝完畢。
2. 下載OGG軟體並解壓安裝
1) 原始伺服器
mkdir -p /u01/app/oracle/ogg
unzip fbo_ggs_Linux_x64_ora10g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar -C /u01/app/oracle/ogg/
chown -R oracle:oinstall /u01/app/oracle/ogg
2) 目標伺服器都要配置
mkdir -p /u01/app/oracle/ogg
unzip fbo_ggs_Linux_x64_ora10g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar -C /u01/app/oracle/ogg/
chown -R oracle:oinstall /u01/app/oracle/ogg
3. 準備OGG環境變數
#原始伺服器、與目標伺服器都要配置
$ vi /home/oracle/.bash_profile
增加如下一行:
export GGATE=$ORACLE_BASE/ogg
生效環境變數
source /home/oracle/.bash_profile
4. 配置記錄模式
# 原始伺服器,目標伺服器不用配置(非雙向)
1) 查看規檔與記錄模式
sqlplus / as sysdba
select log_mode,supplemental_log_data_min,force_logging from v$database;
2) 配置為規檔模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=/u01/archive' scope=both;
3) 配置記錄模式(開啟強制規檔與補充記錄模式)
alter database add supplemental log data;
alter database force logging;
4)查看配置結果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
ARCHIVELOG YES YES
5. 建立GoldenGate使用者帳號
1) 原始伺服器
su - oracle
sqlplus /nolog
conn / as sysdba;
create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/orcl/tbs_ogg.dbf' size 10m autoextend on next 10m;
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP quota unlimited on tbs_ogg;
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;
2) 目標伺服器
su - oracle
sqlplus /nolog
conn / as sysdba;
create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/orcl/tbs_ogg.dbf' size 10m autoextend on next 10m;
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP quota unlimited on tbs_ogg;
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;
6. 安裝GoldenGate軟體
(1) 原始伺服器、與目標伺服器都要配置
su - oracle
cd /u01/app/oracle/ogg
./ggsci
GGSCI (test) 1> create subdirs
Creating subdirectories under current directory /u01/app/oracle/ogg
Parameter files /u01/app/oracle/ogg/dirprm: created
Report files /u01/app/oracle/ogg/dirrpt: created
Checkpoint files /u01/app/oracle/ogg/dirchk: created
Process status files /u01/app/oracle/ogg/dirpcs: created
SQL script files /u01/app/oracle/ogg/dirsql: created
Database definitions files /u01/app/oracle/ogg/dirdef: created
Extract data files /u01/app/oracle/ogg/dirdat: created
Temporary files /u01/app/oracle/ogg/dirtmp: created
Veridata files /u01/app/oracle/ogg/dirver: created
GGSCI (test) 2> quit
(2) 目標伺服器都要配置
su - oracle
cd /u01/app/oracle/ogg
./ggsci
GGSCI (slave) 1> create subdirs
Creating subdirectories under current directory /u01/app/oracle/ogg
Parameter files /u01/app/oracle/ogg/dirprm: created
Report files /u01/app/oracle/ogg/dirrpt: created
Checkpoint files /u01/app/oracle/ogg/dirchk: created
Process status files /u01/app/oracle/ogg/dirpcs: created
SQL script files /u01/app/oracle/ogg/dirsql: created
Database definitions files /u01/app/oracle/ogg/dirdef: created
Extract data files /u01/app/oracle/ogg/dirdat: created
Temporary files /u01/app/oracle/ogg/dirtmp: created
Veridata files /u01/app/oracle/ogg/dirver: created
GGSCI (slave) 2> quit
注1:ogg_11.1.1.1.2,ogg_11.2.x.x.1顯示建立的檔案目錄列表結構不一樣。
上為ogg11.2版本的建立的內容。
7. 配置源、目標資料庫一致
配置源與目標資料一致性可以採用很多方法,可以採用oracle的方式來完成。
本方式採用imp方式來實現初始資料表一致。
(1) 源端測試使用者:
create user hr identified by hr;
grant connect,resource,select_catalog_role to hr;
conn hr/hr;
create table t1 as select * from dba_objects;
alter table t1 add constraint prikey_t1 primary key(object_id);
commit;
select count(*) from t1;
----------------------------
COUNT(*)
50315
(2) 目標端測試使用者:
目標伺服器通過exp/imp匯入過去,只匯入表結構
create user hr identified by hr;
grant connect,resource,select_catalog_role to hr;
conn hr/hr;
imp hr/hr file=hr.dmp rows=n
注: 還可以通過goldengate初始化資料載入的方式來實現資料同步。
二、 GoldenGate DML同步源端配置
配置思路:
1) 先配置DML同步
2) 再配置DDL同步
cd /u01/app/oracle/ogg
./ggsci
1. 源MGR進程
1) 編輯主進程組
edit params mgr
port 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5
說明:
port 指定mgr進程通訊連接埠
dynamicportlist 表示mgr進程可以為源與目的端動態通訊指定連接埠
autorestart extract 表示自動重啟extract進程組,每2分鐘嘗試重啟所有進程,重試5次,每5分鐘清零。
配置參數後,重啟mgr進程生效
2) 啟動主管理進程
start mgr
2. 配置Extract進程組
1) 編輯設定檔
edit params eora
extract eora
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg,password ogg
exttrail /u01/app/oracle/ogg/dirdat/et
table hr.*;
說明:
extract eora定義extract進程名字
dynamicresolution
setenv設定環境變數
userid 登入資料庫
exttrail指定本地trail檔案地址
table 定義同步的表
2) 添加抽取進程
add extract eora, tranlog,begin now
3) 添加本地trail檔案
add exttrail /u01/app/oracle/ogg/dirdat/et,extract eora
說明:
建立本地trail檔案,主extract進程負責寫這部分檔案,pump負責把這部分檔案傳到目標伺服器端。
4) 啟動服務
start extract eora
3. 配置Pump進程組
1) 編輯設定檔
edit params pump_so
extract pump_so
dynamicresolution
passthru
rmthost 192.168.14.151,mgrport 7809,compress
rmttrail /u01/app/oracle/ogg/dirdat/pt
table hr.*;
2) 添加pump進程
add extract pump_so,exttrailsource /u01/app/oracle/ogg/dirdat/et
3) 添加遠程trail檔案
add rmttrail /u01/app/oracle/ogg/dirdat/pt,extract pump_so
說明: 指定遠程trail檔案
4) 啟動pump進程
start extract pump_so
三、 GoldenGate DML同步目標端配置
cd /u01/app/oracle/ogg
./ggsci
1. 目標端MGR進程
1) 編輯設定檔
edit params mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts /u01/app/oracle/ogg/dirdat/rt*, usecheckpoints, minkeepdays 3
2) 啟動
start mgr
2. 添加檢查表
說明: 當我們在GLOBALS 檔案裡指定了預設的checkpoint 之後,新的Replicat groups 在建立時會自動使用這個參數,不需要其他指令
1) 編輯全域設定檔
edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint
2)exit # 這裡需要退出ggsci終端
3) 添加checkpoint表
./ggsci
GGSCI (slave) 1> dblogin userid ogg,password ogg
Successfully logged into database.
GGSCI (slave) 2> add checkpointtable ogg.checkpoint
Successfully created checkpoint table OGG.CHECKPOINT.
3. 配置目標端Peplicat進程組
1) 編輯設定檔
edit params repl
replicat repl
userid ogg,password ogg
assumetargetdefs
reperror default,discard
discardfile /u01/app/oracle/ogg/dirrpt/repl.dsc,append,megabytes 50
dynamicresolution
map hr.*, target hr.*;
2) 添加複製進程
add replicat repl,exttrail /u01/app/oracle/ogg/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint
3) 啟動進程
start repl
4. 可以查看checkpoint狀態
su - oracle
sqlplus ogg/ogg
SQL> select tname from tab;
TNAME
-------------------------------------
CHECKPOINT TABLE
CHECKPOINT_LOX TABLE
select * from checkpoint;
注1:ogg_11.1.1.1.2隻有CHECKPOINT一張表。
注2:ogg_11.2.x.x.1有CHECKPOINT,CHECKPOINT_LOX兩張表。
5. DML配置測試
1) 源端查看錶的記錄數
conn hr/hr
SQL> select count(*) from t1;
COUNT(*)
----------
49935
2)執行DML操作後提交
SQL> delete from t1 where rownum < 200;
199 rows deleted.
SQL> commit;
SQL> select count(*) from t1;
COUNT(*)
----------
49736
3) 目標端查看
conn hr/hr
SQL> select count(*) from t1;
COUNT(*)
----------
49736
說明:
到此goldengate DML單向配置已經配置完畢,通過簡單的測試樣本來進行。
四、 GoldenGate DDL同步配置
1. 支援DDL複製運行指令碼
# 伺服器源端配置
1) 指定資料庫模式
$ ./ggsci
GGSCI (test) 1> edit param ./GLOBALS
GGSCI (test) 2> view param ./GLOBALS
ggschema ogg
GGSCI (test) 3> stop mgr
2) oralce 10gR2資料庫需要關閉資源回收筒。
su - oracle
cd /u01/app/oracle/ogg
sqlplus / as sysdba;
alter system set recyclebin=off scope=both;
3) 安裝DDL對象
SQL> grant dba to ogg;
SQL> @marker_setup 說明: 均指定使用者ogg
SQL> @ddl_setup 說明: 11.1.1.2需要手動輸入 ogg,INITIALSETUP,yes
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable
SQL> @marker_status.sql
注1: 執行dbmspool包將在資料庫中建立DBMS_SHARED_POOL包,之後ddl_pin包需要用到
SQL> @?/rdbms/admin/dbmspool.sql
Package created.
Grant succeeded.
View created.
Package body created.
注2: 執行ddl_pin.sql通過dbms_shared_pool.keep預存程序將DDLReplication相關對象keep在共用池中,以保證這些對象不要RELOAD,提升效能。
SQL> @ddl_pin.sql ogg
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
2. 修改extract進程的params檔案
# 伺服器源端配置
# source端修改extract進程的params檔案,添加"ddl include all"參數,重啟extract進程
1) 停止eora_t1進程
GGSCI (test) 2> stop extract eora
2) 編輯設定檔
GGSCI (test) 3> edit params eora
extract eora
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg,password ogg
exttrail /u01/app/oracle/ogg/dirdat/et
ddl include all
ddloptions addtrandata, report
table hr.*;
# 說明:加了兩行tranlogoption 與 ddl
3)啟動mgr,eora進程
GGSCI (test) 4> start mgr
GGSCI (test) 5> start extract eora
4) 查看eora_t1進程啟動情況
GGSCI (test) 6> info extract eora
3. 修改目標端replicat進程的params檔案
# 目標伺服器配置
# target端修改replicat進程的params檔案,
添加"ddlerror default ignore retryop maxretries 3 retrydelay 5" 等參數,重啟replicat進程
1) 停止mgr進程
GGSCI (slave) 1> stop mgr
2) 停止repl進程
GGSCI (slave) 1> stop replicat repl
Sending STOP request to REPLICAT RORA_T1 ... Request processed.
3) 編輯repl設定檔
GGSCI (slave) 1> edit params repl
GGSCI (slave) 2> view params repl
replicat repl
userid ogg, password ogg
assumetargetdefs
reperror default, discard
discardfile /u01/app/oracle/ogg/dirrpt/repl.dsc, append, megabytes 50
dynamicresolution
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map hr.*, target hr.*;
注: 說明目標端不需要配置DDL include all語句,不然的話,反而會出錯。
##Error text [Error code [1031], ORA-01031: insufficient privileges
4) 啟動rora_t1進程
GGSCI (slave) 4> start mgr # 會自動啟動repl進程
GGSCI (slave) 5> info replicat repl
4. 測試
在源端hr使用者建立一個表,查看目標端是否成功建立。
create table abc ( id integer , name char(10));
insert into abc values ( 1 , 'abc' );
本文連結:http://koumm.blog.51cto.com/703525/1113773
本文出自 “koumm的linux技術部落格” 部落格,請務必保留此出處http://koumm.blog.51cto.com/703525/1113773