創(chuàng)新互聯(lián)公司是一家專業(yè)提供衢江企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為衢江眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
Oracle DML/DDL 同步數(shù)據(jù) (OGG_12.2_for_Windows)1
一、環(huán)境準備并安裝 GoldenGate3
1、基本環(huán)境 3
2、配置日志模式 3
3、創(chuàng)建 GoldenGate 用戶帳號4
4、安裝 GoldenGate 軟件5
5、模擬生產(chǎn)庫,初始化數(shù)據(jù) 5
二、 GoldenGate DML 同步配置6
1 、GoldenGate DML 同步源端配置6
1、源 MGR 進程6
2 、配置 Extract 進程組7
3 、配置 Pump 進程組8
4 、目標端初始化9
2 、GoldenGate DML 同步目標端配置9
1 、 目標端 MGR 進程10
2 、添加檢查表10
3 、添加 checkpoint 表11
4、配置目標端 Peplicat 進程組11
5、可以查看 checkpoint 狀態(tài)12
6、驗證同步 12
三: GoldenGate DDL 同步配置12
1 、支持 DDL 復(fù)制運行腳本12
2、修改 extract 進程的 params 文件14
3、修改目標端 replicat 進程的 params 文件15
4、測試 16
5、驗證 16
四、常見問題 16
1) 源端
IP 地址: 10.6.252.44
數(shù)據(jù)庫: Oracle 11.2.0.4
SID: cjc
操作系統(tǒng)版本: Windows 7
ogg 版本: Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
2) 目標端
IP 地址: 10.11.82.56
數(shù)據(jù)庫: Oracle 11.2.0.4
SID: chenjch
操作系統(tǒng)版本: Windows 7
ogg 版本: Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
# 源服務(wù)器端
(1) 配置歸檔模式
sqlplus / as sysdba
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
(2) 配置日志模式 ( 打開強制規(guī)檔與補充日志模式 )
alter database add supplemental log data;
alter database force logging;
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
alter system set recyclebin=off scope=spfile;
(3) 查看配置結(jié)果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
ARCHIVELOG YES YES
su - oracle
sqlplus / as sysdba;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CJC\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CHENJCH\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;
ogg12 版本安裝是圖形界面,選擇安裝版本 (11);
D:\ogg\ggs_Windows_x64_shiphome\Disk1\setup.exe
啟動圖形界面后,選擇
OGG 目錄 :D:\app\Administrator\product\11.2.0\oggcore_1 --- 需要提前創(chuàng)建
Oracle 目錄 :D:\app\Administrator\product\11.2.0\dbhome_1
直接安裝即可;
安裝后, D:\app\Administrator\product\11.2.0\oggcore_1 下會包含所有目錄,無需執(zhí)行 create subdirs 命令;
建立測試用戶及初始化數(shù)據(jù)
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
創(chuàng)建包含 CLOB 字段的表并初始化
create table t_clob(tid number,c_clob clob);
1) 先配置 DML 同步
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe
dblogin userid ogguser password ogguser
1) 編輯主進程組
edit params mgr
PORT 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
說明 :
port 指定 mgr 進程通信端口
dynamicportlist 表示 mgr 進程可以為源與目的端動態(tài)通信指定端口 ,ogg12 已經(jīng)廢棄;
autorestart extract* 表示自動重啟 extract 進程組,每 2 分鐘嘗試重啟所有進程,重試 5 次,每 5 分鐘清零。
minkeepdays 7 隊列傳遞結(jié)束后 , 依然保留本地隊列 7 天
LAGREPORTHOURS 1 /* 每隔 1 小時檢查延遲報告
LAGINFOMINUTES 30 /* 每隔 30 分鐘檢查延遲 , 如果超過延遲閾值 , 將寫入錯誤日志
LAGCRITICALMINUTES 45 /* 延遲閾值 45 分鐘
2) 啟動主管理進程
start mgr
1) 編輯配置文件
edit param ext1
extract ext1
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
table test.*;
說明 :
extract ext1 定義 extract 進 ?? 名字
dynamicresolution
setenv 設(shè)置環(huán)境變量
userid 登錄數(shù)據(jù)庫
exttrail 指定本地 trail 文件地址
table 定義同步的表
AMERICAN_AMERICA.AL32UTF8 實驗環(huán)境的字符集,可用 SELECT userenv('language') from dual; 查出
TRANLOGOPTIONS CONVERTUCS2CLOBS clob 大字段的轉(zhuǎn)換
GETTRUNCATES 獲取 Truncate 操作
tranlogoptions rawdeviceoffset 0 /* 裸設(shè)備文件偏移量 (AIX 系統(tǒng)專有參數(shù) ) ,此實驗不用
2) 添加抽取進程
add extract ext1,tranlog,begin now
3) 添加本地 trail 文件
add exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd,extract ext1
說明 :
創(chuàng)建本地 trail 文件,主 extract 進程負責(zé)寫這部分文件, pump 負責(zé)把這部分文件傳到目標服務(wù)器端。
4) 啟動服務(wù)
start extract ext1
1) 編輯配置文件
edit param extpump
extract extpump
dynamicresolution
passthru
rmthost 10.11.82.56,mgrport 7809,compress
rmttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb
table test.*;
2) 添加 pump 進程
add extract extpump,exttrailsource D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
3) 添加遠程 trail 文件
add rmttrail /ogg/app/oracle/dirdat/mb,extract extpump
說明 : 指定遠程 trail 文件
4) 啟動 pump 進程
start extract extpump
至此:源端配置完成,查看相關(guān)進程是剖正常啟動
命令:
info all 查看所有進程的狀態(tài)
view report ext1 可查看失敗進程的報錯
建立測試用戶及初始化數(shù)據(jù)
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
創(chuàng)建包含 CLOB 字段的表并初始化
create table t_clob(tid number,c_clob clob);
安裝 ogg 軟件,安裝目錄和原服務(wù)器一樣,安裝過程忽略
數(shù)據(jù)庫上進行配置,創(chuàng)建用戶,授權(quán)
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe
dblogin userid ogguser password ogguser
1) 編輯配置文件
edit param mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\rt*, usecheckpoints, minkeepdays 3
2) 啟動
start mgr
說明 : 當(dāng)我們在 GLOBALS 文件里指定了默認的 checkpoint 之后,新的 Replicat groups 在創(chuàng)建時會自動使用這個參數(shù),不需要其他指令
1) 編輯全局配置文件
GGSCI (dg2) 4> edit param ./GLOBALS
CHECKPOINTTABLE ogguser.checkpoint
2 ) exit # 這里需要退出 ggsci 終端
./ggsci
GGSCI (dg2) 1> dblogin userid ogguser password ogguser
GGSCI (dg2 as ogguser@mbdb) 2> add checkpointtable ogguser.checkpoint
1) 編輯配置文件
edit params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096 ----megabytes 只過小可能會導(dǎo)致 repl 無法啟動
map test.*, target test.*;
2) 添加復(fù)制進程
add replicat repl,exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb, CHECKPOINTTABLE ogguser.checkpoint
3) 啟動進程
start repl -----aftercsn
su - oracle
sqlplus ogguser/ogguser
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 兩張表。
查看相關(guān)進程是否正常啟動
info all
源端對 test 用戶下所有表進行 insert,update,delete 操作,確保目標端可以正常同步所有 DML 操作產(chǎn)生的數(shù)據(jù);
# 服務(wù)器源端配置
1) 指定數(shù)據(jù)庫模式
D:\app\Administrator\product\11.2.0\oggcore_1\ggsci.exe
GGSCI (dg1) 1> edit param ./GLOBALS
ggschema ogguser
GGSCI (dg1) 3> stop mgr
2) 安裝 DDL 對象
進入到 ogg 的安裝目錄,此實驗為 D:\app\Administrator\product\11.2.0\oggcore_1
sqlplus / as sysdba
SQL> grant dba to ogguser;
SQL> @marker_setup 說明 : 均指定用戶 ogguser
SQL> @ddl_setup 說明 : 11.1.1.2 需要手動輸入 ogguser,INITIALSETUP,yes
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to ogguser;
SQL> @ddl_enable
SQL> @marker_status.sql
注 1: 執(zhí)行 dbmspool 包將在數(shù)據(jù)庫中創(chuàng)建 DBMS_SHARED_POOL 包,之后 ddl_pin 包需要用到
SQL> @?/rdbms/admin/dbmspool.sql
注 2: 執(zhí)行 ddl_pin.sql 通過 dbms_shared_pool.keep 存儲過程將 DDLReplication 相關(guān)對象 keep 在共享池中,以保證這些對象不 RELOAD ,提升性能。
SQL> @ddl_pin.sql ogguser
# 服務(wù)器源端配置
# source 端修改 extract 進程的 params 文件,添加 "ddl include all" 參數(shù),重啟 extract 進程
1) 停止 ext1 進程
GGSCI (test) 2> stop extract ext1
2) 編輯配置文件
GGSCI (test) 3> edit params ext1
extract ext1
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail /ogg/app/oracle/dirdat/yd
report at 1:00
reportrollover at 1:00
ddl include all
ddloptions addtrandata,report
GETTRUNCATES
TRANLOGOPTIONS CONVERTUCS2CLOBS
table test.*;
# 說明:加了兩行 tranlogoption 與 ddl
3) 啟動 mgr,eora 進程
GGSCI (test) 4> start mgr
GGSCI (test) 5> start extract ext1
4) 查看進程啟動情況
GGSCI (test) 6> info extract ext1
# 目標服務(wù)器配置
# target 端修改 replicat 進程的 params 文件,
添加 "ddlerror default ignore retryop maxretries 3 retrydelay 5" 等參數(shù),重啟 replicat 進程,操作如下
1) 停止 mgr 進程
GGSCI (slave) 1> stop mgr
2) 停止 repl 進程
GGSCI (slave) 1> stop replicat repl
3) 編輯 repl 配置文件
GGSCI (slave) 1> edit params repl
GGSCI (slave) 2> view params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map test.*, target test.*;
4) 啟動 rora_t1 進程
GGSCI (slave) 4> start mgr # 會自動啟動 repl 進程
GGSCI (slave) 5> info replicat repl
在源端 test 用戶創(chuàng)建一個表,查看目標端是否成功創(chuàng)建。
create table t1(id number);
在目標端查看 t1 表及數(shù)據(jù)是否同步過來
問題一:
insert 和 delete 可以同步, update 不能同步;
解決方案:
ggsci > dblogin userid gg, password gg
ggsci > add trandata test.*
問題二:
repl 進程無法啟動
查看日志
D:\app\Administrator\product\11.2.0\oggcore_1\ggserr.log
D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc
megabytes 值過小,可能會引起 rep1 進程 ABENDED ;
歡迎關(guān)注我的微信公眾號"IT小Chen",共同學(xué)習(xí),共同成長!??!