
RECLONE_OBJECT プロシージャー
RECLONE_OBJECT プロシージャーは、単一の複製対象オブジェクトとその複製対象従属オブジェクトを再複製します。
このプロシージャは、複製するオブジェクトのライブラリ名、 オブジェクト名、 オブジェクトタイプを指定して、オブジェクトを複製するために使用できます。 指定されたオブジェクトに依存するレプリケートされたオブジェクトがある場合、依存オブジェクトもリクローンされる。 これらの依存オブジェクトは、ビュー、論理ファイル、インデックス、履歴テーブル、マテリアライズド・クエリ・テーブルになります。 オブジェクトは、ソース・ノードと呼ばれるプロシージャが実行されるノードから、コピー・ノードと呼ばれる2番目のノードに複製される。
リクローンは次のようにして行われる:
- コピー・ノード上の指定されたオブジェクトと、そのオブジェクトの依存オブジェクト(レプリケートされているものとされていないものの両方)を削除します。
- 指定されたオブジェクトと、ソース・ノードにレプリケートされたそのオブジェクトの従属オブジェクトのオブジェクト追跡リスト(OTL)エントリを延期する。
- 指定されたオブジェクトと、そのオブジェクトの複製された従属オブジェクトをソース・ノードから保存する。
- 指定されたオブジェクトと、コピー・ノードにレプリケートされたそのオブジェクトの従属オブジェクトをリストアする。
- 削除された非複製従属オブジェクトをコピーノード上に再作成する。 復元されたレプリケートされたオブジェクトとの非互換性により、レプリケートされていない依存オブジェクトを再作成できない場合があります。
- Restore Deferred Objects (RSTDFROBJ) CLコマンドは、レプリケートされていないコピー・ノード上の依存オブジェクトをリストアするために使用されます。 RECLONE_OBJECTを呼び出すたびに、一意のディファーID(DFRID)が生成されます。 この一意なDFRIDは、TRACKING_REASON列に値 RECLONE OBJECT が含まれている場合、コピーノードのOTLのRESYNC_TYPE_DESCRIPTION列に保存される。
- 複製されたオブジェクトがコピー・ノードで復元された後、RSTDFROBJ コマンドがコピー・ノードで実行され、複製されなかったオブジェクトが復元されます。
- 複製されていないオブジェクトがリストアに失敗した場合、失敗メッセージIDがOTLエントリに記録される。 レプリケートされなかったオブジェクトのリストアに失敗しても、RECLONE_OBJECTの正常終了には影響しません。 これらのオブジェクトのリストア情報は、QRECOVERY/QADBRSDFR テーブルに残り、OTL エントリーの一意な DFRID によって識別できる。 エラーを訂正して, RSTDFROBJ コマンドを再び手操作で実行することができます。 オブジェクトが不要になった場合は、Remove Defer ID(RMVDFRID)CLコマンドを使用して、QADBRSDFRテーブルから情報を削除することができます。
- とCHECK_REPLICATION_CRITERIAサービスは SYSTOOLS.RELATED_OBJECTS および CHECK_REPLICATION_CRITERIA サービスをオブジェクトのリクローニングの前に使用することで、複製されないコピー・ノード上の依存オブジェクトを特定することができます。 前の箇条書きで説明したように、これらのオブジェクトはコピーノード上で削除され、うまく再作成できない可能性がある。
library-name が *SYSBAS にある場合:
- レプリケーションの状態がACTIVEであれば、RECLONE_OBJECTはどちらのノードからでも開始できます。
- レプリケーションの状態がACTIVEでない場合、プライマリ・ノードでRECLONE_OBJECTを開始し、レプリケーションの状態をTRACKINGにする必要があります。 複製の詳細は SUSPENDED である必要があります。
library-name が *SYSBAS にない場合:
- IASPは、ソース・ノードとコピー・ノードの両方で、コンフィギュレーション・ステータスが ACTIVE 、バリオンされている必要があります。
- IASPのレプリケーション状態がACTIVEであれば、どちらのノードからでもRECLONE_OBJECTを開始することができます。
- レプリケーションの状態がACTIVEでない場合、プライマリ・ノードでRECLONE_OBJECTを開始し、レプリケーションの状態をTRACKINGにする必要があります。 複製の詳細は SUSPENDED である必要があります。
RECLONE_OBJECTに関連する考慮事項、ロック要件、関連する詳細については、 1つのレプリケートされたオブジェクトを複製するを参照してください。
制限以下の制限が適用されます:
- RECLONE_OBJECTはテーブル、ビュー、物理ファイル、論理ファイル、MQT、インデックスに対してのみ実行できます。
- RECLONE_OBJECT に対しては実行できない:
- レプリケートされない、またはレプリケートする資格がないオブジェクト。
- 外部キー制約を持つテーブル。 外部キー制約を削除し、RECLONE_OBJECTを実行し、制約を戻します。 インデックスが削除されないようにするには、RMVPFCST RMVCST(*KEEP)を使用してください。
- 参照制約の親テーブルとなるテーブル。 従属テーブルから外部キー制約を削除し、RECLONE_OBJECTを実行し、制約を元に戻します。
- 履歴テーブル。 代わりに、RECLONE_OBJECTの呼び出しで一時テーブルを指定します。 これにより、一時テーブルと依存履歴テーブルの両方が再クローン化される。
- ユーザーが作成したライブラリ内に存在する、カタログまたはクロス・リファレンス・テーブル、あるいはカタログまたはクロス・リファレンス・テーブルに基づくオブジェクト。
- 65534以上の依存オブジェクトを含む依存ネットワークを持つオブジェクト。
- レプリケートされない従属オブジェクトを持ち、レプリケートされないオブジェクトがレプリケートされる従属オブジェクトを持つオブジェクト。
- RECLONE_OBJECTは、コピー元ノードとコピー先ノードの両方が IBM® i 7.6 上になければ実行できない。
- RECLONE_OBJECT はコミット境界で実行する必要があります。 プロシージャを実行するジョブに対して、保留中の変更が存在することはできません。 保留中の変更をコミットし、RECLONE_OBJECTを再試行する。
- ソースノード上のいくつかの OTL エントリタイプは、ディファードされたときに同期しない状態になる可能性がある。 これは、再クローンされるオブジェクトに依存していないオブジェクトに影響する追跡操作が延期されたときに起こる。 したがって、OTLにリクローンされるオブジェクトやその従属オブジェクトの以下のエントリタイプのいずれかが含まれている場合、RECLONE_OBJECTは失敗します。 RECLONE_OBJECT によって延期できない OTL エントリタイプは以下の通りである:
- パーティションを切り離す
- MOVOBJ
- RNMOBJまたはRENAME
- DLTFまたはDROP TABLE/VIEW
- コピーノードの OTL エントリを延期すると、コピーノードのオブジェクトがソースノードのオブジェクトに置き換えられるため、オブジェクトへの変更が失われる可能性があります。 したがって、コピー・ノード上に再クローンされるオブジェクトまたはその従属オブジェクトのOTLエントリがある場合、RECLONE_OBJECTは失敗します。 ユーザーは、コピーノード上のOTLエントリーを分析し、追跡された変更が失われてもよいかどうかを判断し、OTLエントリーを手動で延期しなければならない。 OTLエントリーが延期されたら、RECLONE_OBJECTを再試行する。
- ロック要件のため、 Db2 Mirror ノード・ペアでは、依存関係ネットワーク内のオブジェクトに対する RECLONE_OBJECT の呼び出しは一度に 1 つしか実行できません。 依存関係ネットワークに共通オブジェクトが含まれていない限り、複数の RECLONE_OBJECT 要求が許可されます。 RECLONE_OBJECT の実行中は、複製基準リストを変更できません。
- 複製状態が TRACKING の場合、 Db2 Mirror は、RECLONE_OBJECT プロシージャーが完了するまで複製を再開できません。
権限: ステートメントの権限 ID によって保持される特権には、*ALLOBJ 特殊権限が含まれている必要があります。 このプロシージャを使用するために必要な追加権限については、 Authorizationを参照のこと。
スキーマは QSYS2 です。
- ライブラリー名
- object-nameを含むライブラリーを識別する文字ストリングまたはグラフィック・ストリング。
- オブジェクト名
- 再複製されるオブジェクトを識別する文字ストリングまたはグラフィック・ストリング。
- オブジェクト・タイプ
object-nameのシステム・オブジェクト・タイプを識別する文字ストリングまたはグラフィック・ストリング。 値は *FILE でなければなりません。
例
- ファイル APPLIB1/TABLE1を再クローン作成します。
CALL QSYS2.RECLONE_OBJECT(LIBRARY_NAME => 'APPLIB1', OBJECT_NAME => 'TABLE1', OBJECT_TYPE => '*FILE');

