データベース・オブジェクトおよびデータのコピーに関する制限

データベース・オブジェクトおよびデータのコピーでは、制限および制約が現在存在します。
一般的な制限
この設定における制限は、複数のオブジェクト・タイプに適用されます。
  • Oracle ソース → DB2® for Linux, UNIX, and Windows のターゲット:
    • ソース・オブジェクトの定義に OR REPLACE 文節が含まれる場合、ターゲット・オブジェクトはこの文節なしで作成されます。 この制限は、ビュー、プロシージャー、ユーザー定義関数、およびパッケージに適用されます。
    • ソース・オブジェクトの定義に AUTHID CURRENT_USER 文節が含まれる場合、エラーが発生します。 この制限は、プロシージャー、ユーザー定義関数、およびパッケージに適用されます。
  • ソース・オブジェクト内の表参照が修飾されていない場合、ターゲット接続に関連付けられたデフォルトのスキーマに対して表の貼り付け操作を実行します。 この制限は、ビュー、プロシージャー、ユーザー定義関数、およびパッケージに適用されます。

    SQL および XQuery エディターで SQL スクリプトを変更することによってのみ、生成された DDL の修飾子を追加または変更できます。

表のコピー
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット
    • DB2 for Linux, UNIX, and Windows の表定義では、タイプ ARRAY または VARRAY の列はサポートされていません。 ソース表にタイプ ARRAY または VARRAY の列が含まれている場合、貼り付け操作は失敗します。
  • DB2 for Linux, UNIX, and Windows ソース → DB2 for z/OS® ターゲット
    • XML 列内のデータのコピーはサポートされていません。 表にタイプ XML の列が含まれている場合、表定義のコピーおよび貼り付けは正常に実行可能です。 しかし、列内の XML データのコピーはできません。
    • コピーされる表に対して生成される DDL の中で、CCSID は、デフォルトで EBCDIC に設定されています。 その場合、ターゲット・データベースまたは表スペースの中で、明確にまたはデフォルトで CCSID が EBCDIC に設定されていなければなりません。 そうでない場合、貼り付け操作は失敗します。

      コピーされる表にタイプ GRAPHIC または VARGRAPHIC の列が含まれている場合にのみ、生成される DDL の中で CCSID は UNICODE に設定されます。

ビューのコピー
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット:
    • WITH READ ONLY 文節は DB2 ではサポートされません。ソース・ビューの定義にこのオプションが含まれる場合、貼り付けアクションは失敗します。
  • DB2 for Linux, UNIX, and Windows ソース → Oracle ターゲット:
    • WITH NO ROW MOVEMENT および WITH ROW MOVEMENT オプションは Oracle ではサポートされません。 ソース・ビューの定義にこれらのオプションのいずれかが含まれる場合、貼り付けアクションは失敗します。
  • Oracle ソース → Oracle ターゲット:
    • ソース・ビューの定義に FORCE または NO FORCE 文節のいずれかが含まれる場合、ターゲット・ビューはその文節なしで作成されます。
  • CREATE VIEW 照会式がターゲット・データベースの構文に準拠していない場合には、ターゲット・データベースでエラーが発生します。
トリガーのコピー
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット:
    • INSERT OR UPDATEINSERT OR UPDATE OR DELETE などの複合 DML イベント節は、DB2 トリガー定義の中でサポートされていません。 ソース・トリガー定義に複合 DML イベント節が含まれている場合、ターゲット・トリガー定義に含まれるのは、その節の中の最初のイベントだけです。 このことが発生していることを通知するエラー・メッセージが表示されます。
    • 以下の構文はサポートされていません。 これらの構文のいずれかがソース・トリガー中に出現する場合、トリガーはコピーされません。 しかし、それに関連する表はコピーされます。
      • 複合トリガー・ブロック
      • ネスト表に対するトリガー
      • システム・イベントまたはユーザー・イベントに対するトリガー
      • スキーマに対するトリガー
      • プロシージャー CALL ステートメントを含むトリガー
      • PARENT AS PARENT 参照節を含むトリガー
      • INSTEAD OF 節および FOR EACH ROW 節の両方を含むトリガー
  • DB2 for Linux, UNIX, and Windows ソース → Oracle ターゲット:
    • SPL PL トリガーのコピーはサポートされていません。
ユーザー定義タイプのコピー
  • Oracle データベースがコピー・ソースの場合、以下の制限が存在します。
    • VARRAY ユーザー定義タイプは、物理データ・モデルの中で従属オブジェクトとしては表示されません。 VARRAY ユーザー定義タイプは、それを使用する PL/SQL プロシージャーおよび PL/SQL パッケージと共にコピーされません。 PL/SQL プロシージャーまたは PL/SQL パッケージで VARRAY ユーザー定義タイプが使用されている場合、そのユーザー定義タイプは、それを使用する PL/SQL オブジェクトをコピーする前にコピーする必要があります。
    • VARRAY ユーザー定義タイプ列に含まれるデータのコピーはサポートされていません。 表に VARRAY ユーザー定義タイプ列が含まれている場合、表定義のコピーと貼り付けは正常に実行可能です。 しかし、VARRAY ユーザー定義タイプの列に含まれるデータはコピーできません。 そのため貼り付けの操作は失敗します。
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット
    • DB2 では、VARRAY 定義の中の NOT NULL 節はサポートされていません。 ソース VARRAY 定義に NOT NULL 節が含まれている場合、貼り付け操作は失敗します。
  • DB2 for Linux, UNIX, and Windows ソース → Oracle ターゲット
    • VARRAY ユーザー定義タイプを使用するストアード・プロシージャーが PL/SQL プロシージャーでない場合、貼り付け操作は失敗します。
