实验环境 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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26764973/viewspace-1218605/