変更の開始

単一の複製対象オブジェクトを再複製する

QSYS2.RECLONE_OBJECT プロシージャは、単一のレプリケートされたオブジェクトとそのレプリケートされた従属オブジェクトをリクローンします。

RECLONE_OBJECTプロシージャは、1つのレプリケートされたオブジェクトと、それに従属するレプリケートされたオブジェクトのネットワークを、ソース・ノードと呼ばれる1つの Db2® ミラー・ノードから、コピー・ノードと呼ばれるもう1つのノードにコピーするために使用されます。 これは、レプリケートされたすべてのオブジェクトをリクローンするソフトウェアリクローンや、レプリケートされたノード全体をリクローンするハードウェアリクローンとは対照的です。

RECLONE_OBJECTを呼び出すとき、ユーザーはリクローンするオブジェクトを特定する。 RECLONE_OBJECT は、特定されたオブジェクトのすべての従属オブジェクトを見つけます。 識別されたオブジェクトと複製されたすべての依存オブジェクトはコピーノード上で削除され、ソースノードからのオブジェクトのバージョンで置き換えられる。 指定されたオブジェクトとその従属オブジェクトのオブジェクト追跡リスト(OTL)のエントリは、失敗エントリを含め、すべて延期される。

RECLONE_OBJECTは、プライマリ・ノードとセカンダリ・ノードの両方のレプリケーション・ステートがACTIVEであるか、プライマリ・ノードのレプリケーション・ステートがTRACKINGでセカンダリ・ノードがBLOCKEDの場合に実行できます。 レプリケーションの状態に応じて、以下の動作が発生する:
  • ノードのレプリケーション状態がACTIVE
    • RECLONE_OBJECTはどちらのノードからでも実行できます。 プロシージャが実行されるノードはソース・ノードである。
    • リクローン操作は即座に実行される。 すべての従属オブジェクトが識別され、オブジェクトと従属オブジェクトの既存の OTL エントリが延期され、コピーノードのオブジェクトが削除され、オブジェクトがソースノードからコピーノードにコピーされる。
    • RECLONE_OBJECTが完了すると、オブジェクトは同期する。
  • ノードのレプリケーション状態はTRACKING
    • RECLONE_OBJECTオブジェクトは、レプリケーション状態がTRACKINGであるプライマリ・ノードでのみ実行できます。 セカンダリノードが利用できない場合、RECLONE_OBJECTは失敗します。
    • RECLONE_OBJECTが実行されると、従属オブジェクトが識別され、オブジェクトと従属オブジェクトの既存のOTLエントリが延期され、コピーノードオブジェクトが削除されます。 トラッキング・エントリーはOTLに書き込まれ、次の再同期時にオブジェクトが再クローン化される。
    • 再同期が実行され、両方のノードがACTIVEレプリケーション状態に戻ると、オブジェクトは再同期される。 再同期の間、トラッキングされたオブジェクトはソースからコピーノードにコピーされる。 再同期が完了すると、オブジェクトは同期する。
  • ノードのレプリケーション状態がBLOCKED
    • RECLONE_OBJECTオブジェクトは、レプリケーション状態がBLOCKEDのセカンダリ・ノードでは実行できません。

RECLONE_OBJECTプロシージャは、OTLのオブジェクトに記録された障害からの回復など、レプリケーションの問題を修正するために使用されます。 RECLONE_OBJECTはセーブとリストアの技術に依存しているので、もう一つの使用例は、アクティブな行の大部分が同期していない状況を克服することです。

RECLONE_OBJECTの考察

RECLONE_OBJECT手続きでサポートされているのは、*FILEオブジェクトのみです。 テーブル、ビュー、インデックス、物理ファイル、および論理ファイルを再クローンできます。 オブジェクトを再クローンできるとは限らない。 以下は、RECLONE_OBJECTに関する注意事項と制限事項のリストです。

オブジェクト・トラッキング・リスト

特定のOTL項目は、RECLONE_OBJECTの実行を妨げることがある。 これは、リクローニングされるオブジェクトにOTL項目があり、それがリクローニングされる依存関係ネットワークの外側のオブジェクトに影響する場合に発生する。 これが発生すると、SQLSTATE 57033が返されます。 回復するために、ユーザはレプリケートされたオブジェクトのOTLエントリを検査し、RECLONE_OBJECTへの別の呼び出しを使用して、追加のオブジェクトを再クローン化する必要があるかどうかを判断する必要があります。 OTLエントリーを検査した後、 CHANGE_RESYNC_ENTRIES手続きまたは Db2 Mirror GUIを使用して、手動でエントリーを延期する。 OTLエントリーを延期することは、処理されるべきエントリーが再同期の検討対象から外れる可能性があるため、慎重に検討すべきである。 OTLエントリーが延期されたら、元のオブジェクトに対してRECLONE_OBJECTを再実行する。

