15 データのトランスポート

データのトランスポートにより、1つのデータベースから他へデータを移動します。

15.1 データのトランスポートについて

データベース、表領域、表、パーティションおよびサブパーティションのレベルでデータをトランスポートできます。

15.1.1 データのトランスポートの目的

データのトランスポートは、同じデータのエクスポート/インポートまたはアンロード/ロードを実行するよりはるかに高速です。高速になるのは、ユーザー定義の表領域では実際のデータをすべて含むデータファイルがターゲットの場所にコピーされ、データ・ポンプを使用してデータベース・オブジェクトのメタデータのみを新しいデータベースに転送するためです。

データは、次のいずれかのレベルでトランスポートできます。

  • データベース

    フル・トランスポータブル・エクスポート/インポート機能を使用すると、データベース全体を異なるデータベース・インスタンスに移動できます。

  • 表領域

    トランスポータブル表領域機能を使用すると、表領域セットをデータベース間で移動できます。

  • 表、パーティションおよびサブパーティション

    トランスポータブル表機能を使用すると、表、パーティションおよびサブパーティションのセットをデータベース間で移動できます。

トランスポータブル表領域およびトランスポータブル表では、ユーザー定義表領域に存在するデータのみがトランスポートされます。ただし、フル・トランスポータブル・エクスポート/インポートでは、ユーザー定義表領域と管理表領域(SYSTEMSYSAUXなど)の両方に存在するデータがトランスポートされます。フル・トランスポータブル・エクスポート/インポートでは、ユーザー定義表領域内に含まれるオブジェクトのメタデータ、および管理表領域内に含まれるユーザー定義オブジェクトのメタデータとデータの両方がトランスポートされます。特に、フル・トランスポータブル・エクスポート/インポートにおいては、エクスポート・ダンプ・ファイルにはユーザー定義表領域内に含まれるオブジェクトのメタデータのみが含められますが、これには管理表領域内に含まれるユーザー定義オブジェクトのメタデータとデータの両方が含まれます。

15.1.2 データのトランスポート: 使用例

データのトランスポートは、次のような場合に役立ちます。

15.1.2.1 フル・トランスポータブル・エクスポート/インポートの使用例

フル・トランスポータブル・エクスポート/インポート機能は、いくつかの使用例で役立ちます。

15.1.2.1.1 非CDBのCDBへの移動

マルチテナント・アーキテクチャを使用すると、Oracle Databaseを、ユーザーが作成した1つ以上のプラガブル・データベース(PDB)を含むマルチテナント・コンテナ・データベース(CDB)として機能させることができます。データベースをトランスポートすることによって、非CDBをデータベース(CDB)に移動できます。

トランスポートされたデータベースは、CDBに関連付けられたプラガブル・データベース(PDB)になります。フル・トランスポータブル・エクスポート/インポートでは、Oracle Database 18c CDBに、Oracle Database 11g リリース2 (11.2.0.3)以上のデータベースを効率的に移動できます。

関連項目:

15.1.2.1.2 新しいコンピュータ・システムへのデータベースの移動

フル・トランスポータブル・エクスポート/インポートを使用すると、データベースを別のコンピュータ・システムに移動できます。ハードウェアをアップグレードしたり、データベースを異なるプラットフォームに移動するために、データベースを新しいコンピュータ・システムに移動できます。

15.1.2.1.3 Oracle Databaseの新しいリリースへのアップグレード

フル・トランスポータブル・エクスポート/インポートを使用すると、データベースをOracle Database 11g リリース2 (11.2.0.3)以上からOracle Database 18cにアップグレードできます。

そのためには、Oracle Database 18cをインストールし、空のデータベースを作成します。次に、フル・トランスポータブル・エクスポート/インポートを使用して、Oracle Database 11gリリース2 (11.2.0.3)データベースをOracle Database 18cデータベースにトランスポートします。

15.1.2.2 トランスポータブル表領域またはトランスポータブル表の使用例

トランスポータブル表領域またはトランスポータブル表機能は、いくつかの使用例で役立ちます。

15.1.2.2.1 トランスポータブル表領域またはトランスポータブル表に適用される使用例

場合によっては、トランスポータブル表領域かトランスポータブル表のどちらかが役立つことがあります。また、トランスポータブル表領域のみが役立つ場合、またはトランスポータブル表のみが役立つ場合もあります。

表15-1に、各使用例で使用できる機能を示します。

表15-1 トランスポータブル表領域およびトランスポータブル表の使用例

使用例 トランスポータブル表領域 トランスポータブル表

データ・ウェアハウスのためのパーティションのトランスポートと連結

はい

はい

構造化データのCDでの公開

はい

はい

履歴データのアーカイブ

はい

はい

トランスポータブル表領域を使用したTSPITRの実行

はい

不可

個々の表のコピーまたは移動

不可

はい

次の項では、これらの使用例について詳しく説明します。

15.1.2.2.2 データ・ウェアハウスのためのパーティションのトランスポートと連結

トランスポータブル表およびトランスポータブル表領域を使用して、データ・ウェアハウスのためにパーティションを連結できます。

標準的な企業のデータ・ウェアハウスには、1つ以上の大きいファクト表が含まれています。これらのファクト表は、企業データ・ウェアハウスを履歴データベースにするために、日付別にパーティション化されていることがあります。この場合、索引を作成すると、スター・クエリーを高速化できます。履歴データベースから最も古いパーティションを削除するたびにグローバル索引を再作成しなくても済むように、この種の履歴パーティション表についてローカル索引を作成することをお薦めします。

たとえば、1か月分のデータをデータ・ウェアハウスに毎月ロードする場合を考えます。データ・ウェアハウスには、salesという大型のファクト表があり、次の列が含まれています。

CREATE TABLE sales (invoice_no NUMBER,
   sale_year  INT NOT NULL,
   sale_month INT NOT NULL,
   sale_day   INT NOT NULL)
   PARTITION BY RANGE (sale_year, sale_month, sale_day)
     (partition jan2011 VALUES LESS THAN (2011, 2, 1),
      partition feb2011 VALUES LESS THAN (2011, 3, 1),
      partition mar2011 VALUES LESS THAN (2011, 4, 1),
      partition apr2011 VALUES LESS THAN (2011, 5, 1),
      partition may2011 VALUES LESS THAN (2011, 6, 1),
      partition jun2011 VALUES LESS THAN (2011, 7, 1));

次のようにして、ローカルの非同一キー索引を作成します。

CREATE INDEX sales_index ON sales(invoice_no) LOCAL;

最初は、すべてのパーティションは空で、同じデフォルト表領域にあります。パーティションを毎月1つ作成し、パーティション表salesに連結する必要があります。

現在が2011年7月で、7月分の売上データをパーティション表にロードするとします。ステージング・データベース内で、sales表と同じ列の型を持つ表jul_salesを作成します。必要に応じて、この表を作成する前に新しい表領域ts_julを作成し、この表領域に表を作成することもできます。表jul_salesは、CREATE TABLE ... AS SELECT文を使用して作成できます。jul_salesを作成して移入した後に、sales表内のローカル索引と同じ列に索引を付けて、この表の索引jul_sale_indexを作成することもできます。データ・ウェアハウス環境でステージング表を作成し、移入する方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

表を作成し、索引を構築した後、次のいずれかの方法で表のデータをデータ・ウェアハウスにトランスポートします。

  • トランスポータブル表を使用してjul_sales表をデータ・ウェアハウスにトランスポートできます。

  • ts_jul表領域を作成した場合は、トランスポータブル表領域を使用して表領域ts_julをデータ・ウェアハウスにトランスポートできます。

データ・ウェアハウスでは、7月分の売上データ用のsales表にパーティションを追加します。これにより、ローカルの非同一キー索引用にも1つのパーティションが作成されます。

ALTER TABLE sales ADD PARTITION jul2011 VALUES LESS THAN (2011, 8, 1);

トランスポートされた表jul_salesを新しいパーティションに変換して、表salesに連結します。

ALTER TABLE sales EXCHANGE PARTITION jul2011 WITH TABLE jul_sales 
   INCLUDING INDEXES
   WITHOUT VALIDATION;

この文により、新しいデータがパーティション表に連結され、7月分の売上データが新しいパーティションjul2011に格納されます。また、索引jul_sale_indexsales表のローカル索引のパーティションに変換されます。この文では、構造情報を操作するだけであり、データベースのポインタを切り替えれば済むので、結果は即時に返されます。新しいパーティション内のデータが旧パーティション内のデータとオーバーラップしないことがわかっている場合は、WITHOUT VALIDATION句を指定してください。この句を指定しないと、新しいパーティションの範囲を検証するために、そこに含まれる新しいデータがすべて検査されます。

sales表のすべてのパーティションが同じステージング・データベースから取り込まれる場合(ステージング・データベースが破壊されることはありません)、変換文は常に成功します。ただし、一般に、パーティション表のデータが異なるデータベースから取り込まれる場合は、変換操作が失敗する可能性があります。たとえば、salesjan2011パーティションが同じステージング・データベースから取り込まれていない場合は、前述の変換操作が失敗して次のエラーが返されることがあります。

ORA-19728: data object number conflict between table JUL_SALES and partition JAN2011 in table SALES

この競合を解決するには、次の文を発行して、競合しているパーティションを移動します。

ALTER TABLE sales MOVE PARTITION jan2011;

次に、変換操作を再試行してください。

交換が成功した後は、jul_salesjul_sale_indexを削除しても安全です(どちらも空になっています)。これで、7月分の売上データはデータ・ウェアハウスに正常にロードされたことになります。

15.1.2.2.3 構造化データのCDでの公開

トランスポータブル表領域とトランスポータブル表の両方で、構造化データをCDで公開できます。

データファイルやエクスポート・ダンプ・ファイルなどの公開するデータをCDにコピーできます。これにより、このCDを配布できます。トランスポータブル表領域を使用している場合は、データをCDにコピーする前にトランスポータブル・セットを生成する必要があります。

顧客は、このCDを受け取ったら、CDからディスク記憶域にデータファイルをコピーすることなく、既存のデータベースにCDの内容を追加できます。たとえば、Microsoft WindowsシステムでD:ドライブがCDドライブであるとします。データファイルcatalog.fおよびエクスポート・ダンプ・ファイルexpdat.dmpのデータを次のようにインポートできます。

impdp user_name/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir
   TRANSPORT_DATAFILES='D:\catalog.f'  

CDは、データベースの稼働中に取り出すことができます。この場合、そのデータへの後続の問合せでは、CD上のデータファイルをオープンできないことを示すエラーが返されます。ただし、このデータベースの他の部分への操作は影響を受けません。CDをドライブに戻すと、データは再び読取り可能になります。

CDを取り出すのは、読取り専用表領域のデータファイルを削除するのと同じことです。データベースを停止して再起動すると、削除されたデータファイルが見つからず、データベースをオープンできないことを示すメッセージが表示されます(初期化パラメータREAD_ONLY_OPEN_DELAYEDTRUEに設定していない場合)。READ_ONLY_OPEN_DELAYEDTRUEに設定されている場合は、データを問い合せるときにのみ、このファイルが読み込まれます。したがって、CDからデータをトランスポートする場合は、そのCDがデータベースに永続的に連結されないかぎり、READ_ONLY_OPEN_DELAYED初期化パラメータをTRUEに設定します。

15.1.2.2.4 複数データベースで同じ表領域を読取り専用でマウントする方法

トランスポータブル表領域を使用すると、複数のデータベースで1つの表領域を読取り専用でマウントできます。

これにより、データを別々のディスクに複製しなくても、異なるデータベースで同じデータを共有できます。表領域のデータファイルは、どのデータベースからもアクセス可能にする必要があります。データベースの破損を回避するために、表領域はマウント先のすべてのデータベース内で読取り専用のままにしてください。表領域のデータファイルはオペレーティング・システム・レベルで読取り専用にする必要があります。

次に、複数のデータベースで同じ表領域を読取り専用でマウントする方法を2つ示します。

  • 表領域の元のデータベースが表領域を共有するデータベースと異なる場合。

    ソース・データベースでトランスポータブル・セットを生成し、すべてのデータベースからアクセス可能なディスクにそのトランスポータブル・セットを格納し、その後、表領域をマウントする各データベースにメタデータをインポートします。

  • 表領域が、その表領域を共有するデータベースの1つに属する場合。

    データファイルがすでに共有ディスクに格納されているとします。表領域がすでに格納されているデータベース上で、この表領域を読取り専用にしてトランスポータブル・セットを生成し、データファイルは共有ディスク上の同じ位置に残したまま、表領域を他のデータベースにインポートします。

ディスクを複数のコンピュータからアクセス可能にするには、いくつかの方法があります。クラスタ・ファイル・システムまたはRAWディスクのいずれかを使用できます。ネットワーク・ファイル・システム(NFS)を使用することも可能ですが、NFSの停止中にユーザーが共有表領域を問い合せると、NFS操作がタイムアウトになるまでデータベースが停止することがあります。

後で、一部のデータベースから読取り専用表領域を削除できます。読取り専用表領域を削除しても、表領域のデータファイルは変更されません。したがって、削除操作によって表領域が破損することはありません。表領域をマウントしているデータベースが1つしかない場合を除き、表領域は読取り/書込み可能にしないでください。

15.1.2.2.5 履歴データのアーカイブ

トランスポータブル表領域またはトランスポータブル表を使用する場合、トランスポートされるデータは任意のOracle Databaseにインポートできる自己完結型のファイル・セットです。そのため、トランスポータブル表領域およびトランスポータブル表の手順を使用して、企業データ・ウェアハウスに旧データまたは履歴データをアーカイブできます。

