Oracle DML/DDL同步資料(OGG_12.2_for_Windows)
Oracle DML/DDL 同步資料 (OGG_12.2_for_Windows)
一、環境準備並安裝 GoldenGate
1、基本環境
1) 源端
IP 地址: 10.6.252.44
資料庫: Oracle 11.2.0.4
SID: cjc
作業系統版本: 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
資料庫: Oracle 11.2.0.4
SID: chenjch
作業系統版本: Windows 7
ogg 版本: Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
2、配置日誌模式
# 源伺服器端
(1) 配置歸檔模式
sqlplus / as sysdba
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
(2) 配置日誌模式 ( 開啟強制規檔與補充日誌模式 )
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) 檢視配置結果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
ARCHIVELOG YES YES
3、建立 GoldenGate 使用者帳號
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;
4、安裝 GoldenGate 軟體
ogg12 版本安裝是圖形介面,選擇安裝版本 (11);
D:\ogg\ggs_Windows_x64_shiphome\Disk1\setup.exe
啟動圖形介面後,選擇
OGG 目錄 :D:\app\Administrator\product\11.2.0\oggcore_1 --- 需要提前建立
Oracle 目錄 :D:\app\Administrator\product\11.2.0\dbhome_1
直接安裝即可;
安裝後, D:\app\Administrator\product\11.2.0\oggcore_1 下會包含所有目錄,無需執行 create subdirs 命令;
5、模擬生產庫,初始化資料
建立測試使用者及初始化資料
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
建立包含 CLOB 欄位的表並初始化
create table t_clob(tid number,c_clob clob);
二、 GoldenGate DML 同步配置
1 、GoldenGate DML 同步源端配置
1) 先配置 DML 同步
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe
dblogin userid ogguser password ogguser
1、源 MGR 程式
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 程式可以為源與目的端動態通訊指定埠 ,ogg12 已經廢棄;
autorestart extract* 表示自動重啟 extract 程式組,每 2 分鐘嘗試重啟所有程式,重試 5 次,每 5 分鐘清零。
minkeepdays 7 佇列傳遞結束後 , 依然保留本地佇列 7 天
LAGREPORTHOURS 1 /* 每隔 1 小時檢查延遲報告
LAGINFOMINUTES 30 /* 每隔 30 分鐘檢查延遲 , 如果超過延遲閾值 , 將寫入錯誤日誌
LAGCRITICALMINUTES 45 /* 延遲閾值 45 分鐘
2) 啟動主管理程式
start mgr
2 、配置 Extract 程式組
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 設定環境變數
userid 登入資料庫
exttrail 指定本地 trail 檔案地址
table 定義同步的表
AMERICAN_AMERICA.AL32UTF8 實驗環境的字符集,可用 SELECT userenv('language') from dual; 查出
TRANLOGOPTIONS CONVERTUCS2CLOBS clob 大欄位的轉換
GETTRUNCATES 獲取 Truncate 操作
tranlogoptions rawdeviceoffset 0 /* 裸裝置檔案偏移量 (AIX 系統專有引數 ) ,此實驗不用
2) 新增抽取程式
add extract ext1,tranlog,begin now
3) 新增本地 trail 檔案
add exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd,extract ext1
說明 :
建立本地 trail 檔案,主 extract 程式負責寫這部分檔案, pump 負責把這部分檔案傳到目標伺服器端。
4) 啟動服務
start extract ext1
3 、配置 Pump 程式組
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
至此:源端配置完成,檢視相關程式是剖正常啟動
命令:
info all 檢視所有程式的狀態
view report ext1 可檢視失敗程式的報錯
4 、目標端初始化
建立測試使用者及初始化資料
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
建立包含 CLOB 欄位的表並初始化
create table t_clob(tid number,c_clob clob);
2 、GoldenGate DML 同步目標端配置
安裝 ogg 軟體,安裝目錄和原伺服器一樣,安裝過程忽略
資料庫上進行配置,建立使用者,授權
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;
1 、目標端 MGR 程式
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
2 、新增檢查表
說明 : 當我們在 GLOBALS 檔案裡指定了預設的 checkpoint 之後,新的 Replicat groups 在建立時會自動使用這個引數,不需要其他指令
1) 編輯全域性配置檔案
GGSCI (dg2) 4> edit param ./GLOBALS
CHECKPOINTTABLE ogguser.checkpoint
2 ) exit # 這裡需要退出 ggsci 終端
3 、新增 checkpoint 表
./ggsci
GGSCI (dg2) 1> dblogin userid ogguser password ogguser
GGSCI (dg2 as ogguser@mbdb) 2> add checkpointtable ogguser.checkpoint
4、配置目標端 Peplicat 程式組
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 只過小可能會導致 repl 無法啟動
map test.*, target test.*;
2) 新增複製程式
add replicat repl,exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb, CHECKPOINTTABLE ogguser.checkpoint
3) 啟動程式
start repl -----aftercsn
5、可以檢視 checkpoint 狀態
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 兩張表。
檢視相關程式是否正常啟動
info all
6、驗證同步
源端對 test 使用者下所有表進行 insert,update,delete 操作,確保目標端可以正常同步所有 DML 操作產生的資料;
三: GoldenGate DDL 同步配置
1 、支援 DDL 複製執行指令碼
# 伺服器源端配置
1) 指定資料庫模式
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: 執行 dbmspool 包將在資料庫中建立 DBMS_SHARED_POOL 包,之後 ddl_pin 包需要用到
SQL> @?/rdbms/admin/dbmspool.sql
注 2: 執行 ddl_pin.sql 透過 dbms_shared_pool.keep 儲存過程將 DDLReplication 相關物件 keep 在共享池中,以保證這些物件不 RELOAD ,提升效能。
SQL> @ddl_pin.sql ogguser
2、修改 extract 程式的 params 檔案
# 伺服器源端配置
# source 端修改 extract 程式的 params 檔案,新增 "ddl include all" 引數,重啟 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
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
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
4、測試
在源端 test 使用者建立一個表,檢視目標端是否成功建立。
create table t1(id number);
5、驗證
在目標端檢視 t1 表及資料是否同步過來
四、常見問題
問題一:
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 ;
歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2149617/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 配置支援DML和DDL操作同步的GoldenGateGo
- oracle support nologging ddl dmlOracle
- Oracle DDL,DML,DCL,TCL 基礎概念Oracle
- 資料庫:淺談DML、DDL、DCL的區別資料庫
- oracle goldengate 配置DML&DDL實驗OracleGo
- Oracle DBLINK 抽數以及DDL、DML操作Oracle
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- DML、DDL、DCL區別
- DDL,DML,DCL區別
- oracle 監控 DML DDL 鎖 的4個檢視Oracle
- oracle---oracle的單向ogg搭建流程(DML+DDL)Oracle
- MsSql資料庫使用SQL plus建立DDL和DML操作方法SQL資料庫
- DML操作 DDL觸發器觸發器
- MsSql 資料庫使用sqlplus建立DDL和DML操作方法SQL資料庫
- 資料庫審計方案(包括login,logout,DML,DDL等)資料庫Go
- DDL、DML、DCL、DQL相關操作
- Mysql 基礎操作 DDL DML DCLMySql
- Oracle goldengate 11g (二)【DML and DDL單向複製】OracleGo
- ORACLE 11g新特性-允許DDL鎖等待DML鎖Oracle
- 【GoldenGate】Oracle GoldenGate(三) DDL同步配置GoOracle
- performing DML/DDL operation over object in binORMObject
- MySQL的DDL和DML操作語法MySql
- oracle dbms_sql執行查詢select_dml_ddl(一)OracleSQL
- Begin end程式碼段裡面有DDL和DML,如果DDL成功了而DML失敗了,則DDL的程式碼也會回滾
- 資料傳輸 | 如何配合 pt-osc 使用 DTLE 同步 DDL
- 使用Logminer工具分析DML和DDL操作
- DML, DDL操作的自動提交問題
- Oracle中定位資料表的最近DML時間Oracle
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- 配置GoldenGate啟動DDL支援同步DDL操作Go
- Mysql資料庫學習(一):資料庫基本概念、關係型資料庫、Mysql資料庫安裝配置、DDL/DCL/DML語句MySql資料庫
- OGG 簡單DML同步
- Oracle Dataguard + Goldengate資料同步OracleGo
- oracle trigger 同步資料Oracle
- DDL,DML操作對結果快取的影響快取
- DDL,DML,DCL,TCL四種語言的簡介
- 【開發篇sql】 基礎概述(三) DDL和DMLSQL
- Oracle Parallel DMLOracleParallel