この方法では、広範なクロスプラットフォーム移行サポート、およびソースと宛先のデータベースの文字セットが異なる場合の限定的サポートが提供されます。 トランスポータブル表領域機能を使用して、新しいバージョンのOracle Databaseにデータを移行することもできます。 この方法は、エンディアン形式が異なるプラットフォーム間での移行、または物理的再編成が必要ない場合に多く選択されます。
トランスポータブル表領域による方法は、通常同じデータに対して通常のエクスポートおよびインポートを行うよりはるかに高速です。これは、データをアンロードおよび再ロードする必要がないためです。 もっと正確に言うと、ソース・データ・ファイルは宛先システムにトランスポートされ、ターゲット・データベースにアタッチされます。 この機能を使用した基本的な移行では、表領域内のオブジェクトに関連付けられたメタデータのみをData Pumpを使用してエクスポートおよびインポートします。
トランスポータブル表領域による方法では、多少の制限はありますが広範なクロスプラットフォーム・サポートが提供されます。 ビッグエンディアン・プラットフォームからExadata Cloud Machine (リトルエンディアン)に移行する場合、変換を行う追加処理が必要です。 ソースとターゲットのデータベース文字セットが同じ(AL32UTF8)であることが理想ですが、一部の状況では別のソース文字セットがサポートされます。 SYSTEM、SYSAUXなどの管理表領域はトランスポータブル表領域セットに含めることはできません。 トランスポータブル表領域の要件および制限の詳細は、データベース間での表領域のトランスポートに関する項を参照してください。
トランスポータブル表領域による方法を使用して基本的な移行を行うには、次のタスクを実行します。
自己完結している表領域のセットを選択します。 つまり、表領域のセット内のオブジェクトから表領域のセット外のオブジェクトへの参照がないということです。
たとえば、次のものがあってはいけません。
表領域セット外の表の索引。
表領域セット外にパーティションを持つパーティション表。
表領域セット外のオブジェクトを指す参照整合性制約。
表領域セット外のLOBを指すLOB列。
DBMS_TTS
パッケージのTRANSPORT_SET_CHECK
プロシージャを使用して、表領域のセットが自己完結しているかどうか判断できます。
ソース・データベースで表領域のセットを読取り専用モードにします。
ソース・データベース・ホストでData Pump Exportを実行し、表領域セットに関連付けられているメタデータをアンロードします。
Data Pump Exportダンプ・ファイルおよび表領域データファイルをExadata Cloud Machine計算ノードに転送します。
Exadata Cloud Machine計算ノードで表領域データ・ファイルをASMおよびExadata Storage Serverにロードします。 この段階で、必要に応じてエンディアン形式の変換を行います。
RMAN CONVERT
コマンドまたはDBMS_FILE_TRANSFER
パッケージのPUT_FILE
プロシージャを使用して、データ・ファイルのロードおよび変換を行えます。
Exadata Cloud Machine計算ノードでData Pump Importを使用して、表領域セットに関連付けられているメタデータをロードします。
Exadata Cloud Machineデータベース上の表領域を読取り/書込みモードに設定します。
データが正常にインポートされたことを確認したら、ダンプ・ファイルを削除できます。
この基本的な移行手順のかわりにRMANを使用してトランスポータブル表領域セットを移行できます。 RMANを使用することによって、ソース表領域を読取り専用モードにする必要がなくなります。 移行のソースとしてデータベース・バックアップを使用することもできます。リカバリ・ウィンドウでターゲット・ポイント・イン・タイム、SCNまたはリストア・ポイントを指定し、その時点に存在していた表領域データをトランスポートできます。 「Oracle Database Backup and Recoveryユーザーズ・ガイド」の「トランスポータブル表領域セットの作成」を参照してください。
この例では、既存のOracleデータベースから表領域をOracle Database Exadata Cloud Machineに移行するために必要なタスクのデモを段階的に示します。
この例では、FSUSER
データベース・ユーザーによって所有されるオブジェクトを含むFSDATA
およびFSINDEX
表領域の移行を行います。
この例では、ソース・データベースはビッグエンディアンのAIXベースのホスト上にあります。
ソース表領域セットが自己完結していることを確認します。
ソース・データベースのホストで、SQL*Plusを起動し、ソース・データベースにSYSTEM
ユーザーとしてログインします。
$ sqlplus system Enter password: <enter the password for the SYSTEM user>
DBMS_TTS
パッケージのTRANSPORT_SET_CHECK
プロシージャを使用して、表領域セットが自己完結しているかどうか判断します。
SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('FSDATA,FSINDEX', TRUE);
TRANSPORT_SET_VIOLATIONS
ビューを確認します。 DBMS_TTS.TRANSPORT_SET_CHECK
によって確認した表領域セットが自己完結している場合、このビューは空です。 そうではない場合、先に進む前に違反を解決する必要があります。
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
ソース・データベースで、トランスポートする表領域のセットを読取り専用モードにします。
SQL> ALTER TABLESPACE fsindex READ ONLY; SQL> ALTER TABLESPACE fsdata READ ONLY;
ソース・データベース・ホストでData Pump Exportを実行し、表領域セットに関連付けられているメタデータをアンロードします。
エクスポート操作からの出力を格納するオペレーティング・システム・ディレクトリを作成します。
$ mkdir /u01/app/oracle/admin/orcl/dpdump/for_cloud
オペレーティング・システム・ディレクトリを参照するディレクトリ・オブジェクトをソース・データベースに作成します。
SQL> CREATE DIRECTORY dp_for_cloud AS '/u01/app/oracle/admin/orcl/dpdump/for_cloud';
DBA_DATA_FILESの問合せを行い、FSDATA
およびFSINDEX
表領域に属するデータ・ファイルの名前を確認します。 これらのファイルは、エクスポート出力にもリストされます。
SQL> SELECT file_name FROM dba_data_files 2 WHERE tablespace_name in ('FSDATA','FSINDEX'); FILE_NAME ----------------------------------------------------------------- /u01/app/oracle/oradata/orcl/fsdata01.dbf /u01/app/oracle/oradata/orcl/fsindex01.dbf
Data Pump Exportを起動し、トランスポータブル表領域のエクスポートを実行します。
ソース・データベース・ホストでData Pump Exportを起動し、ソース・データベースに接続します。 TRANSPORT_TABLESPACES
オプションを使用してソース表領域をエクスポートします。 要求されたら、SYSTEM
ユーザーのパスワードを指定します。
$ expdp system TRANSPORT_TABLESPACES=fsdata,fsindex TRANSPORT_FULL_CHECK=YES DIRECTORY=dp_for_cloud
ダンプ・ファイルおよび表領域データ・ファイルをターゲットのExadata Cloud Machine計算ノードに転送します。
この例では、SCPユーティリティを使用してネットワーク経由でファイルをコピーします。
ターゲットExadata Cloud Machine計算ノードで、ダンプ・ファイルのコピー先のディレクトリを作成します。
転送するファイルのサイズに基づいて適切な場所を選択します。
$ mkdir /u01/app/oracle/admin/ORCL/dpdump/from_source
scp
コマンドを使用してエクスポート・ダンプ・ファイルをコピーする前に、ターゲットExadata Cloud Machine計算ノードへのアクセスを提供するSSH秘密鍵がソース・ホストで使用可能であることを確認します。 SSH鍵の詳細は、Exadata Cloud Machineへのネットワーク・アクセスについてを参照してください。
ソース・データベース・ホストでSCPユーティリティを使用してダンプ・ファイルおよび表領域データ・ファイルをターゲットのExadata Cloud Machine計算ノードに転送します。
$ scp -i private_key_file \ /u01/app/oracle/admin/orcl/dpdump/for_cloud/expdat.dmp \ oracle@compute_node_IP_address:/u01/app/oracle/admin/ORCL/dpdump/from_source $ scp -i private_key_file \ /u01/app/oracle/oradata/orcl/fsdata01.dbf \ oracle@compute_node_IP_address:/u01/app/oracle/admin/ORCL/dpdump/from_source $ scp -i private_key_file \ /u01/app/oracle/oradata/orcl/fsindex01.dbf \ oracle@compute_node_IP_address:/u01/app/oracle/admin/ORCL/dpdump/from_source
ターゲットExadata Cloud Machine計算ノードで表領域データ・ファイルを変換し、ASMおよびExadata Storage Serverにロードします。
この例では、データ・ファイルはRMAN CONVERT
コマンドを使用してリトルエンディアン形式に変換され、ASMにロードされます。
RMANを起動し、SYSTEM
ユーザーとしてターゲット・データベースにログインします。
$ rman target system target database password: <enter the password for the SYSTEM user>
CONVERT
コマンドを使用してデータ・ファイルを変換し、ASMにロードします。
変換したデータ・ファイルのASMファイル名を書き留めます。
RMAN> convert datafile 2> '/u01/app/oracle/admin/ORCL/dpdump/from_source/fsdata01.dbf', 3> '/u01/app/oracle/admin/ORCL/dpdump/from_source/fsindex01.dbf' 4> to platform="Linux x86 64-bit" 5> from platform="AIX-Based Systems (64-bit)" 6> format '+DATA_SYSNAME'; Starting converstion at target at ... ... input file name=/u01/app/oracle/admin/ORCL/dpdump/from_source/fsdata01.dbf converted datafile=+DATA_SYSNAME/ORCL/datafile/fsdata01.277.821069105 ... input file name=/u01/app/oracle/admin/ORCL/dpdump/from_source/fsindex01.dbf converted datafile=+DATA_SYSNAME/ORCL/datafile/fsindex01.278.419052810 ...
ターゲットExadata Cloud Machine計算ノードでData Pump Importを使用して、表領域セットに関連付けられているメタデータをロードします。
SQL*Plusを起動し、SYSTEM
ユーザーとしてターゲット・データベースにログインします。
Data Pumpダンプ・ファイルを含むオペレーティング・システム・ディレクトリを指すディレクトリ・オブジェクトをターゲット・データベースに作成します。
SQL> CREATE DIRECTORY dp_from_source AS '/u01/app/oracle/admin/ORCL/dpdump/from_source';
ターゲット・データベースにインポートされるオブジェクトの所有者のユーザー・アカウントがまだない場合は作成します。
SQL> CREATE USER fsowner 2 PROFILE default 3 IDENTIFIED BY fspass 4 TEMPORARY TABLESPACE temp 5 ACCOUNT UNLOCK;
Data Pump Importを起動し、ターゲット・データベースに表領域メタデータをインポートします。 TRANSPORT_DATAFILES
オプションを使用して、変換してASMにロードしたデータ・ファイルのファイル名を指定します。
$ impdp system DIRECTORY=dp_from_source \ TRANSPORT_DATAFILES='+DATA_SYSNAME/ORCL/datafile/fsdata01.277.821069105', \ '+DATA_SYSNAME/ORCL/datafile/fsindex01.278.419052810'
ターゲット・データベースでFSDATA
およびFSINDEX
表領域をREAD WRITE
モードに設定します。
SQL> ALTER TABLESPACE fsdata READ WRITE; Tablespace altered. SQL> ALTER TABLESPACE fsindex READ WRITE; Tablespace altered.
データが正常にインポートされたことを確認したら、expdat.dmp
ダンプ・ファイルを削除できます。