15.1.2.2.6 トランスポータブル表領域を使用したTSPITRの実行

トランスポータブル表領域を使用して、表領域のpoint-in-timeリカバリ(TSPITR)を実行できます。

関連項目:

トランスポータブル表領域を使用してTSPITRを実行する方法は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください

15.1.2.2.7 個々の表のコピーまたは移動

トランスポータブル表を使用して、表を含む表領域全体をトランスポートしないで、表または表セットを別のデータベースに移動できます。トランスポータブル表を使用して、個々のパーティションとサブパーティションを別のデータベースにコピーまたは移動することもできます。

15.1.3 プラットフォーム間でのデータ・トランスポート

プラットフォーム間でデータをトランスポートできます。

この機能を使用すると、次のことができます。

  • データベースをプラットフォーム間で移行できます。

  • コンテンツ・プロバイダは、簡単にかつ効率的に構造化データを公開し、別のプラットフォームでOracle Databaseを実行している顧客に配布できます。

  • データ・ウェアハウス環境からデータ・マート(多くの場合、小規模プラットフォームで実行されている)へのデータの配布を簡素化できます。

  • 異なるオペレーティング・システムまたはプラットフォーム上のOracle Databaseインストール間で読取り専用表領域を共有できます。この場合、次の各項で説明するように、それらのプラットフォームおよびendiannessが同じプラットフォームからストレージ・システムにアクセスできることが前提となります。

多くのプラットフォーム(すべてではありません)では、クロス・プラットフォームでのデータのトランスポートがサポートされます。V$TRANSPORTABLE_PLATFORMビューを問い合せると、サポートされているプラットフォームを参照して、各プラットフォームのendian形式(バイトの並び順)を確認できます。次の問合せを実行すると、プラットフォーム間でのデータのトランスポートがサポートされているプラットフォームが表示されます。

COLUMN PLATFORM_NAME FORMAT A40
COLUMN ENDIAN_FORMAT A14
 
SELECT PLATFORM_ID, PLATFORM_NAME, ENDIAN_FORMAT 
  FROM V$TRANSPORTABLE_PLATFORM
  ORDER BY PLATFORM_ID;

PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT
----------- ---------------------------------------- --------------
          1 Solaris[tm] OE (32-bit)                  Big
          2 Solaris[tm] OE (64-bit)                  Big
          3 HP-UX (64-bit)                           Big
          4 HP-UX IA (64-bit)                        Big
          5 HP Tru64 UNIX                            Little
          6 AIX-Based Systems (64-bit)               Big
          7 Microsoft Windows IA (32-bit)            Little
          8 Microsoft Windows IA (64-bit)            Little
          9 IBM zSeries Based Linux                  Big
         10 Linux IA (32-bit)                        Little
         11 Linux IA (64-bit)                        Little
         12 Microsoft Windows x86 64-bit             Little
         13 Linux x86 64-bit                         Little
         15 HP Open VMS                              Little
         16 Apple Mac OS                             Big
         17 Solaris Operating System (x86)           Little
         18 IBM Power Based Linux                    Big
         19 HP IA Open VMS                           Little
         20 Solaris Operating System (x86-64)        Little
         21 Apple Mac OS (x86-64)                    Little

ソース・プラットフォームとターゲット・プラットフォームでendiannessが同じ場合は変換する必要はなく、データは同じプラットフォーム上にある場合と同様にトランスポートできます。

ソース・プラットフォームとターゲット・プラットフォームでendiannessが異なる場合は、トランスポートするデータをターゲット・プラットフォームの形式に変換する必要があります。次のいずれかの方法使用してデータを変換できます。

  • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャ

    これらのプロシージャのいずれかを使用して、ソース・プラットフォームとターゲット・プラットフォーム間でデータファイルを移動する場合、各データファイル内の各ブロックがターゲット・プラットフォームのendiannessに変換されます。変換はターゲット・プラットフォームで発生します。

  • RMAN CONVERTコマンド

    ソースまたはターゲット・プラットフォームで、追加のステップとして、RMAN CONVERTコマンドを実行できます。これにより、トランスポートするデータがターゲット・プラットフォームの形式に変換されます。

データファイルのデータを別のプラットフォームにトランスポートする前に、そのデータが属しているプラットフォームをデータファイル・ヘッダーで識別する必要があります異なるプラットフォーム上のOracle Databaseインストール間で読取り専用表領域をトランスポートする場合は、少なくとも1回データファイルを読取り/書込みにすることによって、この処理を実行できます。

15.1.4 データのトランスポートに関する一般的な制限事項

データのトランスポートに関する一般的な制限事項があります。また、フル・トランスポータブル・エクスポート/インポート、トランスポータブル表領域またはトランスポータブル表に固有の制限事項もあります。

データをトランスポートする場合は、次の一般的な制限事項に注意してください。

  • ソース・データベースとターゲット・データベースで、互換性のあるデータベース・キャラクタ・セットを使用している必要があります。具体的には、次の内容のいずれかを満たしている必要があります。

    • ソース・データベースとターゲット・データベースのデータベース・キャラクタ・セットが同じです。

    • ソース・データベース・キャラクタ・セットがターゲット・データベース・キャラクタ・セットの厳格な(バイナリ)サブセットであり、かつ、次の3つの条件が満たされています。

      • ソース・データベースは、Oracle Database 10g リリース1 (10.1.0.3)以上です。

      • トランスポート対象の表領域に、文字長セマンティクスが使用される表の列が含まれていないか、またはソースとターゲットの両方のデータベースにおいて、データベース・キャラクタ・セットの最大文字幅が同じです。

      • トランスポート対象のデータにはCLOBデータ型の列が含まれていないか、またはソース・データベースとターゲット・データベースにおいて、データベース・キャラクタ・セットが両方ともシングルバイトであるか、両方ともマルチバイトです。

    • ソース・データベース・キャラクタ・セットがターゲット・データベース・キャラクタ・セットの厳格な(バイナリ)サブセットであり、かつ、次の2つの条件が満たされています。

      • ソース・データベースは、Oracle Database 10g リリース1 (10.1.0.3)以前です。

      • ソース・データベースとターゲット・データベース・キャラクタ・セットにおいて、最大文字幅が同じです。

    注意:

    Oracle Databaseによって認識されるキャラクタ・セット間のサブセットとスーパーセットの関係は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

  • ソースとターゲットのデータベースで、互換性のある各国語キャラクタ・セットを使用している必要があります。具体的には、次の内容のいずれかを満たしている必要があります。

    • ソースとターゲットのデータベースの各国語キャラクタ・セットが同じです。

    • ソース・データベースはOracle Database 10g リリース1 (10.1.0.3)以上であり、トランスポート対象の表領域にはNCHARNVARCHAR2NCLOBのデータ型の列が含まれていません。

  • トランスポータブル・エクスポート操作を実行する場合は、次の制限が適用されます。

    • エクスポートを実行するユーザーのデフォルトの表領域を、転送対象となっている表領域のいずれかにすることはできません。

    • エクスポートを実行するユーザーのデフォルトの表領域を、書込み可能にする必要があります。

  • 非CDBで、ターゲット・データベースに同じ名前の表領域が含まれている場合は、表領域をトランスポートできません。

    CDBで、ターゲットのコンテナに同じ名前の表領域が含まれている場合は、表領域をトランスポートできません。ただし、異なるコンテナには同じ名前の表領域を格納できます。

    REMAP_TABLESPACEインポート・パラメータを使用して、データベース・オブジェクトを異なる表領域にインポートできます。または、トランスポート操作を実行する前に、トランスポート対象の表領域またはターゲットの表領域のいずれかの名前を変更できます。

    Oracle Database 12cリリース2 (12.2)以降では、Recovery Manager (RMAN)のRECOVERコマンドで、表領域を再マッピングしながら表を異なるスキーマに移動できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • CDBでは、デフォルトのデータ・ポンプ・ディレクトリ・オブジェクトDATA_PUMP_DIRはPDBでは機能しません。データ・ポンプ・エクスポートおよびインポートで使用する明示的なディレクトリ・オブジェクトをPDB内に定義する必要があります。

  • XMLTypeを含むデータのトランスポートには、次の制限事項があります。

    • ターゲット・データベースにXML DBがインストールされている必要があります。

    • XMLType表が参照するスキーマをXML DB標準スキーマにすることはできません。

    • トランスポートされたXMLType表のスキーマがターゲット・データベース内に存在しない場合は、スキーマがインポートおよび登録されます。ターゲット・データベース内にすでにスキーマが存在する場合は、インポート中にメッセージが表示されます。

    • XMLTypeを含むデータのメタデータは、データ・ポンプのみを使用してエクスポートおよびインポートする必要があります。

    次の問合せでは、XMLTypeを含む表領域のリストが返されます。

    select distinct p.tablespace_name from dba_tablespaces p, 
      dba_xml_tables x, dba_users u, all_all_tables t where
      t.table_name=x.table_name and t.tablespace_name=p.tablespace_name
      and x.owner=u.username;
    

    XMLTypeの詳細は、『Oracle XML DB開発者ガイド』を参照してください。

  • 解釈がアプリケーション固有で、データベースに対して不透明なタイプ(RAWBFILEなど)は、トランスポートできますが、クロス・プラットフォームのトランスポート操作では変換されません。このタイプの実際の構造はアプリケーションのみが認識するため、このタイプが新規プラットフォームに移動した後、アプリケーションではendiannessの問題に対処する必要があります。OPAQUE型を使用するタイプとオブジェクトも、直接的または間接的にこの制限の影響を受けます。

  • TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ)データを含む表がある表領域をタイム・ゾーンが異なるデータベース間でトランスポートする場合、TSLTZデータを含む表はトランスポートされません。エラー・メッセージで、トランスポートされなかった表の説明が示されます。ただし、表領域内のTSLTZデータを含まない表はトランスポートされます。

    データベースのタイム・ゾーンを確認するには、次の問合せを使用します。

    SELECT DBTIMEZONE FROM DUAL;
    

    ALTER DATABASE SQL文を使用すると、データベースのタイム・ゾーンを変更できます。

    データ・ポンプを使用すると、トランスポート操作の完了後に、TSLTZデータを含む表の従来のエクスポート/インポートを実行できます。

  • プラットフォーム間でのトランスポート操作の一部として、アナリティック・ワークスペースは使用できません。ソース・プラットフォームおよびターゲット・プラットフォームが別な場合、Data Pumpエクスポート/インポートを使用し、アナリティック・ワークスペースをエクスポートおよびインポートします。アナリティック・ワークスペースの詳細は、『Oracle OLAP DMLリファレンス』を参照してください。

注意:

データ・ポンプ・エクスポート・ユーティリティexpdpまたはインポート・ユーティリティimpdpは、Oracleサポート・サービスから要求された場合以外、SYSDBAとして起動しないでください。SYSDBAは内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。

特定の制限事項は、フル・トランスポータブル・エクスポート/インポート、トランスポータブル表領域またはトランスポータブル表に固有です。詳細は、次の適切な項を参照してください。

15.1.5 データのトランスポートの互換性に関する注意事項

データをトランスポートする場合、Oracle Databaseはターゲット・データベースが稼働する最低限の互換性レベルを計算します。

ターゲット・データベースが同じプラットフォームまたは異なるプラットフォームのどちらにあるかにかかわらず、トランスポータブル表領域を使用して、互換性の設定が同じまたは上位のデータベースに表領域または表をトランスポートできます。ソース・データベースの互換性レベルがターゲット・データベースの互換性レベルよりも高い場合、データベースではエラーが発生します。

次の表に、様々な使用例でのソース・データベースとターゲット・データベースの互換性の最低要件を示します。ソース・データベースとターゲット・データベースの互換性設定は同一である必要はありません。

表15-2 互換性の最低要件

トランスポートの使用例 互換性の最低設定
ソース・データベース ターゲット・データベース

フル・トランスポータブル・エクスポート/インポートを使用したデータベースのトランスポート

12.0 (Oracle Database 12c以降のデータベースのCOMPATIBLE初期化パラメータの設定)

12 (11.2.0.3以上のデータベースのVERSIONデータ・ポンプ・エクスポート・パラメータの設定)

12.0 (COMPATIBLE初期化パラメータの設定)

トランスポータブル表領域を使用した、同じプラットフォーム上のデータベース間での表領域のトランスポート

8.0 (COMPATIBLE初期化パラメータの設定)

8.0 (COMPATIBLE初期化パラメータの設定)

トランスポータブル表領域を使用した、ターゲット・データベースとデータベース・ブロック・サイズが異なる表領域のトランスポート

9.0 (COMPATIBLE初期化パラメータの設定)

9.0 (COMPATIBLE初期化パラメータの設定)

トランスポータブル表領域を使用した、異なるプラットフォーム上のデータベース間での表領域のトランスポート

10.0 (COMPATIBLE初期化パラメータの設定)

10.0 (COMPATIBLE初期化パラメータの設定)

データベース間での表のトランスポート

11.2.0 (Oracle Database 12c以降のデータベースのCOMPATIBLE初期化パラメータの設定)

11.2.0 (COMPATIBLE初期化パラメータの設定)

フル・トランスポータブル・エクスポート/インポートを使用する場合、ソース・データベースはOracle Database 11gリリース2 (11.2.0.3)以降のデータベースであり、ターゲット・データベースはOracle Database 12c以降のデータベースである必要があります。Oracle Database 11gリリース2 (11.2.0.3)以降のデータベースからOracle Database 12c以降のデータベースにトランスポートする場合は、VERSIONデータ・ポンプ・エクスポート・パラメータを12以上に設定する必要があります。Oracle Database 18cデータベースからOracle Database 18cデータベースにトランスポートする場合は、COMPATIBLE初期化パラメータを18.0.0以上に設定する必要があります。

