一、Cause
在某些情況下,對於一個已經running的OGG進程,對已同步的數據(正確的同步或者錯誤的同步)做修改,修改完之后,需要保持一個一致點,從一致點繼續同步。
這時需要人工干涉產生一個新的extract trail文件,EXTRACT和REPLICAT進程都從該新文件中讀取數據。
etrollover可以再重新啟動抽取進程時自動生成一個新的trail文件。
同時會提示並且必須指定datapump和replicat進程的seqno序號。
注意: 源端的trail文件序列號可能和目標端的trail文件序列號不一致。所以在指定extseqno時,需要根據各自dirdat目錄下當前的序號而定。
源端:
alter extract extname,etrollover #抽取進程trail文件號自動加1
alter extract dumpname,etrollover #datapump進程trail文件號自動加1
alter extract dumpname, extseqno xx, extrba 0 #指定datapump進程的序列號和日志位置。可以通過send <進程名>,status查看
目標端:
alter replicat repname, extseqno XX, extrba 0 #同datapump,需要在目標端的dirdat下看新生成的trail文件序號。extrba也可以通過logdump工具來查看
二、Example
2.1目標端trail文件序列號和源端不一致
2.1.1源端查看trail文件的序列號是1181
GGSCI (oggmaster) 24> send PUMPWH1,status
Sending STATUS request to EXTRACT PUMPWH1 ...
EXTRACT PUMPWH1 (PID 10088)
Current status: Recovery complete: Processing data
Current read position:
Sequence #: 1129
RBA: 630751643
Timestamp: 2019-07-18 18:24:08.000000
Extract Trail: /u01/app/oracle/oggmaster/gglog/wh
Current write position:
Sequence #: 1181
RBA: 1247
Timestamp: 2019-07-18 18:29:04.005628
Extract Trail: /u01/gglog/wh
2.1.2目標端查看trail文件的序列號是1178
GGSCI (ogg1) 102> send REPWH1,status
Sending STATUS request to REPLICAT REPWH1 ...
Current status: Processing data
Sequence #: 1178
RBA: 1334243070
23409 records in current transaction
2.1.3在目標端修改trail文件的序列號為1181,保持跟源端一致
**注意:** 需要在進程狀態為ABENDED或者STOPPED下
GGSCI (ogg1) 111> alter replicat REPWH1, extseqno 1181, extrba 132066972
REPLICAT altered.
2.1.4啟動目標端REPLICAT進程並查看序列號
GGSCI (ogg1) 114> start REPWH1
Sending START request to MANAGER ...
REPLICAT REPWH1 starting
GGSCI (ogg1) 115> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPWH1 00:00:00 00:00:17
GGSCI (ogg1) 117> send REPWH1,status
Sending STATUS request to REPLICAT REPWH1 ...
Current status: Processing data
Sequence #: 1181
RBA: 132066972
0 records in current transaction