シノニムのコピー
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット
    • 以下のオブジェクトのシノニムのコピーはサポートされていません。 以下のオブジェクトのいずれかについてシノニムが定義されている場合、対応する DDL ステートメントは生成されません。
      • シーケンス
      • ストアード・プロシージャー、関数、およびパッケージ
      • マテリアライズ・ビュー
      • ユーザー定義タイプ
シーケンスのコピー
  • コピーにおいて、CACHE パラメーターはサポートされていません。
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット
    • Oracle ソース・シーケンスに対する DB2 for Linux, UNIX, and Windows ターゲットのデフォルトのデータ・タイプは、精度 27 の DECIMAL です。
  • DB2 for Linux, UNIX, and Windows ソース → Oracle ターゲット
    • デフォルトの NO MINVALUE 節はサポートされていません。 ソース定義に MAXVALUE 節が含まれているのに、MINVALUE 節または NO MINVALUE 節が明確に含まれていない場合、貼り付け操作は失敗します。
モジュールのコピー
  • DB2 Version 9.7 for Linux, UNIX, and Windows ソース → DB2 Version 9.7 for Linux, UNIX, and Windows ターゲット
    • モジュール全体のコピーのみ可能です。 モジュール内の個々の要素のコピーはサポートされていません。
PL/SQL パッケージのコピー
  • DB2 for Linux, UNIX, and Windows データベースがコピー・ソースである場合、PL/SQL パッケージの従属オブジェクトはコピーされません。
  • Oracle データベースがコピー・ソースである場合、パッケージの従属オブジェクトはコピーされません。
  • PL/SQL パッケージ仕様がコピーされる場合は、その PL/SQL パッケージ本体も (存在する場合) 同じ操作でコピーされます。 PL/SQL パッケージ本体を単独でコピーすることはできません。
データのコピー
  • Oracle ソース → DB2 for Linux, UNIX, and Windows のターゲット:
    • 2 GB 未満の LOB のみがコピーされます。
  • データベース・オブジェクトとデータを直接ターゲット・データベースに貼り付ける場合、以下の制限が適用されます。
    • 外部キー制約を含むソース・データに対して行の制限またはフィルターのオプションを指定する場合、ターゲット・データベースにコピーされるデータが一貫したものになるという保証はありません。

      行数を制限した上で親子関係表から一貫性のあるデータを抽出するには、「データベース・オブジェクトの貼り付け」ウィザードの「データの移動」ページで照会フィルターを指定します。

      例: DB2 for Linux, UNIX, and Windows ソース → DB2 for Linux, UNIX, and Windows ターゲット

      GOSALES デモ・データベース中の cust_customer 表 (親表) と cust_crdt_card 表 (子表) をコピーします。

      表 1 は、ウィザードの「データの移動」ページのグリッドで「フィルター」列と「行の制限」列に指定する情報を示しています。

      表 1. 一貫性のあるデータを抽出するために指定するフィルターおよび行制限の情報のサンプル
      フィルター 行数制限
      cust_customer ORDER BY cust_code 1000
      cust_crdt_card WHERE cust_code in ( SELECT cust_code FROM gosalesct.cust_customer ORDER BY cust_code FETCH FIRST 1000 ROWS ONLY)  
  • LOB タイプの列が含まれた表をコピーしてから、DDL スクリプトを編集すると、スクリプトを実行する際に、コピーされた LOB データに NULL 値が生成されます。
  • コピー・データのフォーマットは、ソース・データベースとターゲット・データベースで異なる可能性があります。 例えば、ソース・データベースからコピーされた日時データのフォーマットが、ターゲット・データベースのデフォルト・フォーマットに一致しない可能性があります。 リテラル値をターゲット・データベースに適用する際に、そのリテラル値のフォーマットを指定することが必要な場合があります。 フォーマット記述子の指定については、ターゲット・データベースの参照情報を参照してください。
データ・タイプ・マッピングの制約
一部の Oracle データ・タイプは、DB2 のデータ・タイプに対応していません。 表 1 は、DB2 for Linux, UNIX, and Windows データベースへのコピー時に、サポートされていない Oracle データ・タイプがどう処理されるかを示しています。
表 2. DB2 for Linux, UNIX, and Windows においてサポートされない Oracle データ・タイプの処理方法
Oracle データ・タイプ 結果
BFILE 列は DB2 BLOB データ・タイプにマップされます。データはコピーされません。
INTERVAL YEAR TO MONTH DB2 CHAR データ・タイプにマップされます。
INTERVAL DAY TO SECOND DB2 CHAR データ・タイプにマップされます。
NUMBER( p,-s ) DB2 NUMBER( p,0 ) データ・タイプにマップされます。
NUMBER( p,s ) (ここで、s > p) 列は作成されず、データもコピーされません。
TIMESTAMP WITH LOCAL TIME ZONE 列は作成されず、データもコピーされません。
TIMESTAMP WITH TIME ZONE 列は作成されず、データもコピーされません。
XMLTYPE 列は DB2 XML データ・タイプにマップされます。データはコピーされません。
エラー処理
  • 「データベース・オブジェクトの貼り付け」ウィザードの「エラーでロールバック」オプションは、Oracle ターゲット・データベースではサポートされません。

フィードバック