15.2 データベースのトランスポート

新しいOracle Databaseインスタンスへデータベースをトランスポートできます。

15.2.1 フル・トランスポータブル・エクスポート/インポートの概要

フル・トランスポータブル・エクスポート/インポート機能を使用すると、データベース全体を別のOracle Databaseインスタンスにコピーできます。

データ・ポンプを使用すると、エクスポート・ダンプ・ファイルを生成し、必要に応じてダンプ・ファイルをターゲット・データベースにトランスポートした後、エクスポート・ダンプ・ファイルをインポートできます。また、データ・ポンプを使用すると、ネットワークを介してデータベースをコピーすることもできます。

トランスポートするデータベース内の表領域は、ディクショナリ管理表領域またはローカル管理表領域のいずれかになります。データベース内の表領域は、ターゲット・データベースの標準ブロック・サイズと同じブロック・サイズにする必要はありません。

注意:

この方法でデータベースをトランスポートする場合は、エクスポートが完了するまで、データベース内のユーザー定義表領域を読取り専用モードにする必要があります。これが望ましくない場合は、トランスポータブル表領域をバックアップ機能から使用できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

15.2.2 フル・トランスポータブル・エクスポート/インポートに関する制限事項

フル・トランスポータブル・エクスポート/インポートには制限事項があります。

フル・トランスポータブル・エクスポート/インポートに関する次の制限事項に注意してください。

  • フル・トランスポータブル・エクスポート/インポートには、「データのトランスポートに関する一般的な制限事項」で説明されている一般的な制限事項が適用されます。

  • 暗号化された表領域は、endiannessが異なるプラットフォームにはトランスポートできません。

    暗号化された表領域をendiannessが同じプラットフォームにトランスポートするには、エクスポート時にENCRYPTION_PWD_PROMPTエクスポート・ユーティリティ・パラメータをYESに設定するか、ENCRYPTION_PASSWORDエクスポート・ユーティリティ・パラメータを使用します。インポート時は、同等のインポート・ユーティリティ・パラメータを使用し、値をエクスポートに使用されたものと同じパスワードに設定します。

  • フル・トランスポータブル・エクスポート/インポートでは、ダイレクト・パスや外部表などの従来のデータ・ポンプ・エクスポート/インポートを使用して、管理表領域内のユーザー定義のデータベース・オブジェクトをエクスポートおよびインポートできます。管理表領域は、Oracle Databaseに用意されたSYSTEM表領域やSYSAUX表領域などの非ユーザー表領域です。

  • フル・トランスポータブル・エクスポート/インポートでは、管理表領域(SYSTEMSYSAUXなど)とユーザー定義表領域の両方で定義されているデータベース・オブジェクトはトランスポートできません。たとえば、パーティション表は、ユーザー定義表領域と管理表領域の両方に格納されることがあります。データベースにこのようなデータベース・オブジェクトがある場合は、それらのすべてのデータベース・オブジェクトが、管理表領域またはユーザー定義表領域のいずれかに格納されるように再定義した後、トランスポートできます。データベース・オブジェクトを再定義できない場合は、従来のデータ・ポンプ・エクスポート/インポートを使用できます。

  • フル・トランスポータブル・エクスポート/インポートを使用して、ネットワーク経由でデータベースをトランスポートする場合に、監査証跡情報自体がユーザー定義表領域に格納されていると、管理表領域(SYSTEMSYSAUXなど)に格納されている表に対して監査を有効にできません。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

15.2.3 エクスポート・ダンプ・ファイルを使用したデータベースのトランスポート

エクスポート・ダンプ・ファイルを使用してデータベースをトランスポートできます。

次のタスクのリストでは、エクスポート・ダンプ・ファイルを使用したデータベースのトランスポート処理の概要を示します。各タスクの詳細は、後続の例で示します。

  1. ソース・データベースで、各ユーザー定義表領域を読取り専用モードにし、データベースをエクスポートします。

    次のパラメータが指定された値に設定されていることを確認します。

    • TRANSPORTABLE=ALWAYS

    • FULL=Y

    ソース・データベースがOracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースである場合、VERSIONパラメータを12以上に設定する必要があります。

    ソース・データベースに暗号化された表領域、または暗号化された列を含む表が格納された表領域が含まれている場合は、ENCRYPTION_PWD_PROMPT=YESを指定するか、ENCRYPTION_PASSWORDパラメータを指定する必要があります。

    エクスポート・ダンプ・ファイルには、ユーザー定義表領域に格納されたオブジェクトのメタデータ、および管理表領域(SYSTEMSYSAUXなど)に格納されたユーザー定義オブジェクトのメタデータとデータの両方が含まれています。

  2. エクスポート・ダンプ・ファイルをトランスポートします。

    エクスポート・ダンプ・ファイルをターゲット・データベースへアクセス可能な場所にコピーします。

  3. データベース内のユーザー定義表領域すべてのデータファイルをトランスポートします。

    データファイルをターゲット・データベースへアクセス可能な場所にコピーします。

    ソース・プラットフォームとターゲット・プラットフォームが異なる場合は、V$TRANSPORTABLE_PLATFORMビューに対して問合せを実行して、各プラットフォームのendian形式をチェックできます(「プラットフォーム間でのデータのトランスポート」を参照)。

    ソース・プラットフォームのendian形式がターゲット・プラットフォームのendian形式と異なる場合は、次のいずれかの方法を使用してデータファイルを変換します。

    • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。

    • RMAN CONVERTコマンドを使用して、データファイルをターゲット・プラットフォームのendian形式に変換します。

    詳細は、「プラットフォーム間でのデータの変換」を参照してください。

  4. (オプション)ソース・データベースでユーザー定義表領域を読取り/書込みモードに戻します。

  5. ターゲット・データベースで、データベースをインポートします。

    インポートが完了したとき、ユーザー定義表領域は読取り/書込みモードになります。

データベースをトランスポートするタスクについては、次のデータファイルと表領域を想定した例で詳細に説明します。

表領域 タイプ データファイル

sales

ユーザー定義

/u01/app/oracle/oradata/mydb/sales01.dbf

customers

ユーザー定義

/u01/app/oracle/oradata/mydb/cust01.dbf

employees

ユーザー定義

/u01/app/oracle/oradata/mydb/emp01.dbf

SYSTEM

管理

/u01/app/oracle/oradata/mydb/system01.dbf

SYSAUX

管理

/u01/app/oracle/oradata/mydb/sysaux01.dbf

この例では、さらに次のことを想定しています。

  • ターゲット・データベースは、ソース・データベースからデータを移入する新しいデータベースです。ソース・データベースの名前はmydbです。

  • ソース・データベースとターゲット・データベースの両方がOracle Database 18cデータベースです。

エクスポート・ダンプ・ファイルを使用してデータベースをトランスポートするには、次のタスクを実行します。

タスク1   エクスポート・ダンプ・ファイルの作成

次のステップを実行して、エクスポート・ダンプ・ファイルを生成します。

  1. SQL*Plusを起動し、管理者として、あるいはALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限を持つユーザーとしてデータベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. データベース内のすべてのユーザー定義表領域を読取り専用にします。

    ALTER TABLESPACE sales READ ONLY;
    
    ALTER TABLESPACE customers READ ONLY;
    
    ALTER TABLESPACE employees READ ONLY;
    
  3. DATAPUMP_EXP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・エクスポート・ユーティリティを起動し、フル・トランスポータブル・エクスポート/インポート・オプションを指定します。

    SQL> HOST
    
    $ expdp user_name full=y dumpfile=expdat.dmp directory=data_pump_dir 
            transportable=always logfile=export.log
    
    Password: password
    

    トランスポータブル・オプションを使用するかどうかを設定するTRANSPORTABLE=ALWAYSを常に指定する必要があります。

    この例では、次のデータ・ポンプ・パラメータを指定します。

    • FULLパラメータでは、データベース全体をエクスポートすることを指定します。

    • DUMPFILEパラメータでは、作成する構造情報エクスポート・ダンプ・ファイルの名前をexpdat.dmpと指定します。

    • DIRECTORYパラメータでは、オペレーティング・システムまたはOracle Automatic Storage Managementのダンプ・ファイルの場所を示すディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をエクスポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

      非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

      ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

      関連項目:

    • LOGFILEパラメータでは、エクスポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルと同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

    Oracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースでフル・トランスポータブル・エクスポートを実行するには、次の例のように、VERSIONパラメータを使用します。

    expdp user_name full=y dumpfile=expdat.dmp directory=data_pump_dir 
          transportable=always version=12 logfile=export.log
    

    フル・トランスポータブル・インポートは、Oracle Database 12c以降のデータベースでのみサポートされます。

    注意:

    この例では、データ・ポンプ・ユーティリティを使用してエクスポートするのは、ユーザー定義表領域のデータ・ディクショナリの構造情報(メタデータ)のみです。実際のデータは管理表領域(SYSTEMおよびSYSAUX)についてのみアンロードされるため、この操作は大規模なユーザー定義表領域の場合にも比較的短時間で完了します。

  4. ログ・ファイルでエラーを確認し、ターゲット・データベースにトランスポートする必要があるダンプ・ファイルとデータファイルを書き留めます。expdpにより、これらのファイルの名前とパスが次のようなメッセージに出力されます。

    ******************************************************************************
    Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
      /u01/app/oracle/admin/mydb/dpdump/expdat.dmp
    ******************************************************************************
    Datafiles required for transportable tablespace SALES:
      /u01/app/oracle/oradata/mydb/sales01.dbf
    Datafiles required for transportable tablespace CUSTOMERS:
      /u01/app/oracle/oradata/mydb/cust01.dbf
    Datafiles required for transportable tablespace EMPLOYEES:
      /u01/app/oracle/oradata/mydb/emp01.dbf
    
  5. 完了した後、終了してSQL*Plusに戻ります。

    $ exit

関連項目:

データ・ポンプ・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください

タスク2   エクスポート・ダンプ・ファイルのトランスポート

ダンプ・ファイルを、DATA_PUMP_DIRディレクトリ・オブジェクトで指し示されているディレクトリ、または他の任意のディレクトリにトランスポートします。新しい場所はターゲット・データベースへアクセス可能であることが必要です。

ターゲット・データベースで、次の問合せを実行してDATA_PUMP_DIRの場所を確認します。

SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME   DIRECTORY_PATH
---------- ---------------- -----------------------------------
SYS        DATA_PUMP_DIR    C:\app\orauser\admin\orawin\dpdump\
タスク3   ユーザー定義表領域のデータファイルのトランスポート

データベースのユーザー定義表領域のデータファイルをターゲット・データベースへアクセス可能な場所にトランスポートします。

この例では、次のデータファイルをソース・データベースからターゲット・データベースに転送します。

  • sales01.dbf

  • cust01.dbf

  • emp01.dbf

ソース・プラットフォームとは異なるプラットフォームにデータベースをトランスポートする場合は、ソースおよびターゲット・プラットフォームの両方でプラットフォーム間のデータベース・トランスポートがサポートされているかどうかを確認し、それぞれのプラットフォームのendiannessを判別します。両方のプラットフォームのendiannessが同じ場合、変換は必要ありません。同じでない場合は、ソース・データベースまたはターゲット・データベースのどちらかでデータベースの各表領域を変換する必要があります。

データベースを異なるプラットフォームにトランスポートする場合は、各プラットフォームで次の問合せを実行できます。問合せで行が返される場合、そのプラットフォームではプラットフォーム間の表領域トランスポートがサポートされています。

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

ソース・プラットフォームでの問合せの結果は次のとおりです。

PLATFORM_NAME                      ENDIAN_FORMAT
---------------------------------- --------------
Solaris[tm] OE (32-bit)            Big

ターゲット・プラットフォームからの問合せの結果は、次のとおりです。

PLATFORM_NAME                      ENDIAN_FORMAT
---------------------------------- --------------
Microsoft Windows IA (32-bit)      Little

この例では、endian形式が異なることがわかります。したがって、この場合、データベースをトランスポートするには変換が必要です。DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。データファイルを、ターゲット・データベースの既存データファイルの場所にトランスポートします。UNIXおよびLinuxプラットフォームでは、この場所は通常、/u01/app/oracle/oradata/dbname/または+DISKGROUP/dbname/datafile/です。また、RMAN CONVERTコマンドを使用してデータファイルを変換できます。詳細は、「プラットフォーム間でのデータの変換」を参照してください。

注意:

表領域のendiannessを変換する必要がない場合は、任意のファイル転送方法を使用してファイルを転送できます。

タスク4   (オプション)表領域を読取り/書込みモードに戻す

次のように、トランスポートした表領域をソース・データベースで再び読取り/書込みモードにします。

ALTER TABLESPACE sales READ WRITE;
ALTER TABLESPACE customers READ WRITE;
ALTER TABLESPACE employees READ WRITE;

インポート・プロセスが成功したことを先に確認するために、このタスクを延期することができます。

タスク5   ターゲット・データベースでのデータベースのインポート

DATAPUMP_IMP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・インポート・ユーティリティを起動し、フル・トランスポータブル・エクスポート/インポート・オプションを指定します。

impdp user_name full=Y dumpfile=expdat.dmp directory=data_pump_dir
   transport_datafiles=
      '/u01/app/oracle/oradata/mydb/sales01.dbf',
      '/u01/app/oracle/oradata/mydb/cust01.dbf',
      '/u01/app/oracle/oradata/mydb/emp01.dbf'
   logfile=import.log

Password: password

この例では、次のデータ・ポンプ・パラメータを指定します。

  • FULLパラメータでは、データベース全体をFULLモードでインポートすることを指定します。

  • DUMPFILEパラメータでは、インポートされるユーザー定義表領域のメタデータおよび管理表領域のメタデータとデータの両方が含まれるエクスポート・ファイルを指定します。

  • DIRECTORYパラメータでは、エクスポート・ダンプ・ファイルの場所を識別するディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をインポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

    非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

    ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

    関連項目:

  • TRANSPORT_DATAFILESパラメータによって、インポートするすべてのデータファイルを識別します。

    多くのデータファイルがある場合は、PARFILEパラメータで指定されたパラメータ・ファイルでTRANSPORT_DATAFILESパラメータを複数回指定できます。

  • LOGFILEパラメータでは、インポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルの読取り元と同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

この文が正常に実行された後、インポート・ログ・ファイルをチェックして、予期しないエラーが発生していないことを確認します。

多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

impdp user_name parfile='par.f'

たとえば、par.fには次の行が含まれる場合があります。

FULL=Y
DUMPFILE=expdat.dmp 
DIRECTORY=data_pump_dir
TRANSPORT_DATAFILES=
'/u01/app/oracle/oradata/mydb/sales01.dbf',
'/u01/app/oracle/oradata/mydb/cust01.dbf',
'/u01/app/oracle/oradata/mydb/emp01.dbf'
LOGFILE=import.log

注意:

  • インポート中に、メタデータのロードのためにユーザー定義表領域を一時的に読取り/書込みにすることがあります。インポート中にデータに対するユーザー変更が行われないことを確認してください。インポートが正常に完了したとき、すべてのユーザー定義表領域は読取り/書込みになります。

  • ネットワーク・データベース・インポートを実行する場合は、TRANSPORTABLEパラメータをalwaysに設定する必要があります。

  • CDB内のPDBにインポートする場合は、ユーザー名の後にPDBの接続識別子を指定します。たとえば、PDBの接続識別子がhrpdbである場合は、Oracle Data Pumpインポート・ユーティリティを実行するとき、次のように入力します。

    impdp user_name@hrpdb ...

関連項目:

15.2.4 ネットワーク経由でのデータベースのトランスポート

ネットワーク経由でデータベースをトランスポートできます。

ネットワーク経由でデータベースをトランスポートするには、NETWORK_LINKパラメータを使用してインポートを実行しますが、インポートはデータベース・リンクを使用して実行され、ダンプ・ファイルは関連しません。

次のタスクのリストでは、ネットワーク経由での、データベースのトランスポート処理の概要を示します。各タスクの詳細は、後続の例で示します。

  1. ターゲット・データベースからソース・データベースへデータベース・リンクを作成します。

    インポート操作は、ターゲット・データベースでDATAPUMP_IMP_FULL_DATABASEロールを持つユーザーが実行する必要があり、データベース・リンクは、ソース・データベースでDATAPUMP_EXP_FULL_DATABASEロールを持つユーザーに接続する必要があります。ソース・データベースのユーザーは、SYSDBA管理権限を持つユーザーにすることはできません。データベース・リンクが接続ユーザー・データベース・リンクである場合は、ターゲット・データベース上のユーザーをSYSDBA管理権限を持つユーザーにはできません。接続ユーザー・データベース・リンクの詳細は、「データベース・リンクのユーザー」を参照してください。

  2. ソース・データベースで、データベース内のユーザー定義表領域を読取り専用にします。

  3. データベース内のユーザー定義表領域すべてのデータファイルをトランスポートします。

    データファイルをターゲット・データベースへアクセス可能な場所にコピーします。

    ソース・プラットフォームとターゲット・プラットフォームが異なる場合は、V$TRANSPORTABLE_PLATFORMビューに対して問合せを実行して、各プラットフォームのendian形式をチェックできます(「プラットフォーム間でのデータのトランスポート」を参照)。

    ソース・プラットフォームのendian形式がターゲット・プラットフォームのendian形式と異なる場合は、次のいずれかの方法を使用してデータファイルを変換します。

    • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。

    • RMAN CONVERTコマンドを使用して、データファイルをターゲット・プラットフォームのendian形式に変換します。

    詳細は、「プラットフォーム間でのデータの変換」を参照してください。

  4. ターゲット・データベースで、データベースをインポートします。

    データ・ポンプ・ユーティリティを起動して、ユーザー定義表領域のメタデータおよび管理表領域のメタデータとデータの両方をインポートします。

    次のパラメータが指定された値に設定されていることを確認します。

    • TRANSPORTABLE=ALWAYS

    • TRANSPORT_DATAFILES=list_of_datafiles

    • FULL=Y

    • NETWORK_LINK=source_database_link

      source_database_linkをソース・データベースへのデータベース・リンクの名前に置き換えます。

    • VERSION=12

      ソース・データベースがOracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースである場合、VERSIONパラメータが必要で、これを12に設定する必要があります。ソース・データベースがOracle Database 12c以降のデータベースの場合は、VERSIONパラメータは必要ありません。

    ソース・データベースに暗号化された表領域、または暗号化された列を含む表が格納された表領域が含まれている場合は、ENCRYPTION_PWD_PROMPT=YESを指定するか、ENCRYPTION_PASSWORDパラメータを指定する必要があります。

    データ・ポンプ・ネットワーク・インポートでは、ユーザー定義表領域に格納されたオブジェクトのメタデータ、および管理表領域(SYSTEMSYSAUXなど)に格納されたユーザー定義オブジェクトのメタデータとデータの両方がコピーされます。

    インポートが完了したとき、ユーザー定義表領域は読取り/書込みモードになります。

  5. (オプション)ソース・データベースでユーザー定義表領域を読取り/書込みモードに戻します。

データベースをトランスポートするタスクについては、次のデータファイルと表領域を想定した例で詳細に説明します。

表領域 タイプ データファイル

sales

ユーザー定義

/u01/app/oracle/oradata/mydb/sales01.dbf

customers

ユーザー定義

/u01/app/oracle/oradata/mydb/cust01.dbf

employees

ユーザー定義

/u01/app/oracle/oradata/mydb/emp01.dbf

SYSTEM

管理

/u01/app/oracle/oradata/mydb/system01.dbf

SYSAUX

管理

/u01/app/oracle/oradata/mydb/sysaux01.dbf

この例では、さらに次のことを想定しています。

  • ターゲット・データベースは、ソース・データベースからデータを移入する新しいデータベースです。ソース・データベースの名前はsourcedbです。

  • ソース・データベースとターゲット・データベースは、endiannessが同一の同じプラットフォームで実行されている必要があります。

    プラットフォームのendiannessをチェックするには、次の問合せを実行します。

    SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
         FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
         WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
    
  • sales表領域は暗号化されています。他の表領域は暗号化されていません。

  • ソース・データはOracle Database 11g リリース2 (11.2.0.3)データベースで、ターゲット・データベースはOracle Database 18cデータベースです。

注意:

この例では、Oracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースをCDB内の新しいOracle Database 18c PDBにトランスポートするために必要なタスクを説明しています。『Oracle Multitenant管理者ガイド』を参照してください。これらのタスクでは、非CDBを別の非CDBにトランスポートする方法も示されています。

ネットワーク経由でデータベースをトランスポートするには、次のタスクを実行します。

タスク1   ターゲット・データベースからソース・データベースへのデータベース・リンクの作成

次のステップを実行して、ターゲット・データベースからソース・データベースへデータベース・リンクを作成します。

  1. ソース・データベースとターゲット・データベースの間にネットワーク接続が構成されていることを確認します。

    詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

  2. SQL*Plusを起動し、データ・ポンプ・インポートによってデータベースをトランスポートする管理者としてターゲット・データベースに接続します。データベースをトランスポートするには、このユーザーにDATAPUMP_IMP_FULL_DATABASEロールが必要です。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  3. データベース・リンクを作成します。

    CREATE PUBLIC DATABASE LINK sourcedb USING 'sourcedb';
    

    USING句でソース・データベースのサービス名を指定します。

    インポート操作中、データベース・リンクをソース・データベースでDATAPUMP_EXP_FULL_DATABASEロールを持つユーザーに接続する必要があります。ソース・データベースのユーザーは、SYSDBA管理権限を持つユーザーにすることはできません。

タスク2   ユーザー定義表領域を読取り専用にする

ステップは次のとおりです。

  1. SQL*Plusを起動し、管理者として、あるいはALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限を持つユーザーとしてソース・データベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. データベース内のすべてのユーザー定義表領域を読取り専用にします。

    ALTER TABLESPACE sales READ ONLY;
    
    ALTER TABLESPACE customers READ ONLY;
    
    ALTER TABLESPACE employees READ ONLY;
    
タスク3   ユーザー定義表領域のデータファイルのトランスポート

データファイルを、ターゲット・データベースの既存データファイルの場所にトランスポートします。

UNIXおよびLinuxプラットフォームでは、この場所は通常、/u01/app/oracle/oradata/dbname/または+DISKGROUP/dbname/datafile/です。

この例では、次のデータファイルをソース・データベースからターゲット・データベースに転送します。

  • sales01.dbf

  • cust01.dbf

  • emp01.dbf

タスク4   ターゲット・データベースでのデータベースのインポート

DATAPUMP_IMP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・インポート・ユーティリティを起動し、フル・トランスポータブル・エクスポート/インポート・オプションを指定します。

impdp user_name full=Y network_link=sourcedb transportable=always 
   transport_datafiles=
      '/u01/app/oracle/oradata/mydb/sales01.dbf',
      '/u01/app/oracle/oradata/mydb/cust01.dbf',
      '/u01/app/oracle/oradata/mydb/emp01.dbf'
   encryption_pwd_prompt=YES version=12 logfile=import.log

Password: password

この例では、次のデータ・ポンプ・パラメータを指定します。

  • FULLパラメータでは、データベース全体をFULLモードでインポートすることを指定します。

  • NETWORK_LINKパラメータでは、ネットワーク・インポートに使用されるデータベース・リンクを指定します。

  • TRANSPORTABLEパラメータでは、インポートでトランスポータブル・オプションを使用することを指定します。

  • TRANSPORT_DATAFILESパラメータによって、インポートするすべてのデータファイルを識別します。

    多くのデータファイルがある場合は、PARFILEパラメータで指定されたパラメータ・ファイルでTRANSPORT_DATAFILESパラメータを複数回指定できます。

  • ENCRYPTION_PWD_PROMPTパラメータは、暗号化パスワードの入力を要求するようデータ・ポンプに指示し、データ・ポンプはネットワーク接続経由で送信されるデータとメタデータを暗号化します。暗号化された表領域または暗号化された列を含む表がインポート操作に含まれている場合は、ENCRYPTION_PWD_PROMPTパラメータまたはENCRYPTION_PASSWORDパラメータが必須になります。

  • ソース・データベースは、Oracle Database 11g リリース2 (11.2.0.3)またはOracle Database 11g以上のデータベースであるため、VERSIONパラメータを12に設定します。

  • LOGFILEパラメータでは、インポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。

この文が正常に実行された後、インポート・ログ・ファイルをチェックして、予期しないエラーが発生していないことを確認します。

多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。

暗号化された表領域または暗号化された列を含む表がインポート操作に含まれている場合も、インポート・パラメータ・ファイルを使用することをお薦めします。この場合、インポート・パラメータ・ファイルでENCRYPTION_PWD_PROMPT=YESを指定します。

たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

impdp user_name parfile='par.f'

たとえば、par.fには次の行が含まれる場合があります。

FULL=Y
NETWORK_LINK=sourcedb 
TRANSPORTABLE=always
TRANSPORT_DATAFILES=
'/u01/app/oracle/oradata/mydb/sales01.dbf',
'/u01/app/oracle/oradata/mydb/cust01.dbf',
'/u01/app/oracle/oradata/mydb/emp01.dbf'
ENCRYPTION_PWD_PROMPT=YES
VERSION=12
LOGFILE=import.log

注意:

  • インポート中に、メタデータのロードのためにユーザー定義表領域を一時的に読取り/書込みにすることがあります。インポート中にデータに対するユーザー変更が行われないことを確認してください。インポートが正常に完了したとき、すべてのユーザー定義表領域は読取り/書込みになります。

  • CDB内のPDBにインポートする場合は、ユーザー名の後にPDBの接続識別子を指定します。たとえば、PDBの接続識別子がhrpdbである場合は、Oracle Data Pumpインポート・ユーティリティを実行するとき、次のように入力します。

    impdp user_name@hrpdb ...

関連項目:

インポート・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。

タスク5   (オプション)ユーザー定義表領域を読取り/書込みモードに戻す

次のように、ユーザー定義表領域をソース・データベースで再び読取り/書込みモードにします。

ALTER TABLESPACE sales READ WRITE;

ALTER TABLESPACE customers READ WRITE;

ALTER TABLESPACE employees READ WRITE;

インポート・プロセスが成功したことを先に確認するために、このタスクを延期することができます。

15.3 データベース間での表領域のトランスポート

データベース間で表領域をトランスポートできます。

注意:

トランスポータブル表領域セットを別のプラットフォーム上のOracle Databaseにインポートするには、両方のデータベースの互換性が10.0.0以上に設定されている必要があります。リリース・レベルをまたいだ表領域のトランスポートにおけるデータベース互換性の詳細は、「データのトランスポートの互換性に関する注意事項」を参照してください。

15.3.1 トランスポータブル表領域の概要

トランスポータブル表領域機能を使用すると、表領域セットを別のOracle Databaseにコピーできます。

トランスポートする表領域は、ディクショナリ管理表領域またはローカル管理表領域のいずれかになります。トランスポートする表領域は、ターゲット・データベースの標準ブロック・サイズと同じブロック・サイズにする必要はありません。これらの使用例の説明は、「データのトランスポート: 使用例」を参照してください。

表領域をトランスポートする方法は、次の2通りあります。

  • 手動で、この項で説明されているステップを実行します。これには、SQL*Plusおよびデータ・ポンプへのコマンドの発行が含まれます。

  • Oracle Enterprise Manager Cloud Controlの「表領域のトランスポート」ウィザードの使用。

    「表領域のトランスポート」ウィザードを実行する手順は、次のとおりです。

    1. DATAPUMP_EXP_FULL_DATABASEロールを持つユーザーでCloud Controlにログインします。

    2. データベース・ホームページにアクセスします。

    3. 「スキーマ」メニューから、「データベースのエクスポート/インポート」を選択し、次に「表領域のトランスポート」を選択します。

注意:

  • この方法で表領域をトランスポートする場合は、トランスポート処理が完了するまで、トランスポート対象の表領域を読取り専用モードにする必要があります。これが望ましくない場合は、トランスポータブル表領域をバックアップ機能から使用できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • トランスポータブル表領域にはデータ・ポンプを使用する必要があります。XMLTypeデータをOracle Database 10g リリース2 (10.2)以前のデータベースに下位移行できるのは、元のインポート・ユーティリティ(IMP)とエクスポート・ユーティリティ(EXP)を使用できる環境がある場合のみです。これらのユーティリティの詳細は『Oracle Databaseユーティリティ』を、XMLTypesの詳細は『Oracle XML DB開発者ガイド』を参照してください。

関連項目:

15.3.2 トランスポータブル表領域に関する制限事項

トランスポータブル表領域には制限事項があります。

トランスポータブル表領域に関する次の制限事項に注意してください。

  • トランスポータブル表領域には、「データのトランスポートに関する一般的な制限事項」で説明されている一般的な制限事項が適用されます。

  • 表領域セットをトランスポートする場合、基礎になるオブジェクトを持つオブジェクト(マテリアライズド・ビューなど)またはオブジェクトを含むオブジェクト(パーティション表など)は、それらのオブジェクトがすべて表領域セットに含まれている場合のみトランスポートできます。

  • トランスポータブル表領域では、タイム・ゾーン・ファイルのバージョンが異なるプラットフォーム間で、TIMESTAMP WITH TIMEZONE (TSTZ)データを含む表をトランスポートできません。これらの表は、トランスポータブル表領域操作で自動的にスキップされます。これらの表は、従来と同じようにエクスポートおよびインポートできます。

    詳細は、『Oracle Databaseユーティリティ』を参照してください。

  • SYSTEMSYSAUXなどの管理表領域をトランスポータブル表領域セットに含めることはできません。

15.3.3 データベース間での表領域のトランスポート

データベース間で表領域をトランスポートできます。

次のタスクのリストでは、表領域のトランスポート処理の概要を示します。各タスクの詳細は、後続の例で示します。

  1. 自己完結型の表領域セットの選択
  2. ソース・データベースで、表領域セットを読取り専用モードにしてから、トランスポータブル表領域セットを生成します。

    トランスポータブル表領域セット(トランスポータブル・セット)は、トランスポートされる表領域セットのデータファイルと、そのセットの構造情報(メタデータ)を含むエクスポート・ダンプ・ファイルから構成されます。データ・ポンプを使用してエクスポートを実行します。

  3. エクスポート・ダンプ・ファイルをトランスポートします。

    エクスポート・ダンプ・ファイルをターゲット・データベースへアクセス可能な場所にコピーします。

  4. 表領域セットのトランスポート

    データファイルをターゲット・データベースへアクセス可能な場所にコピーします。

    ソース・プラットフォームとターゲット・プラットフォームが異なる場合は、V$TRANSPORTABLE_PLATFORMビューに対して問合せを実行して、各プラットフォームのendian形式をチェックできます(「プラットフォーム間でのデータのトランスポート」を参照)。

    ソース・プラットフォームのendian形式がターゲット・プラットフォームのendian形式と異なる場合は、次のいずれかの方法を使用してデータファイルを変換します。

    • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。

    • RMAN CONVERTコマンドを使用して、データファイルをターゲット・プラットフォームのendian形式に変換します。

    詳細は、「プラットフォーム間でのデータの変換」を参照してください。

  5. (オプション)ソース・データベースで表領域を読取り/書込みモードに戻します。
  6. ターゲット・データベースで、データベース・セットをインポートします。

    データ・ポンプ・ユーティリティを起動して、表領域セットのメタデータをインポートします。

例15-1 例

表領域をトランスポートするタスクについては、次のデータファイルと表領域を想定した例で詳細に説明します。

表領域 データファイル

sales_1

/u01/app/oracle/oradata/salesdb/sales_101.dbf

sales_2

/u01/app/oracle/oradata/salesdb/sales_201.dbf

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

トランスポータブル・セット内のオブジェクトとセット外のオブジェクトとの間に、論理的または物理的な依存関係が存在することがあります。トランスポートできるのは、自己完結した表領域セットのみです。この場合、自己完結とは、表領域セット内から外部への参照がないことを意味します。

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

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

    注意:

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

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

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

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

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

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

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

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

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

DBMS_TTSパッケージをコールするときは、自己完結かどうかを調べるトランスポータブル・セットの表領域のリストを指定します。制約を含むかどうかを指定することもできます。厳密または完全な完結であるかを調べる場合は、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);

このPL/SQLパッケージを起動した後に、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つとして、整合性制約をエクスポートしない方法があります。

関連項目:

15.3.3.2 タスク2: トランスポータブル表領域セットの生成

トランスポートする表領域セットが自己完結型であることを確認した後で、トランスポータブル表領域セットを生成します。

トランスポータブル表領域セットを生成する手順は、次のとおりです。

  1. SQL*Plusを起動し、管理者として、あるいはALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限を持つユーザーとしてデータベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. セット内のすべての表領域を読取り専用にします。
    ALTER TABLESPACE sales_1 READ ONLY;
    
    ALTER TABLESPACE sales_2 READ ONLY;
    
  3. DATAPUMP_EXP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・エクスポート・ユーティリティを起動し、トランスポータブル・セット内の表領域を指定します。
    SQL> HOST
    
    $ expdp user_name dumpfile=expdat.dmp directory=data_pump_dir 
            transport_tablespaces=sales_1,sales_2 logfile=tts_export.log
    
    Password: password
    

    トランスポータブル・オプションを使用することを指定するTRANSPORT_TABLESPACESを常に指定する必要があります。この例では、次の追加のデータ・ポンプ・パラメータを指定します。

    • DUMPFILEパラメータでは、作成する構造情報エクスポート・ダンプ・ファイルの名前をexpdat.dmpと指定します。

    • DIRECTORYパラメータでは、オペレーティング・システムまたはOracle Automatic Storage Managementのダンプ・ファイルの場所を示すディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をエクスポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

      非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

      ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

      関連項目:

    • LOGFILEパラメータでは、エクスポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルと同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

    • トリガーと索引は、デフォルトでエクスポート操作に含まれています。

    表領域のトランスポート操作を厳密完結チェック付きで実行するには、次の例に示すように、TRANSPORT_FULL_CHECKパラメータを使用します。

    expdp use_name dumpfile=expdat.dmp directory=data_pump_dir
          transport_tablespaces=sales_1,sales_2 transport_full_check=y
          logfile=tts_export.log
    

    この場合は、データ・ポンプ・エクスポート・ユーティリティによって、トランスポータブル・セット内のオブジェクトとトランスポータブル・セット外のオブジェクトとの間に依存性がないことを検証します。トランスポートする表領域セットが自己完結していない場合、エクスポートは失敗し、トランスポータブル・セットが自己完結していないことがわかります。その後は、タスク2に戻ってすべての違反を解決する必要があります。

    注意:

    この例では、データ・ポンプ・ユーティリティを使用してエクスポートするのは、表領域のデータ・ディクショナリの構造情報(メタデータ)のみです。実際のデータはアンロードされないため、この操作は大規模な表領域セットの場合でも比較的早く完了します。

  4. ログ・ファイルでエラーを確認し、ターゲット・データベースにトランスポートする必要があるダンプ・ファイルとデータファイルを書き留めます。expdpにより、これらのファイルの名前とパスが次のようなメッセージに出力されます。
    *****************************************************************************
    Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
      /u01/app/oracle/admin/salesdb/dpdump/expdat.dmp
    *****************************************************************************
    Datafiles required for transportable tablespace SALES_1:
      /u01/app/oracle/oradata/salesdb/sales_101.dbf
    Datafiles required for transportable tablespace SALES_2:
      /u01/app/oracle/oradata/salesdb/sales_201.dbf
    
  5. 完了した後、終了してSQL*Plusに戻ります。
    $ EXIT

    関連項目:

    データ・ポンプ・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください

15.3.3.3 タスク3: エクスポート・ダンプ・ファイルのトランスポート

ダンプ・ファイルを、DATA_PUMP_DIRディレクトリ・オブジェクトで指し示されているディレクトリ、または他の任意のディレクトリにトランスポートします。新しい場所はターゲット・データベースへアクセス可能であることが必要です。

ターゲット・データベースで、次の問合せを実行してDATA_PUMP_DIRの場所を確認します。

SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME   DIRECTORY_PATH
---------- ---------------- -----------------------------------
SYS        DATA_PUMP_DIR    C:\app\orauser\admin\orawin\dpdump\
15.3.3.4 タスク4: 表領域セットのトランスポート

表領域のデータファイルをターゲット・データベースへアクセス可能な場所にトランスポートします。

この例では、次のファイルをソース・データベースからターゲット・データベースに転送します。

  • sales_101.dbf

  • sales_201.dbf

ソース・プラットフォームとは異なるプラットフォームに表領域セットをトランスポートする場合は、ソースおよびターゲット・プラットフォームの両方でプラットフォーム間の表領域トランスポートがサポートされているかどうかを確認し、それぞれのプラットフォームのendiannessを判別します。両方のプラットフォームのendiannessが同じ場合、変換は必要ありません。同じでない場合は、ソース・データベースまたはターゲット・データベースのどちらかで表領域を変換する必要があります。

sales_1およびsales_2を異なるプラットフォームにトランスポートする場合は、各プラットフォームで次の問合せを実行できます。問合せで行が返される場合、そのプラットフォームではプラットフォーム間の表領域トランスポートがサポートされています。

SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
     FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
     WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

ソース・プラットフォームでの問合せの結果は次のとおりです。

PLATFORM_NAME                      ENDIAN_FORMAT
---------------------------------- --------------
Solaris[tm] OE (32-bit)            Big

ターゲット・プラットフォームからの結果は、次のとおりです。

PLATFORM_NAME                      ENDIAN_FORMAT
---------------------------------- --------------
Microsoft Windows IA (32-bit)      Little

この例では、endian形式が異なることがわかります。したがって、この場合、データベースをトランスポートするには変換が必要です。DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。データファイルを、ターゲット・データベースの既存データファイルの場所にトランスポートします。UNIXおよびLinuxプラットフォームでは、この場所は通常、/u01/app/oracle/oradata/dbname/または+DISKGROUP/dbname/datafile/です。また、RMAN CONVERTコマンドを使用してデータファイルを変換できます。詳細は、「プラットフォーム間でのデータの変換」を参照してください。

注意:

表領域のendiannessを変換する必要がない場合は、任意のファイル転送方法を使用してファイルを転送できます。

15.3.3.5 タスク5: (オプション)表領域を読取り/書込みモードに戻す

トランスポートした表領域をソース・データベースで再び読取り/書込みモードにします。

次の文で、sales_1およびsales_2表領域を読取り/書込みモードにします。

ALTER TABLESPACE sales_1 READ WRITE;
ALTER TABLESPACE sales_2 READ WRITE;

インポート・プロセスが成功したことを先に確認するために、このタスクを延期することができます。

15.3.3.6 タスク6: 表領域セットのインポート

トランスポータブル表領域に対する操作を完了するために、表領域セットをインポートします。

表領域セットのインポート手順は、次のとおりです。

  1. DATAPUMP_IMP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・インポート・ユーティリティを起動し、表領域メタデータをインポートします。
    impdp user_name dumpfile=expdat.dmp directory=data_pump_dir
       transport_datafiles=
       'c:\app\orauser\oradata\orawin\sales_101.dbf',
       'c:\app\orauser\oradata\orawin\sales_201.dbf'
       remap_schema=sales1:crm1  remap_schema=sales2:crm2
       logfile=tts_import.log
    
    Password: password
    

    この例では、次のデータ・ポンプ・パラメータを指定します。

    • DUMPFILEパラメータでは、インポートされる表領域のメタデータが含まれるエクスポート・ファイルを指定します。

    • DIRECTORYパラメータでは、エクスポート・ダンプ・ファイルの場所を識別するディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をインポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

      非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

      ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

      関連項目:

    • TRANSPORT_DATAFILESパラメータによって、インポートする表領域が含まれるすべてのデータファイルを識別します。

      多くのデータファイルがある場合は、PARFILEパラメータで指定されたパラメータ・ファイルでTRANSPORT_DATAFILESパラメータを複数回指定できます。

    • REMAP_SCHEMAパラメータによって、データベース・オブジェクトの所有権を変更します。REMAP_SCHEMAを指定しない場合、すべてのデータベース・オブジェクト(表や索引など)はソース・データベースと同じユーザー・スキーマ内で作成され、そのユーザーはターゲット・データベース内にすでに存在している必要があります。ユーザーが存在しない場合は、インポート・ユーティリティによってエラーが返されます。この例では、ソース・データベース内でsales1が所有している表領域セット内のオブジェクトは、表領域セットをインポートした後のターゲット・データベース内ではcrm1の所有となります。同様に、ソース・データベース内でsales2が所有しているオブジェクトは、ターゲット・データベース内ではcrm2の所有となります。この例では、ターゲット・データベース内にユーザーsales1およびsales2は存在する必要はありませんが、ユーザーcrm1およびcrm2が存在する必要があります。

      Oracle Database 12cリリース2 (12.2)以降では、Recovery Manager (RMAN)のRECOVERコマンドで、表を再マッピングしながら表を異なるスキーマに移動できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

    • LOGFILEパラメータでは、インポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルの読取り元と同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

    この文が正常に実行されると、コピーするセット内のすべての表領域は読取り専用モードのままになります。インポート・ログ・ファイルを確認して、エラーが発生しなかったことを確認します。

    多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

    impdp user_name parfile='par.f'
    

    par.fパラメータ・ファイルには、次の情報が含まれています。

    DUMPFILE=expdat.dmp 
    DIRECTORY=data_pump_dir
    TRANSPORT_DATAFILES=
    'C:\app\orauser\oradata\orawin\sales_101.dbf',
    'C:\app\orauser\oradata\orawin\sales_201.dbf'
    REMAP_SCHEMA=sales1:crm1  REMAP_SCHEMA=sales2:crm2
    LOGFILE=tts_import.log

    関連項目:

    インポート・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。

  2. 必要に応じて、ターゲット・データベースで表領域を読取り/書込みモードにします。

15.4 データベース間での表、パーティションまたはサブパーティションのトランスポート

データベース間で表、パーティションおよびサブパーティションをトランスポートできます。

15.4.1 トランスポータブル表の概要

トランスポータブル表機能を使用すると、表、パーティションまたはサブパーティションのセットを別のOracle Databaseにコピーできます。トランスポータブル表操作では、指定した表、パーティションまたはサブパーティションのメタデータがターゲット・データベースに移動されます。

トランスポータブル表操作では、指定した表が使用する表領域が自動的に識別されます。データを移動するには、これらの表領域のデータファイルをターゲット・データベースにコピーします。データ・ポンプ・インポートでは、トランスポータブル表操作に含まれない表、パーティションまたはサブパーティションによって占有されているデータファイルのブロックが自動的に解放されます。また、トランスポータブル表操作に含まれない表の依存オブジェクトによって占有されているブロックも自動的に解放されます。

表、パーティションおよびサブパーティションのトランスポートは、次の方法で実行できます。

  • エクスポート・ダンプ・ファイルの使用

    エクスポート時に、TABLESパラメータを指定し、TRANSPORTABLEパラメータをALWAYSに設定します。インポート時には、TRANSPORTABLEパラメータを指定しないでください。データ・ポンプ・インポートによってトランスポータブル表操作が自動的に認識されます。

  • ネットワーク経由

    インポート時に、TABLESパラメータを指定し、TRANSPORTABLEパラメータをALWAYSに設定し、NETWORK_LINKパラメータをソース・データベースを識別するように設定します。

15.4.2 トランスポータブル表に関する制限事項

トランスポータブル表には制限事項があります。

トランスポータブル表に関する次の制限事項に注意してください。

  • トランスポータブル表には、「データのトランスポートに関する一般的な制限事項」で説明されている一般的な制限事項が適用されます。

  • 同じスキーマに同じ名前の表を含むターゲット・データベースに表をトランスポートすることはできません。ただし、REMAP_TABLEインポート・パラメータを使用して、データを異なる表にインポートできます。または、トランスポート操作を実行する前に、トランスポート対象の表またはターゲット表のいずれかの名前を変更できます。

    Oracle Database 12cリリース2 (12.2)以降では、Recovery Manager (RMAN)のRECOVERコマンドで、表を再マッピングしながら表を異なるスキーマに移動できます。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  • タイム・ゾーン・ファイルのバージョンが異なるプラットフォーム間では、TIMESTAMP WITH TIMEZONE (TSTZ)データを含む表をトランスポートできません。

    詳細は、『Oracle Databaseユーティリティ』を参照してください。

15.4.3 エクスポート・ダンプ・ファイルを使用した表、パーティションまたはサブパーティションのトランスポート

エクスポート・ファイルを使用して、データベース間で表、パーティションまたはサブパーティションをトランスポートできます。

次のタスクのリストでは、エクスポート・ダンプ・ファイルを使用したデータベース間での表のトランスポート処理の概要を示します。各タスクの詳細は、後続の例で示します。

  1. 表、パーティションまたはサブパーティションのセットを選択します。

    パーティションをトランスポートする場合、トランスポータブル表操作で指定できるのは1つの表のパーティションのみであり、同じ操作で他の表をトランスポートすることはできません。また、トランスポータブル表操作で表のパーティションのサブセットのみをエクスポートすると、インポート時にそれぞれのパーティションが非パーティション表になります。

  2. ソース・データベースで、表、パーティションまたはサブパーティションのデータファイルに関連付けられた表領域を読取り専用モードにします。

    表の表領域を表示するには、DBA_TABLESビューを問い合せます。表領域のデータファイルを表示するには、DBA_DATA_FILESビューを問い合せます。

  3. データ・ポンプ・エクスポートを実行します。

  4. エクスポート・ダンプ・ファイルをトランスポートします。

    エクスポート・ダンプ・ファイルをターゲット・データベースへアクセス可能な場所にコピーします。

  5. 表、パーティションまたはサブパーティションのデータファイルをトランスポートします。

    データファイルをターゲット・データベースへアクセス可能な場所にコピーします。

    ソース・プラットフォームとターゲット・プラットフォームが異なる場合は、V$TRANSPORTABLE_PLATFORMビューに対して問合せを実行して、各プラットフォームのendian形式をチェックできます(「プラットフォーム間でのデータのトランスポート」を参照)。

    ソース・プラットフォームのendian形式がターゲット・プラットフォームのendian形式と異なる場合は、次のいずれかの方法を使用してデータファイルを変換します。

    • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。

    • RMAN CONVERTコマンドを使用して、データファイルをターゲット・プラットフォームのendian形式に変換します。

    詳細は、「プラットフォーム間でのデータの変換」を参照してください。

  6. (オプション)ソース・データベースで表領域を読取り/書込みモードに戻します。

  7. ターゲット・データベースで、インポートを実行します。

    データ・ポンプ・ユーティリティを起動して、表のメタデータをインポートします。

データ・ポンプ・ダンプ・ファイルを使用して、表、パーティションおよびサブパーティションをトランスポートするタスクについては、次のパーティションがsh.sales_prt表に存在することを想定した例で、詳細に説明します。

  • sales_q1_2000

  • sales_q2_2000

  • sales_q3_2000

  • sales_q4_2000

この例では、これらのパーティションの2つをターゲット・データベースにトランスポートします。

次のSQL文では、shスキーマのsales_prt表とそのパーティション、および表の表領域とデータファイルが作成されます。また、この文では、shサンプル・スキーマのデータを使用してパーティションにデータが挿入されます。

CREATE TABLESPACE sales_prt_tbs
   DATAFILE 'sales_prt.dbf' SIZE 20M 
   ONLINE; 
 
CREATE TABLE sh.sales_prt
    (prod_id        NUMBER(6), 
     cust_id        NUMBER, 
     time_id        DATE, 
     channel_id     CHAR(1), 
     promo_id       NUMBER(6), 
     quantity_sold  NUMBER(3), 
     amount_sold    NUMBER(10,2))
        PARTITION BY RANGE (time_id)
         (PARTITION SALES_Q1_2000 VALUES LESS THAN 
		          (TO_DATE('01-APR-2000','DD-MON-YYYY','NLS_DATE_LANGUAGE = American')),
          PARTITION SALES_Q2_2000 VALUES LESS THAN 
          		(TO_DATE('01-JUL-2000','DD-MON-YYYY','NLS_DATE_LANGUAGE = American')),
          PARTITION SALES_Q3_2000 VALUES LESS THAN 
		          (TO_DATE('01-OCT-2000','DD-MON-YYYY','NLS_DATE_LANGUAGE = American')),
          PARTITION SALES_Q4_2000 VALUES LESS THAN 
		          (TO_DATE('01-JAN-2001','DD-MON-YYYY','NLS_DATE_LANGUAGE = American')))
 TABLESPACE sales_prt_tbs;
 
INSERT INTO sh.sales_prt PARTITION(sales_q1_2000) 
  SELECT * FROM sh.sales PARTITION(sales_q1_2000);

INSERT INTO sh.sales_prt PARTITION(sales_q2_2000) 
  SELECT * FROM sh.sales PARTITION(sales_q2_2000);

INSERT INTO sh.sales_prt PARTITION(sales_q3_2000) 
  SELECT * FROM sh.sales PARTITION(sales_q3_2000);
 
INSERT INTO sh.sales_prt PARTITION(sales_q4_2000) 
  SELECT * FROM sh.sales PARTITION(sales_q4_2000);

COMMIT;

この例では、さらに次のことを想定しています。

  • ソース・データベースの名前はsourcedbです。

  • ソース・データベースとターゲット・データベースは、endiannessが同一の同じプラットフォームで実行されている必要があります。プラットフォームのendiannessをチェックするには、次の問合せを実行します。

    SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
         FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
         WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
    
  • sales_q1_2000パーティションとsales_q2_2000パーティションのみがターゲット・データベースにトランスポートされます。他の2つのパーティションはトランスポートされません。

エクスポート・ダンプ・ファイルを使用してパーティションをトランスポートするには、次のタスクを実行します。

タスク1   エクスポート・ダンプ・ファイルの作成

次のステップを実行して、エクスポート・ダンプ・ファイルを生成します。

  1. SQL*Plusを起動し、管理者として、あるいはALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限を持つユーザーとしてソース・データベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. トランスポートする表を含むすべての表領域を読取り専用にします。

    ALTER TABLESPACE sales_prt_tbs READ ONLY;
    
  3. DATAPUMP_EXP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・エクスポート・ユーティリティを起動し、トランスポータブル表オプションを指定します。

    SQL> HOST
    
    expdp user_name dumpfile=sales_prt.dmp  directory=data_pump_dir 
          tables=sh.sales_prt:sales_q1_2000,sh.sales_prt:sales_q2_2000
          transportable=always logfile=exp.log
    
    Password: password
    

    トランスポータブル・オプションを使用することを指定するTRANSPORTABLE=ALWAYSを常に指定する必要があります。

    この例では、次の追加のデータ・ポンプ・パラメータを指定します。

    • DUMPFILEパラメータでは、作成する構造情報エクスポート・ダンプ・ファイルの名前をsales_prt.dmpと指定します。

    • DIRECTORYパラメータでは、オペレーティング・システムまたはOracle Automatic Storage Managementのダンプ・ファイルの場所を示すディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をエクスポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

      非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

      ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

      関連項目:

    • TABLESパラメータでは、エクスポートする表、パーティションまたはサブパーティションを指定します。

    • LOGFILEパラメータでは、エクスポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルと同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

  4. ログ・ファイルで予期しないエラーを確認し、ターゲット・データベースにトランスポートする必要があるダンプ・ファイルとデータファイルを書き留めます。expdpにより、これらのファイルの名前とパスが次のようなメッセージに出力されます。

    Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLK
    Processing object type TABLE_EXPORT/TABLE/TABLE
    Processing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLK
    Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is:
      /u01/app/oracle/rdbms/log/sales_prt.dmp
    ******************************************************************************
    Datafiles required for transportable tablespace SALES_PRT_TBS:
      /u01/app/oracle/oradata/sourcedb/sales_prt.dbf
    Job "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at 11:32:13
    
  5. 完了した後、終了してSQL*Plusに戻ります。

    $ exit

関連項目:

データ・ポンプ・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください

タスク2   エクスポート・ダンプ・ファイルのトランスポート

ダンプ・ファイルを、ターゲット・データベース上のDATA_PUMP_DIRディレクトリ・オブジェクトで指し示されているディレクトリ、または他の任意のディレクトリにトランスポートします。新しい場所はターゲット・データベースへアクセス可能であることが必要です。

この例では、sales_prt.dmpダンプ・ファイルをソース・データベースからターゲット・データベースに転送します。

ターゲット・データベースで、次の問合せを実行してDATA_PUMP_DIRの場所を確認します。

SELECT * FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'DATA_PUMP_DIR';

OWNER      DIRECTORY_NAME   DIRECTORY_PATH
---------- ---------------- -----------------------------------
SYS        DATA_PUMP_DIR    /u01/app/oracle/rdbms/log/
タスク3   表のデータファイルのトランスポート

トランスポートする表を含む表領域のデータファイルを、ターゲット・データベースへアクセス可能な場所にトランスポートします。

通常は、データファイルを、ターゲット・データベースの既存データファイルの場所にトランスポートします。UNIXおよびLinuxプラットフォームでは、この場所は通常、/u01/app/oracle/oradata/dbname/または+DISKGROUP/dbname/datafile/です。

この例では、sales_prt.dbfデータファイルをソース・データベースからターゲット・データベースに転送します。

タスク4   (オプション)表領域を読取り/書込みモードに戻す

次のように、トランスポートする表を含む表領域をソース・データベースで再び読取り/書込みモードにします。

ALTER TABLESPACE sales_prt_tbs READ WRITE;

