タスク1: 自己完結型の表領域セットの選択

トランスポータブル・セットのデータベース・オブジェクトとトランスポータブル・セット外のデータベース・オブジェクトの間に、論理的または物理的な依存関係がある場合があります。トランスポートできるのは、自己完結型である表領域セットのみです。つまり、表領域セット内のデータベース・オブジェクトは、その表領域セット外のデータベース・オブジェクトのいずれにも依存しません。

次に、自己完結した表領域に違反する例を示します。

  • 表領域セット内に、そのセットに含まれない表に関する索引が含まれている場合。

    注意:

    表に対応する索引が表領域セットの外部にある場合は、違反になりません。

  • パーティション表の一部が表領域セットに含まれている場合。

    コピーする表領域セットは、パーティション化した表のすべてのパーティションが含まれている状態、またはまったく含まれていない状態にしてください。パーティション表のサブセットをトランスポートするには、パーティションを表に変換する必要があります。

    パーティションの変換の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。

  • 参照整合性制約がセット境界を越えて別の表を指している場合。

    表領域セットをトランスポートするときには、参照整合性制約を含めるかどうかを選択できます。ただし、そうすることによって、表領域セットの自己完結性に影響を与える場合があります。制約をトランスポートしなければ、その制約はポインタとはみなされません。

  • 表領域セット内の表に、そのセットに含まれないLOBを指すLOB列が含まれている場合

  • ユーザーAが登録されたXML DBスキーマ(*.xsd)にユーザーBが登録されたグローバル・スキーマをインポートする際、ユーザーAのデフォルト表領域が表領域A、ユーザーBのデフォルト表領域が表領域Bで、表領域Aのみが表領域セットに含まれている場合。

表領域セットが自己完結型かどうかを判別するには、オラクル社が提供するDBMS_TTSパッケージのTRANSPORT_SET_CHECKプロシージャを実行します。このプロシージャを実行するには、EXECUTE_CATALOG_ROLEロール(最初はSYSに付与されている)を付与されている必要があります。

DBMS_TTS.TRANSPORT_SET_CHECKプロシージャを実行するときは、自己完結かどうかを調べるトランスポータブル・セットの表領域のリストを指定します。制約を含むかどうかを指定することもできます。厳密または完全な完結であるかを調べる場合は、TTS_FULL_CHECKパラメータをTRUEに設定する必要があります。

厳密または完全な完結のチェックは、トランスポータブル・セットから外部への参照のみではなく、外部からトランスポータブル・セットへの参照も捕捉する必要がある場合に実行します。依存オブジェクトがトランスポータブル・セットに完全に含まれているか、またはトランスポータブル・セットの外部にのみ存在することが必要な場合は、表領域のPoint-in-Timeリカバリ(TSPITR)を実行します。

たとえば、表tを含んでいるが、その索引iを含んでいない表領域に対してTSPITRを実行すると、トランスポート後に索引とデータの整合性がなくなるため、これは違反になります。完全完結チェックを実行することにより、トランスポータブル・セットからの依存関係またはトランスポータブル・セットへの依存関係がないことが保証されます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』のTSPITRの例を参照してください。

注意:

デフォルトでは、トランスポータブル表領域は、完全完結しているかどうかではなく自己完結しているかどうかがチェックされます。

次の文を使用して、表領域sales_1およびsales_2が自己完結しているかどうかを、参照整合性制約を考慮して(TRUEを指定して)調べます。

EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('sales_1,sales_2', TRUE);

DBMS_TTS.TRANSPORT_SET_CHECKプロシージャを実行した後に、TRANSPORT_SET_VIOLATIONSビューからすべての違反を選択して表示できます。表領域セットが自己完結している場合、このビューは空になります。次の例は、表領域セットの境界を超えている外部キー定数dept_fkと、表領域セットに部分的に含まれているパーティション表jim.salesという、2つの違反がある場合を示しています。

SELECT * FROM TRANSPORT_SET_VIOLATIONS;

VIOLATIONS
---------------------------------------------------------------------------
Constraint DEPT_FK between table JIM.EMP in tablespace SALES_1 and table
JIM.DEPT in tablespace OTHER
Partitioned table JIM.SALES is partially contained in the transportable set

sales_1およびsales_2をトランスポータブルにする前に、これらの違反を解決する必要があります。次のタスクで説明するように、整合性制約違反を回避するための選択肢の1つとして、整合性制約をエクスポートしない方法があります。

関連項目: