OGG 使用defgen 同步不同定義表實驗
實驗環境 linux red hat OTO 11g
在源端建立表:
CREATE TABLE DEFG1
(
OB1 NUMBER,
OB2 VARCHAR2(5 BYTE),
OB3 DATE,
OB4 CHAR(1 BYTE),
SUPPLEMENTAL LOG GROUP GGS_77320 (OB1) ALWAYS
);
CREATE UNIQUE INDEX GG.PK_OB1_DEF ON GG.DEFG1
(OB1);
在目標端建立表:
CREATE TABLE DEFG2
(
MB1 NUMBER,
MB2 VARCHAR2(5 BYTE),
MB3 DATE,
MB4 CHAR(1 BYTE),
SUPPLEMENTAL LOG GROUP GGS_77327 (MB1) ALWAYS
);
CREATE UNIQUE INDEX REGG.PK_MB1_DEF ON REGG.DEFG2
(MB1);
二、給表新增附加日誌
GGSCI> add trandata defg1---源端
GGSCI> add trandata defg2---目標端
三、停止抽取和推送程式在extract和pump 程式引數檔案中加入表----因為我是用原來存在的抽取程式和推送程式 所以只需要在各自的引數檔案中加入表就可以。
stop er * --源端
GGSCI (OGG1) 58> view params ggex
EXTRACT ggex
GETTRUNCATES
REPORT AT 0:00
WARNLONGTRANS 60M,checkinterval 30M
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
DDL INCLUDE ALL
USERID gg,PASSWORD AACAAAAAAAAAAACANJPHHDSJCIYCFCZB,ENCRYPTKEY default
ENCRYPTTRAIL AES192 KEYNAME mykey1
EXTTRAIL /u01/ogg/dirdat/kt
TABLE gg.sen?;
TABLE GG.tgt;
TABLE GG.tab;
TABLE GG.tabx;
TABLE GG.MB_JSBJZS;
TABLE GG.ehr_healthrecord;
TABLE GG.colmap;
table gg.col;
table ggdl.tes;
table gg.defg1;
GGSCI (OGG1) 59> view params ggpump
EXTRACT ggpump
USERID gg, PASSWORD gg
RMTHOST og2, MGRPORT 7809 ,compress
GETTRUNCATES
REPORT AT 0:00
DDL INCLUDE ALL
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
warnlongtrans 60m,checkinterval 30m
DISCARDFILE /u01/ogg/dirrpt/pmp.dsc, PURGE
DECRYPTTRAIL AES192 KEYNAME mykey1
ENCRYPTTRAIL AES192 KEYNAME mykey2
RMTTRAIL /u01/ogg/dirdat/kt MEGABYTES 2, PURGE
TABLE gg.sen?;
TABLE GG.tgt;
table gg.tab;
table gg.tabx;
TABLE GG.MB_JSBJZS;
table gg.ehr_healthrecord;
table gg.colmap;
table gg.col,cols(id1,id2,id4);
table ggdl.tes;
table gg.defg1;
四、在源端生成定義
GGSCI>edit params defgen
defsfile /u01/ogg/defge.p----defge.p 為生成的定義檔名稱
userid gg,password gg-
table gg.defg1;
[oracle@OGG1 ogg]$ defgen paramfile /u01/ogg/dirprm/defgen.prm
把defge.p複製到目標端目錄最好放在 /u01/ogg/dirdef 規範嘛...
------------以下為目標端 複製程式操作-----------------
一、新增程式
停止原來的複製程式
GGSCI>stop er *
程式引數檔案:
GGSCI (og2) 31> view params redf
---------this file writed by huzhicheng in 2014/05/21 if you have any question please conntact me with huzhicheng.force@gmail.com--------
replicat redf
HANDLECOLLISIONS
GETTRUNCATES
GROUPTRANSOPS 100
REPORT AT 0:00
ALLOWNOOPUPDATES
WARNRATE 1000
ddlerror default ignore retryop maxretries 3 retrydelay 5
USERID regg , PASSWORD regg
DISCARDFILE ./dirrpt/RINIaa.dsc, PURGE
DECRYPTTRAIL AES192 KEYNAME mykey2
SOURCEDEFS /u01/ogg/dirdef/defg.p
map gg.DEFG1 , target regg.DEFG2 COLMAP(mb1=ob1,mb2=ob2,mb3=ob3,mb4=ob4);
這裡colmap 需要注意如mb2 和ob2 為時間型別, 且ob4 mb4 為char(1) 如果打亂順序 會是的 程式 起不來,出錯,這事很明顯的其它型別的怎麼能插入date的呢?? 所以你在複製的時候需要根據業務來調整你的複製物件,不能一味操作。
儲存你的引數檔案
二、新增複製程式
ADD REPLICAT redf, EXTTRAIL /u01/ogg/dirdat/kt checkpointtable regg.chkpoint
三、獲取最後的RBA 和seq
為什麼呢? 因為 我們是新增複製程式而且用的是原來的資料檔案 如果不更改獲取的rba seq 位置不告訴複製程式從那裡開始去 複製程式 會從kt00000000 這個檔案開始讀,而且你以前很可能配置了purge 引數 kt00000000早已經被清除 。你在源端更改資料 而複製程式讀的是kt00000000 這個檔案 你後來傳送過來的檔案kt00000000xx 複製程式不會去讀取,就算你做了更新對於複製程式來說是無效的,經實驗驗證。所以需要獲取rba和seq 從最後一個檔案讀取。
GGSCI>info replgg,showch---replgg 是原來的replicat程式
Current Checkpoint Detail:
Read Checkpoint #1
GGS Log Trail
Startup Checkpoint (starting position in the data source):
Sequence #: 54
RBA: 6062
Timestamp: 2014-07-14 23:24:27.880615
Extract Trail: /u01/ogg/dirdat/kt
Current Checkpoint (position of last record read in the data source):
Sequence #: 54
RBA: 8163
Timestamp: 2014-07-15 00:30:48.944588
Extract Trail: /u01/ogg/dirdat/kt
CSN state information:
CRC: D4-F8-AB-DE
Latest CSN: 3243078
Latest TXN: 5.22.1964
Latest CSN of finished TXNs: 3243078
Completed TXNs: 5.22.1964
Header:
Version = 2
Record Source = A
Type = 1
# Input Checkpoints = 1
# Output Checkpoints = 0
紅色部分為我們需要的
四、切換RBA讀取
ggsci>alter redf extseqno 54, extrba 8163
五、開啟程式
start er * ----源端和目標端同樣執行
六、驗證結果
在源端插入資料 在目標端執行查詢看是否發生更改
------------------------------ok---------------------------------------
在源端建立表:
CREATE TABLE DEFG1
(
OB1 NUMBER,
OB2 VARCHAR2(5 BYTE),
OB3 DATE,
OB4 CHAR(1 BYTE),
SUPPLEMENTAL LOG GROUP GGS_77320 (OB1) ALWAYS
);
CREATE UNIQUE INDEX GG.PK_OB1_DEF ON GG.DEFG1
(OB1);
在目標端建立表:
CREATE TABLE DEFG2
(
MB1 NUMBER,
MB2 VARCHAR2(5 BYTE),
MB3 DATE,
MB4 CHAR(1 BYTE),
SUPPLEMENTAL LOG GROUP GGS_77327 (MB1) ALWAYS
);
CREATE UNIQUE INDEX REGG.PK_MB1_DEF ON REGG.DEFG2
(MB1);
二、給表新增附加日誌
GGSCI> add trandata defg1---源端
GGSCI> add trandata defg2---目標端
三、停止抽取和推送程式在extract和pump 程式引數檔案中加入表----因為我是用原來存在的抽取程式和推送程式 所以只需要在各自的引數檔案中加入表就可以。
stop er * --源端
GGSCI (OGG1) 58> view params ggex
EXTRACT ggex
GETTRUNCATES
REPORT AT 0:00
WARNLONGTRANS 60M,checkinterval 30M
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
DDL INCLUDE ALL
USERID gg,PASSWORD AACAAAAAAAAAAACANJPHHDSJCIYCFCZB,ENCRYPTKEY default
ENCRYPTTRAIL AES192 KEYNAME mykey1
EXTTRAIL /u01/ogg/dirdat/kt
TABLE gg.sen?;
TABLE GG.tgt;
TABLE GG.tab;
TABLE GG.tabx;
TABLE GG.MB_JSBJZS;
TABLE GG.ehr_healthrecord;
TABLE GG.colmap;
table gg.col;
table ggdl.tes;
table gg.defg1;
GGSCI (OGG1) 59> view params ggpump
EXTRACT ggpump
USERID gg, PASSWORD gg
RMTHOST og2, MGRPORT 7809 ,compress
GETTRUNCATES
REPORT AT 0:00
DDL INCLUDE ALL
SETENV (NLS_LANG = AMERICAN_AMERICA.AL32UTF8)
warnlongtrans 60m,checkinterval 30m
DISCARDFILE /u01/ogg/dirrpt/pmp.dsc, PURGE
DECRYPTTRAIL AES192 KEYNAME mykey1
ENCRYPTTRAIL AES192 KEYNAME mykey2
RMTTRAIL /u01/ogg/dirdat/kt MEGABYTES 2, PURGE
TABLE gg.sen?;
TABLE GG.tgt;
table gg.tab;
table gg.tabx;
TABLE GG.MB_JSBJZS;
table gg.ehr_healthrecord;
table gg.colmap;
table gg.col,cols(id1,id2,id4);
table ggdl.tes;
table gg.defg1;
四、在源端生成定義
GGSCI>edit params defgen
defsfile /u01/ogg/defge.p----defge.p 為生成的定義檔名稱
userid gg,password gg-
table gg.defg1;
[oracle@OGG1 ogg]$ defgen paramfile /u01/ogg/dirprm/defgen.prm
把defge.p複製到目標端目錄最好放在 /u01/ogg/dirdef 規範嘛...
------------以下為目標端 複製程式操作-----------------
一、新增程式
停止原來的複製程式
GGSCI>stop er *
程式引數檔案:
GGSCI (og2) 31> view params redf
---------this file writed by huzhicheng in 2014/05/21 if you have any question please conntact me with huzhicheng.force@gmail.com--------
replicat redf
HANDLECOLLISIONS
GETTRUNCATES
GROUPTRANSOPS 100
REPORT AT 0:00
ALLOWNOOPUPDATES
WARNRATE 1000
ddlerror default ignore retryop maxretries 3 retrydelay 5
USERID regg , PASSWORD regg
DISCARDFILE ./dirrpt/RINIaa.dsc, PURGE
DECRYPTTRAIL AES192 KEYNAME mykey2
SOURCEDEFS /u01/ogg/dirdef/defg.p
map gg.DEFG1 , target regg.DEFG2 COLMAP(mb1=ob1,mb2=ob2,mb3=ob3,mb4=ob4);
這裡colmap 需要注意如mb2 和ob2 為時間型別, 且ob4 mb4 為char(1) 如果打亂順序 會是的 程式 起不來,出錯,這事很明顯的其它型別的怎麼能插入date的呢?? 所以你在複製的時候需要根據業務來調整你的複製物件,不能一味操作。
儲存你的引數檔案
二、新增複製程式
ADD REPLICAT redf, EXTTRAIL /u01/ogg/dirdat/kt checkpointtable regg.chkpoint
三、獲取最後的RBA 和seq
為什麼呢? 因為 我們是新增複製程式而且用的是原來的資料檔案 如果不更改獲取的rba seq 位置不告訴複製程式從那裡開始去 複製程式 會從kt00000000 這個檔案開始讀,而且你以前很可能配置了purge 引數 kt00000000早已經被清除 。你在源端更改資料 而複製程式讀的是kt00000000 這個檔案 你後來傳送過來的檔案kt00000000xx 複製程式不會去讀取,就算你做了更新對於複製程式來說是無效的,經實驗驗證。所以需要獲取rba和seq 從最後一個檔案讀取。
GGSCI>info replgg,showch---replgg 是原來的replicat程式
Current Checkpoint Detail:
Read Checkpoint #1
GGS Log Trail
Startup Checkpoint (starting position in the data source):
Sequence #: 54
RBA: 6062
Timestamp: 2014-07-14 23:24:27.880615
Extract Trail: /u01/ogg/dirdat/kt
Current Checkpoint (position of last record read in the data source):
Sequence #: 54
RBA: 8163
Timestamp: 2014-07-15 00:30:48.944588
Extract Trail: /u01/ogg/dirdat/kt
CSN state information:
CRC: D4-F8-AB-DE
Latest CSN: 3243078
Latest TXN: 5.22.1964
Latest CSN of finished TXNs: 3243078
Completed TXNs: 5.22.1964
Header:
Version = 2
Record Source = A
Type = 1
# Input Checkpoints = 1
# Output Checkpoints = 0
紅色部分為我們需要的
四、切換RBA讀取
ggsci>alter redf extseqno 54, extrba 8163
五、開啟程式
start er * ----源端和目標端同樣執行
六、驗證結果
在源端插入資料 在目標端執行查詢看是否發生更改
------------------------------ok---------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26764973/viewspace-1218605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG表級同步
- 關於OGG單表同步
- String不同定義的情況解析
- OCM實驗-使用線上重定義方式遷移表
- 在ASP.NET MVC中使用Knockout實踐06,自定義驗證、非同步驗證ASP.NETMVC非同步
- OGG_windows搭建實驗Windows
- OGG 表結構變化導致同步異常
- OGG_linux搭建實驗Linux
- ogg 同步問題
- oracle實驗記錄 (線上重定義表)Oracle
- goldengate的defgenGo
- OGG 簡單DML同步
- ogg 11.1.1.1 同步 sequence
- 1.4 基於OGG單表到分庫分表資料同步場景
- 使用ogg 從oracle 同步mysql遇到問題記錄OracleMySql
- ogg 同步kafka OGG-15051 Java or JNI exception:KafkaJavaException
- 非同步通知實驗非同步
- OGG實現兩臺oracle資料庫的同步Oracle資料庫
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- OGG複製同步,提示欄位長度不夠ORA-01704
- 【OGG】RAC環境下配置OGG單向同步 (四)
- Layui 自定義表單驗證UI
- ogg環境線上重定義普通表到分割槽表實戰及生產操作注意事項-orastarAST
- ogg單向x86ora10g到x64ora11g支援ddl同步實驗
- OGG-Oracle 11.2.0.1 ->19.3 pdb 使用Ogg 同步版本相關問題學習整理Oracle
- pg 用ogg 同步大概步驟
- RAC環境下配置OGG同步
- 使用GoldenGate 實現Oracle for Oracle 單向資料同步(實現表的DML操作同步)GoOracle
- 小程式自定義表單校驗
- JavaScript表單不為空驗證JavaScript
- 如何使用angularjs實現表單驗證AngularJS
- OGG Oracle 分割槽壓縮表 到 MySQL分表的實現OracleMySql
- 關於laravel使用自定義驗證規則後某些規則不生效Laravel
- ogg12 mysql to oracle 單向同步MySqlOracle
- nagios監控 ogg同步狀態iOS
- 使用線上重定義方法改造普通表為分割槽表實戰
- Spring Boot使用@Async實現非同步呼叫:使用Future以及定義超時Spring Boot非同步
- 表單驗證自定義格式輸出