インポート・プロセスが成功したことを先に確認するために、このタスクを延期することができます。

タスク5   ターゲット・データベースでのパーティションのインポート

ターゲット・データベースで、DATAPUMP_IMP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・インポート・ユーティリティを起動し、トランスポータブル表オプションを指定します。

impdp user_name dumpfile=sales_prt.dmp directory=data_pump_dir
   transport_datafiles='/u01/app/oracle/oradata/targetdb/sales_prt.dbf'
   tables=sh.sales_prt:sales_q1_2000,sh.sales_prt:sales_q2_2000
   logfile=imp.log

Password: password

この例では、次のデータ・ポンプ・パラメータを指定します。

  • DUMPFILEパラメータでは、インポートされるデータのメタデータが含まれるエクスポート・ファイルを指定します。

  • DIRECTORYパラメータでは、エクスポート・ダンプ・ファイルの場所を識別するディレクトリ・オブジェクトを指定します。DIRECTORYオブジェクトはデータ・ポンプを起動する前に作成し、ディレクトリに対するREADおよびWRITEオブジェクト権限をインポート・ユーティリティを実行するユーザーに付与する必要があります。CREATE DIRECTORYコマンドの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

    非CDBで、ディレクトリ・オブジェクトDATA_PUMP_DIRが自動的に作成されます。このディレクトリへの読取りおよび書込みアクセス権がDBAロールに(したがって、ユーザーSYSおよびSYSTEMに)自動的に付与されます。

    ただし、ディレクトリ・オブジェクトDATA_PUMP_DIRは、PDBでは自動的には作成されません。このため、PDBにインポートする場合は、PDBにディレクトリ・オブジェクトを作成し、データ・ポンプを実行するときにそのディレクトリ・オブジェクトを指定します。

    関連項目:

  • TRANSPORT_DATAFILESパラメータによって、インポートするすべてのデータファイルを識別します。

    多くのデータファイルがある場合は、PARFILEパラメータで指定されたパラメータ・ファイルでTRANSPORT_DATAFILESパラメータを複数回指定できます。

  • TABLESパラメータでは、インポートする表、パーティションまたはサブパーティションを指定します。

  • LOGFILEパラメータでは、インポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。この例では、ログ・ファイルの書込み先はダンプ・ファイルの読取り元と同じディレクトリですが、ログ・ファイルは別の場所に書き込むことができます。

この文が正常に実行された後、インポート・ログ・ファイルをチェックして、予期しないエラーが発生していないことを確認します。

多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

impdp user_name parfile='par.f'

たとえば、par.fには次の行が含まれる場合があります。

DUMPFILE=sales_prt.dmp 
DIRECTORY=data_pump_dir
TRANSPORT_DATAFILES='/u01/app/oracle/oradata/targetdb/sales_prt.dbf'
TABLES=sh.sales_prt:sales_q1_2000,sh.sales_prt:sales_q2_2000
LOGFILE=imp.log

注意:

  • この例ではパーティションのサブセットをトランスポートするため、パーティションはターゲット・データベースで個別の表としてインポートされます。

  • インポート中、メタデータのロードのために表領域を一時的に読取り/書込みにすることがあります。インポート中にデータに対するユーザー変更が行われないことを確認してください。インポートが正常に完了したとき、すべてのユーザー定義表領域は読取り/書込みになります。

  • ネットワーク・データベース・インポートを実行する場合は、TRANSPORTABLEパラメータをalwaysに設定する必要があります。

関連項目:

インポート・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。

15.4.4 ネットワーク経由での表、パーティションまたはサブパーティションのトランスポート

ネットワーク経由で表をトランスポートするには、NETWORK_LINKパラメータを使用してインポートを実行し、インポートはデータベース・リンクを使用して実行され、ダンプ・ファイルは関連しません。

次のタスクのリストでは、ネットワーク経由でのデータベース間の表、パーティションおよびサブパーティションのトランスポート処理の概要を示します。各タスクの詳細は、後続の例で示します。

  1. 表、パーティションまたはサブパーティションのセットを選択します。

    パーティションをトランスポートする場合、トランスポータブル表操作で指定できるのは1つの表のパーティションのみであり、同じ操作で他の表をトランスポートすることはできません。また、トランスポータブル表操作で表のパーティションのサブセットのみをエクスポートすると、インポート時にそれぞれのパーティションが非パーティション表になります。

  2. ソース・データベースで、表、パーティションまたはサブパーティションのデータファイルに関連付けられた表領域を読取り専用モードにします。

    表の表領域を表示するには、DBA_TABLESビューを問い合せます。表領域のデータファイルを表示するには、DBA_DATA_FILESビューを問い合せます。

  3. 表、パーティションまたはサブパーティションのデータファイルをトランスポートします。

    データファイルをターゲット・データベースへアクセス可能な場所にコピーします。

    ソース・プラットフォームとターゲット・プラットフォームが異なる場合は、V$TRANSPORTABLE_PLATFORMビューに対して問合せを実行して、各プラットフォームのendian形式をチェックできます(「プラットフォーム間でのデータのトランスポート」を参照)。

    ソース・プラットフォームのendian形式がターゲット・プラットフォームのendian形式と異なる場合は、次のいずれかの方法を使用してデータファイルを変換します。

    • DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルを転送します。これらのプロシージャを使用すると、データファイルがターゲット・プラットフォームのendian形式に自動的に変換されます。

    • RMAN CONVERTコマンドを使用して、データファイルをターゲット・プラットフォームのendian形式に変換します。

    詳細は、「プラットフォーム間でのデータの変換」を参照してください。

  4. ターゲット・データベースで、インポートを実行します。

    データ・ポンプ・ユーティリティを起動して、表のメタデータをインポートします。

  5. (オプション)ソース・データベースで表領域を読取り/書込みモードに戻します。

ネットワーク経由で表をトランスポートするタスクについては、表がソース・データベースに存在することを想定した次の例で詳細に説明します。

表領域 データファイル

hr.emp_ttbs

emp_tsp

/u01/app/oracle/oradata/sourcedb/emp.dbf

oe.orders_ttbs

orders_tsp

/u01/app/oracle/oradata/sourcedb/orders.dbf

この例では、これらの表をターゲット・データベースにトランスポートします。この例を実行するには、これらの表はソース・データベースに存在する必要があります。

次のSQL文では、hrスキーマの表およびその表の表領域とデータファイルが作成されます。また、この文では、hrおよびoeサンプル・スキーマのデータを使用して表にデータが挿入されます。

CREATE TABLESPACE emp_tsp
   DATAFILE 'emp.dbf' SIZE 1M 
   ONLINE;

CREATE TABLE hr.emp_ttbs( 
   employee_id    NUMBER(6), 
   first_name     VARCHAR2(20), 
   last_name      VARCHAR2(25), 
   email          VARCHAR2(25), 
   phone_number   VARCHAR2(20), 
   hire_date      DATE, 
   job_id         VARCHAR2(10), 
   salary         NUMBER(8,2), 
   commission_pct NUMBER(2,2), 
   manager_id     NUMBER(6), 
   department_id  NUMBER(4))
 TABLESPACE emp_tsp;

INSERT INTO hr.emp_ttbs SELECT * FROM hr.employees;

CREATE TABLESPACE orders_tsp
   DATAFILE 'orders.dbf' SIZE 1M 
   ONLINE;

CREATE TABLE oe.orders_ttbs( 
   order_id      NUMBER(12),
   order_date    TIMESTAMP WITH LOCAL TIME ZONE,
   order_mode    VARCHAR2(8),
   customer_id   NUMBER(6),
   order_status  NUMBER(2),
   order_total   NUMBER(8,2),
   sales_rep_id  NUMBER(6),
   promotion_id  NUMBER(6))
 TABLESPACE orders_tsp;

INSERT INTO oe.orders_ttbs SELECT * FROM oe.orders;

COMMIT;

この例では、さらに次のことを想定しています。

  • ソース・データベースの名前はsourcedbです。

  • ソース・データベースとターゲット・データベースは、endiannessが同一の同じプラットフォームで実行されている必要があります。プラットフォームのendiannessをチェックするには、次の問合せを実行します。

    SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
         FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
         WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
    

ネットワーク経由で表をトランスポートするには、次のタスクを実行します。

タスク1   ターゲット・データベースからソース・データベースへのデータベース・リンクの作成

次のステップを実行して、ターゲット・データベースからソース・データベースへデータベース・リンクを作成します。

  1. ソース・データベースとターゲット・データベースの間にネットワーク接続が構成されていることを確認します。

    詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

  2. SQL*Plusを起動し、データ・ポンプ・インポートによってデータをトランスポートする管理者としてターゲット・データベースに接続します。データをトランスポートするには、このユーザーにDATAPUMP_IMP_FULL_DATABASEロールが必要です。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  3. データベース・リンクを作成します。

    CREATE PUBLIC DATABASE LINK sourcedb USING 'sourcedb';
    

    USING句でソース・データベースのサービス名を指定します。

    インポート操作中、データベース・リンクをソース・データベースでDATAPUMP_EXP_FULL_DATABASEロールを持つユーザーに接続する必要があります。ソース・データベースのユーザーは、SYSDBA管理権限を持つユーザーにすることはできません。

タスク2   表を含む表領域を読取り専用にする

ソース・データベースで、次のステップを実行します。

  1. SQL*Plusを起動し、管理者として、あるいはALTER TABLESPACEまたはMANAGE TABLESPACEシステム権限を持つユーザーとしてソース・データベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. トランスポートするデータを含むすべての表領域を読取り専用にします。

    ALTER TABLESPACE emp_tsp READ ONLY;
    ALTER TABLESPACE orders_tsp READ ONLY;
    
タスク3   表のデータファイルのトランスポート

トランスポートする表を含む表領域のデータファイルを、ターゲット・データベースへアクセス可能な場所にトランスポートします。

通常は、データファイルを、ターゲット・データベースの既存データファイルの場所にトランスポートします。UNIXおよびLinuxプラットフォームでは、この場所は通常、/u01/app/oracle/oradata/dbname/または+DISKGROUP/dbname/datafile/です。

この例では、emp.dbfおよびorders.dbfデータファイルをソース・データベースからターゲット・データベースに転送します。

タスク4   ターゲット・データベースでのデータベースのインポート

DATAPUMP_IMP_FULL_DATABASEロールを持つユーザーとしてデータ・ポンプ・インポート・ユーティリティを起動し、フル・トランスポータブル・エクスポート/インポート・オプションを指定します。

impdp user_name network_link=sourcedb transportable=always 
   transport_datafiles=
      '/u01/app/oracle/oradata/targetdb/emp.dbf'
      '/u01/app/oracle/oradata/targetdb/orders.dbf'
   tables=hr.emp_ttbs,oe.orders_ttbs
   logfile=import.log

Password: password

この例では、次のデータ・ポンプ・パラメータを指定します。

  • NETWORK_LINKパラメータでは、ネットワーク・インポートに使用されるソース・データベースへのデータベース・リンクを指定します。

  • TRANSPORTABLEパラメータでは、インポートでトランスポータブル・オプションを使用することを指定します。

  • TRANSPORT_DATAFILESパラメータによって、インポートするすべてのデータファイルを識別します。

    多くのデータファイルがある場合は、PARFILEパラメータで指定されたパラメータ・ファイルでTRANSPORT_DATAFILESパラメータを複数回指定できます。

  • TABLESパラメータでは、インポートする表を指定します。

  • LOGFILEパラメータでは、インポート・ユーティリティによって書き込まれるログ・ファイルのファイル名を指定します。

この文が正常に実行された後、インポート・ログ・ファイルをチェックして、予期しないエラーが発生していないことを確認します。

多数のデータファイルを扱う場合、データファイル名のリストを文の行で指定することは煩雑です。また、文の行制限を超える場合もあります。このような場合には、インポート・パラメータ・ファイルを使用できます。たとえば、次のようにしてデータ・ポンプ・インポート・ユーティリティを起動できます。

impdp user_name parfile='par.f'

たとえば、par.fには次の行が含まれる場合があります。

NETWORK_LINK=sourcedb 
TRANSPORTABLE=always
TRANSPORT_DATAFILES=
      '/u01/app/oracle/oradata/targetdb/emp.dbf'
      '/u01/app/oracle/oradata/targetdb/orders.dbf'
TABLES=hr.emp_ttbs,oe.orders_ttbs
LOGFILE=import.log

注意:

インポート中に、メタデータのロードのためにユーザー定義表領域を一時的に読取り/書込みにすることがあります。インポート中にデータに対するユーザー変更が行われないことを確認してください。インポートが正常に完了したとき、すべてのユーザー定義表領域は読取り/書込みになります。

関連項目:

インポート・ユーティリティの使用方法は、『Oracle Databaseユーティリティ』を参照してください。

タスク5   (オプション)表領域を読取り/書込みモードに戻す

次のように、トランスポートする表を含む表をソース・データベースで再び読取り/書込みにします。

ALTER TABLESPACE emp_tsp READ WRITE;
ALTER TABLESPACE orders_tsp READ WRITE;

15.5 プラットフォーム間でのデータの変換

トランスポータブル操作を実行するときに、ソース・プラットフォームとターゲット・プラットフォームでendiannessが異なる場合は、トランスポートするデータをターゲットの形式に変換する必要があります。両方のプラットフォームでendiannessが同じ場合は変換する必要はなく、データは同じプラットフォーム上にある場合と同様にトランスポートできます。データを変換するには、DBMS_FILE_TRANSFERパッケージまたはRMAN CONVERTコマンドを使用できます。

注意:

