通常 ora_cleansp 実行後は、新規にレプリケーションを開始する必要がありますが、以下の手順では適用済みの SCN を確認し、その SCN を含む REDO ログまで遡って Capture が読み取りを開始することでora_cleansp 実行前のレプリケーションを継続します。
事前準備
ターゲット側で動作するPostに対してSP_OPO_UPDATE_SCN 1が設定されている必要があります。
ターゲット側で設定
sp_ctrl> set param SP_OPO_UPDATE_SCN 1
sp_ctrl> stop post
sp_ctrl> start post
手順
<適用済みSCNを控える>
1. ソースにて Capture プロセスを停止します。
2. ターゲットにて qstatus で Postキューを確認します。
Backlog が 0 になっており、メッセージが滞留していないことを確認します。
3. ターゲットにて show scnを実行してPost プロセスが適用済みの SCN を確認します。
sp_ctrl> show scn
注意: このコマンドを実施するとPostが 'Stopped by user' にて停止します
出力例
For resume replication from <SIDorTNSNAME>
On source activate to scn=11847424
reconcile queue PosterQueueName for o.<SIDorTNSNAME>-o.<ORCL_TNS> scn 11847425
最後の行にはSCN表示より1つ大きな数が表示されます。(本来はReconcileコマンドでの使用を想定)
複数の Post プロセスがターゲット上で構成されておりSCN 値が異なる場合は、最も大きい SCN 値を控えておきます。
<ora_cleanspの実施>
4. ソースおよびターゲット両方の SharePlex プロセスを停止します。
sp_ctrl > shutdown
5. ソースおよびターゲット両方 で ora_cleansp を実行します。
コマンド実行手順は次の記事を参照してください。
ora_cleanspの実行手順 (4257419)
6. ソースおよびターゲット両方で SharePlex プロセスを起動します。
<SCN指定で設定をアクティベートする>
7. ソース側で SCN 指定でアクティベートを実行します。
sp_ctrl > activate config ConfigReplFile scn=XXXXX
(*) XXXXX の部分には SCN+1 、手順3の例では 11847425 ) を指定してください。
8. compare を実行し、必要に応じて repair を実行する。
【注意点】
- SP_OPO_UPDATE_SCN 1にするとPEP(Post Enhanced Performance)機能のコミット削減機能が無効になります
- 遡った SCN 以降のアーカイブ REDO ログが全て保全されている必要があります。
- SCN を跨ったトランザクションは Capture が処理しないため、最終的に compare,repair で同期確認およびデータ修正が必要です。
- show scn を実施するとPostにユーザーによる停止がかかります。