複製基準リスト

RECLONE_OBJECTの実行中は、レプリケーション基準ルールをレプリケーション基準リスト(RCL)に追加または削除することはできず、保留中のRCLグループ内のルールを変更または適用することはできません。

オブジェクトのロック
RECLONE_OBJECTの間、レプリケーション・ステートが ACTIVE の場合は*EXCLRDを、レプリケーション・ステートが TRACKING の場合は*SHRNUPを使用して、ソース・ノード上のオブジェクトがロックされます。 コピー・ノードでは、オブジェクトは*EXCLを使ってロックされる。 したがって、以下の制限が適用される:
  • ソース・ノード上のI/O操作は、リクローンされるオブジェクトとその複製された従属オブジェクトの読み取りのみに制限される。
  • コピーノード上のI/O操作は、再クローンされるオブジェクトとその複製された従属オブジェクトに対して阻止される。
  • すべてのDDL変更は、リクローンされるオブジェクトとそのレプリケートされた従属オブジェクトのソースノードとコピーノードの両方で防止されます。
コミットメント制御

ジョブ内に保留中のトランザクションがあると、RECLONE_OBJECTは実行できなくなります。 RECLONE_OBJECTを実行する前に、すべてのアクティブな作業をコミットしなければならない。

複製されない従属オブジェクト

ソース・ノード上にのみ存在する非複製従属オブジェクトは、コピー・ノードに再クローンされません。 複製されない従属オブジェクトが複製された従属オブジェクトを持つ場合、RECLONE_OBJECTは失敗します。

複製されていない依存オブジェクトがコピーノードに存在する可能性があります。 これらのオブジェクトは、RECLONE_OBJECTによってベース・オン・オブジェクトが削除されると削除されます。 しかし、コピー・ノード上の非レプリケート・オブジェクトは、削除される前にまず保存され、レプリケートされたベースオン・オブジェクトがソースからリクローンされた後、可能であればリストアされる。

重要:

複製されていない依存オブジェクトは、常にコピーノード上にリストアできるとは限りません。 レプリケートされたベースオンオブジェクトのフォーマットが、レプリケートされていない依存オブジェクトが無効となるように変更された場合、遅延リストアは失敗します。

この現象の例として、コピーノード上にインデックスが存在し、レプリケートされておらず、列 FIRSTNM に対するインデックスキーを持ち、RECLONE_OBJECT の一部として列の名前が FIRSTNAME に変更された場合があります。

RECLONE_OBJECTの影響を評価する

コピー・ノード上でどのようなオブジェクトが削除されるかを理解することが重要である。 削除されたオブジェクトの中には再作成されないものもある。
  • RECLONE_OBJECTプロシージャに渡された複製された*FILEオブジェクトは、コピー・ノード上で削除される。 このオブジェクトは、ソース・ノードのオブジェクトのバージョンで置き換えられる。
  • RECLONE_OBJECTプロシージャで指定されたオブジェクトに依存している複製されたオブジェクトのリストがソースノード上に生成されます。 依存オブジェクトには、履歴テーブル、インデックス、論理ファイル、マテリアライズド・クエリ・テーブル(MQT)、ビューなどがあります。 このリストはコピーノードに渡され、依存オブジェクトはコピーノード上で削除される。 その後、依存オブジェクトはソースノードから再クローンされる。 再クローンされたオブジェクトは、コピーノード上の元の依存オブジェクトとは異なる場合がありますが、ソースノード上のオブジェクトとは一致します。
  • コピーノード上にのみ存在するレプリケートされた依存オブジェクトは削除され、再作成されません。 レプリケートされた依存オブジェクトは、例えば、オブジェクトがアプリケーションによって削除され、その削除がソースノードのOTLで追跡され、その削除がまだ処理されていない場合、コピーノードにのみ存在する可能性があります。
  • コピーノード上にのみ存在する、複製されない従属オブジェクトは保存され、その後削除されます。 これらのオブジェクトは、可能であれば復元される。 RECLONE_OBJECTで復元できない場合、手動で再作成するのはユーザー次第です。
    • ユーザは、コピー・ノード上でRestore Deferred Objects (RSTDFROBJ) CLコマンドを実行して、コピー・ノード上にリストアされなかった非レプリケーション従属オブジェクトを再作成することができます。 RECLONE_OBJECTによって生成された一意のDFRIDは、TRACKING_REASON列が値 RECLONE OBJECT を含む場合、コピーノードOTLのRESYNC_TYPE_DESCRIPTION列で見つけることができる。 RSTDFROBJコマンドでこのDFRIDを使用して、手動でオブジェクトのリストアを試みます。
    • RSTDFROBJが失敗した場合、再クローンされたオブジェクトと互換性のある定義で、依存オブジェクトを手動で再作成する必要があるかもしれません。
変更の終わり