これらの項には記載されていない制限事項が適用されることがあります。詳細は、次のドキュメントを参照してください。

15.5.1 DBMS_FILE_TRANSFERパッケージを使用したプラットフォーム間でのデータの変換

DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用すると、データファイルの転送中にプラットフォーム間でデータを変換できます。

これらのプロシージャのいずれかを使用して、ソース・プラットフォームとターゲット・プラットフォーム間でデータファイルを移動する場合、各データファイル内の各ブロックがターゲット・プラットフォームのendiannessに変換されます。

この項では、例を使用して、データファイルを異なるプラットフォームに変換するためにDBMS_FILE_TRANSFERパッケージを使用する方法を示します。この例では、次のことを想定しています。

  • GET_FILEプロシージャでデータファイルを転送します。

  • mytable.342.123456789データファイルを異なるプラットフォームに転送します。

  • ソース・プラットフォームのendiannessはターゲット・プラットフォームのendiannessと異なります。

  • ソース・データベースのグローバル名はdbsa.example.comです。

  • ソース・データベースとターゲット・データベースの両方でOracle Automatic Storage Management(Oracle ASM)が使用されています。

注意:

DBMS_FILE_TRANSFERパッケージを使用して、endiannessが同じプラットフォーム間でデータファイルを転送することもできます。

GET_FILEプロシージャを使用して転送することによってデータファイルを変換するには、次のステップを実行します。

  1. ディレクトリ・オブジェクトを作成できる管理ユーザーとしてソース・データベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  2. ターゲット・データベースに転送するデータファイルを含むディレクトリのディレクトリ・オブジェクトを作成します。

    たとえば、+data/dbsa/datafileディレクトリに対してsales_dir_sourceというディレクトリ・オブジェクトを作成するには、次のSQL文を実行します。

    CREATE OR REPLACE DIRECTORY sales_dir_source 
       AS '+data/dbsa/datafile';
    

    ディレクトリ・オブジェクトの作成時に、指定したファイル・システム・ディレクトリが存在している必要があります。

  3. データベース・リンクの作成、ディレクトリ・オブジェクトの作成およびDBMS_FILE_TRANSFERパッケージのプロシージャの実行ができる管理ユーザーとしてターゲット・データベースに接続します。

    手順は、「SQL*Plusを使用したデータベースへの接続」を参照してください。

  4. ターゲット・データベースからソース・データベースへデータベース・リンクを作成します。

    ソース・データベースの接続されるユーザーには、ステップ2で作成したディレクトリ・オブジェクトについての読取り権限が必要です。

    「データベース・リンクの作成」を参照してください。

  5. ターゲット・データベースに転送するデータファイルを格納するディレクトリ・オブジェクトを作成します。

    DBMS_FILE_TRANSFERパッケージのプロシージャを実行するローカル・データベースのユーザーには、ディレクトリ・オブジェクトについての書込み権限が必要です。

    たとえば、+data/dbsb/datafileディレクトリに対してsales_dir_targetというディレクトリ・オブジェクトを作成するには、次のSQL文を実行します。

    CREATE OR REPLACE DIRECTORY sales_dir_target 
      AS '+data/dbsb/datafile';
    
  6. DBMS_FILE_TRANSFERパッケージのGET_FILEプロシージャを実行して、データファイルを転送します。

    たとえば、次のプロシージャを実行し、ステップ4で作成したデータベース・リンクを使用して、mytable.342.123456789データファイルをソース・データベースからターゲット・データベースに転送します。

    BEGIN
      DBMS_FILE_TRANSFER.GET_FILE(
        source_directory_object      => 'sales_dir_source',
        source_file_name             => 'mytable.342.123456789',
        source_database              => 'dbsa.example.com',
        destination_directory_object => 'sales_dir_target',
        destination_file_name        => 'mytable');
    END;
    /
    

注意:

この例では、宛先データファイル名はmytableです。Oracle ASMでは、GET_FILEプロシージャのdestination_file_nameパラメータで完全修飾ファイル名形式を使用できません。

関連項目:

15.5.2 RMANを使用したプラットフォーム間でのデータの変換

RMAN CONVERTコマンドを使用してデータを変換する場合は、データ・ポンプ・エクスポートを実行した後にソース・プラットフォームでデータを変換するか、またはデータ・ポンプ・インポートを実行する前にターゲット・プラットフォームでデータを変換できます。いずれの場合も、データファイルをソース・システムからターゲット・システムに転送する必要があります。

次のRMAN CONVERTコマンドを使用してデータを変換できます。

  • CONVERT DATAFILE

  • CONVERT TABLESPACE

  • CONVERT DATABASE

注意:

RMAN CONVERTコマンドにはデータ型の制約が適用されます。

15.5.2.1 エクスポート後のソース・システムでの表領域の変換

例を使用して、表領域を異なるプラットフォームに変換するために、RMAN CONVERT TABLESPACEコマンドを使用する方法を示します。

この例では、次のことを想定しています。

  • sales_1およびsales_2表領域を異なるプラットフォームにトランスポートします。

  • ソース・プラットフォームのendiannessはターゲット・プラットフォームのendiannessと異なります。

  • 表領域セットをターゲット・システムにトランスポートする前に、ソース・システムでデータを変換します。

  • ソース・データベースでデータ・ポンプ・エクスポートを完了しています。

ソース・システムで表領域を変換するには、次のステップを実行します。

  1. コマンド・プロンプトで、RMANを起動してソース・データベースに接続します。
    $ RMAN TARGET /
    
    Recovery Manager: Release 12.1.0.1.0 - Production
    
    Copyright (c) 1982, 2012, Oracle and/or its affiliates.  All rights reserved.
    
    connected to target database: salesdb (DBID=3295731590)
    
  2. RMAN CONVERT TABLESPACEコマンドを使用してデータファイルを変換し、ソース・プラットフォーム上の一時的な場所に格納します。

    この例では、一時的な場所はディレクトリ/tmpと想定し、すでに作成されているとします。変換されたデータファイルの名前は、システムによって割り当てられます。

    RMAN> CONVERT TABLESPACE sales_1,sales_2 
    2> TO PLATFORM 'Microsoft Windows IA (32-bit)'
    3> FORMAT '/tmp/%U';
    
    Starting conversion at source at 30-SEP-08
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile conversion
    input datafile file number=00007 name=/u01/app/oracle/oradata/salesdb/sales_101.dbf
    converted datafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_1_FNO-7_03jru08s
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45
    channel ORA_DISK_1: starting datafile conversion
    input datafile file number=00008 name=/u01/app/oracle/oradata/salesdb/sales_201.dbf
    converted datafile=/tmp/data_D-SALESDB_I-1192614013_TS-SALES_2_FNO-8_04jru0aa
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:25
    Finished conversion at source at 30-SEP-08

    関連項目:

    RMANのCONVERTコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  3. Recovery Managerを終了します。
    RMAN> exit
    Recovery Manager complete.
    
  4. データファイルをターゲット・システムに転送します。
15.5.2.2 インポート前のターゲット・システムでのデータファイルの変換

例を使用して、データファイルを異なるプラットフォームに変換するために、RMAN CONVERT DATAFILEコマンドを使用する方法を示します。

変換時、データファイルは、表領域名ではなく、ファイル名で指定します。表領域のメタデータがインポートされるまで、ターゲット・インスタンスでは対象の表領域名を認識できません。

この例では、次のことを想定しています。

  • トランスポートする表領域のデータファイルはまだ変換していません。

    DBMS_FILE_TRANSFERパッケージを使用してデータファイルをターゲット・システムに転送した場合、データファイルはファイル転送中に自動的に変換されています。「DBMS_FILE_TRANSFERパッケージを使用したプラットフォーム間でのデータの変換」を参照してください。

  • 次のデータファイルを異なるプラットフォームにトランスポートします。

    • C:\Temp\sales_101.dbf

    • C:\Temp\sales_201.dbf

    データファイルは、ターゲット・データベースにアクセス可能である必要があります。ターゲット・データベースにアクセスできない場合は、データファイルをターゲット・システムに転送します。「データファイルを転送するためのガイドライン」を参照してください。

  • ソース・プラットフォームのendiannessはターゲット・プラットフォームのendiannessと異なります。

  • データ・ポンプ・インポートを実行する前に、ターゲット・システムでデータを変換します。

  • 変換されたデータファイルは、C:\app\orauser\oradata\orawin\(ターゲット・システムの既存データファイルの場所)に配置されます。

ターゲット・システムで表領域を変換するには、次のステップを実行します。

  1. SQL*Plusを実行している場合は、ホスト・システムに戻ります。
    SQL> HOST
    
  2. RMAN CONVERT DATAFILEコマンドを使用して、データファイルをターゲット・プラットフォームに変換します。
    C:\>RMAN TARGET /
    
    Recovery Manager: Release 12.1.0.1.0 - Production
    
    Copyright (c) 1982, 2012, Oracle and/or its affiliates.  All rights reserved.
    
    connected to target database: ORAWIN (DBID=3462152886)
    
    RMAN> CONVERT DATAFILE 
    2>'C:\Temp\sales_101.dbf',
    3>'C:\Temp\sales_201.dbf'
    4>TO PLATFORM="Microsoft Windows IA (32-bit)"
    5>FROM PLATFORM="Solaris[tm] OE (32-bit)"
    6>DB_FILE_NAME_CONVERT=
    7>'C:\Temp\', 'C:\app\orauser\oradata\orawin\'
    8> PARALLELISM=4;
    

    ソースの場所、ターゲットの場所、あるいはその両方でOracle Automatic Storage Management(Oracle ASM)を使用しない場合、ソース・プラットフォームとターゲット・プラットフォームはオプションです。RMANでは、データファイルを調べてソース・プラットフォームを判別し、デフォルトのターゲット・プラットフォームは、変換を実行するホストのプラットフォームになります。

    ソースおよびターゲットの場所の両方でOracle ASMを使用する場合は、DB_FILE_NAME_CONVERT句でソース・プラットフォームとターゲット・プラットフォームを指定する必要があります。

    関連項目:

    RMANのCONVERTコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

  3. Recovery Managerを終了します。
    RMAN> exit
    Recovery Manager complete.

15.6 データファイルを転送するためのガイドライン

データファイルを転送する際には、ガイドラインに従う必要があります。

ソースとターゲットの両方がファイル・システムの場合は、次の機能を使用してトランスポートできます。

  • フラット・ファイルをコピーする機能(オペレーティング・システムのコピー・ユーティリティやFTPなど)

  • DBMS_FILE_TRANSFERパッケージ

  • RMAN

  • CDで配布する機能

ソースまたはターゲットのいずれかがOracle Automatic Storage Management(Oracle ASM)ディスク・グループの場合は、次の機能を使用して転送できます。

管理表領域(SYSTEMSYSAUXなど)またはUNDO表領域や一時表領域のデータファイルはトランスポートしないでください。

データを受け取るデータベースの標準ブロック・サイズと異なるブロック・サイズのデータをトランスポートする場合は、最初にDB_nK_CACHE_SIZE初期化パラメータ・エントリを受取り側データベースのパラメータ・ファイル内に設定する必要があります。

たとえば、ブロック・サイズが8KBのデータを標準ブロック・サイズが4KBのデータベースにトランスポートする場合は、DB_8K_CACHE_SIZE初期化パラメータ・エントリをパラメータ・ファイルに含める必要があります。このエントリがまだパラメータ・ファイルに含まれていない場合は、ALTER SYSTEM SET文を使用してこのパラメータを設定できます。

DB_nK_CACHE_SIZE初期化パラメータの値の指定方法は、『Oracle Databaseリファレンス』を参照してください。

Oracle Database 12cからは、DBMS_FILE_TRANSFERパッケージのGET_FILEまたはPUT_FILEプロシージャを使用して、データファイルの転送中にプラットフォーム間でデータを変換できます。「プラットフォーム間でのデータの変換」を参照してください。

Oracle Database 12cからは、RMANでネットワーク対応のリストアを使用してファイルを転送できます。RMANは、RESTOREコマンドのFROM SERVICE句を使用して、リモート・データベース・インスタンスからネットワーク経由でデータファイルをリストアします。ネットワーク対応リストアの主な利点は、バックアップをディスク上のステージング領域にリストアする必要性およびコピーを転送する必要性がなくなる点です。したがって、ネットワーク対応リストアを使用すると、ディスク領域および時間が節約されます。この手法には、ファイル転送時に、使用されたデータ・ブロックのみを圧縮、暗号化および転送できるという利点もあります。詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

注意:

UNIX ddユーティリティを使用してデータベース間でRAWデバイス・ファイルをコピーする場合は注意が必要です。Oracle Database 12c以降では、データベース・ファイルに対してRAWデバイスがサポートされていません。ddユーティリティは、ソースRAWデバイス・ファイル全体をコピーするために使用するか、またはソースRAWデバイス・ファイルの特定の範囲のみをコピーするようにオプションを指定して起動できます。

データファイルには非表示の制御情報も格納されているため、RAWデバイス・ファイルの実際のデータファイル・サイズを確認するのは困難です。ddユーティリティを使用してRAWデバイスを操作する必要がある場合は、ソースRAWデバイス・ファイルの内容全体を指定します。データベース・ファイルの内容をRAWデバイスからASMまたはファイル・システムに移動する場合は、Oracle Database 12c以降でRAWデバイスがサポートされていないため、オラクル社が提供するRMANなどのツールを使用してください。

関連項目:

DBMS_FILE_TRANSFERパッケージを使用して、トランスポートされるファイルとそのメタデータをコピーする方法は、「データベース・サーバーを使用したファイルのコピー」を参照してください