16 ORACLE_DATAPUMPアクセス・ドライバ
ORACLE_DATAPUMP
アクセス・ドライバは、ORACLE_DATAPUMP
型の外部表に固有のアクセス・パラメータのセットを提供します。
- ORACLE_DATAPUMPアクセス・ドライバの使用
アクセス・ドライバのデフォルト動作を変更するには、ORACLE_DATAPUMP
アクセス・パラメータを使用します。 - access_parameters句
ORACLE_DATAPUMP
アクセス・ドライバの外部表を作成する場合、access_parameters
句に特定のパラメータを指定できます。 - ORACLE_DATAPUMPアクセス・ドライバを使用したデータのアンロードとロード
ORACLE_DATAPUMP
アクセス・ドライバは、SQLのCREATE TABLE AS SELECT
文を使用した外部表の作成の一環として、ダンプ・ファイルにデータを書き込むことができます。 - サポートされるデータ型
ORACLE_DATAPUMP
アクセス・ドライバは、ロードおよびアンロード時に多くのデータ型を自動的に解決します。 - サポートされないデータ型
ORACLE_DATAPUMP
アクセス・ドライバを使用すると、サポートされていないデータ型のデータをアンロードおよび再ロードできます。 - ORACLE_DATAPUMPアクセス・ドライバを使用する際のパフォーマンスのヒント
ORACLE_DATAPUMP
アクセス・ドライバのパフォーマンスを向上させる方法について説明します。 - ORACLE_DATAPUMPアクセス・ドライバ使用時の制限事項
ORACLE_DATAPUMP
アクセス・ドライバを使用した外部表へのアクセスに適用される制限事項に注意してください。 - ORACLE_DATAPUMPアクセス・ドライバの予約語
ORACLE_DATAPUMP
アクセス・ドライバで予約されている識別子の語を使用する場合は、二重引用符で囲む必要があります。
親トピック: 外部表
16.1 ORACLE_DATAPUMPアクセス・ドライバの使用
アクセス・ドライバのデフォルト動作を変更するには、ORACLE_DATAPUMP
アクセス・パラメータを使用します。
ORACLE_DATAPUMP
アクセス・ドライバで指定する情報により、データ・ソースのデータが、外部表の定義と一致するように処理されます。
ORACLE_DATAPUMP
アクセス・ドライバを正しく使用するには、使用するプラットフォームのデータ・ファイルのファイル形式およびレコード形式(文字セット、フィールドのデータ型など)についての知識が必要です。また、SQLを使用して外部表を作成し、作成した表に対して問合せを実行できる必要もあります。
ノート:
- 他のトピックで説明されているその他の構文を使用しなければ、わかりにくい場合があります。構文によって行われる処理が明確でない場合は、トピック・ナビゲーション・ツリーをチェックして、特定の要素を確認してください。
- 外部表アクセス・パラメータにおいて列名や表名などの識別子が指定される場合、特定の値はアクセス・パラメータ・パーサーによって予約語とみなされます。予約語を識別子として使用するには、二重引用符で囲む必要があります。
- Oracle Database 21c以降、SQLモードの
ORACLE_DATAPUMP
アクセス・ドライバはオブジェクト・ストレージURIを書き込むことができます。
関連トピック
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.2 access_parameters句
ORACLE_DATAPUMP
アクセス・ドライバの外部表を作成する場合、access_parameters
句に特定のパラメータを指定できます。
この句およびその個別のパラメータはオプションです。たとえば、LOGFILE
を指定し、VERSION
は指定しない、またはその逆も可能です。access_parameters
句の構文は次のとおりです。
ノート:
これらのアクセス・パラメータは、SQL文のCREATE TABLE...ORGANIZATION EXTERNAL
のopaque_format_spec
としてまとめて参照されます。
- コメント
- ENCRYPTION
- LOGFILE | NOLOGFILE
- COMPRESSION
- VERSION句
VERSION
句は、ダンプ・ファイルを読み取るOracle Databaseの最小リリースを指定するために使用します。 - HADOOP_TRAILERS句
ORACLE_DATAPUMP
アクセス・ドライバにはHADOOP_TRAILERS
句が用意されており、ENABLED
またはDISABLED
(デフォルト)に設定できます。 - SQL ENCRYPT句の使用による影響
ORACLE_DATAPUMP
アクセス・ドライバのENCRYPT
句を使用して列を暗号化する場合の外部表の要件およびガイドラインを確認します。
関連トピック
関連項目:
SQL CREATE TABLE...ORGANIZATION EXTERNAL
文を使用するときにopaque_format_spec
を指定する方法の詳細は、Oracle Database SQL言語リファレンスのCREATE TABLE
に関する項を参照してください。
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.2.1 コメント
Comments are lines that begin with two hyphens followed by text. Comments must be placed before any access parameters. For example:
--This is a comment. --This is another comment. NOLOG
二重ハイフンの右側のすべてのテキストは行末まで無視されます。
親トピック: access_parameters句
16.2.2 ENCRYPTION
デフォルト
DISABLED
用途
ダンプ・ファイル・セットに書き込む前にデータを暗号化するかどうかを指定します。
構文および説明
ENCRYPTION [ENABLED | DISABLED]
ENABLED
を指定すると、すべてのデータが暗号化形式でダンプ・ファイル・セットに書き込まれます。
DISABLED
を指定すると、データは暗号化形式でダンプ・ファイル・セットに書き込まれません。
制限事項
このパラメータは、エクスポート操作でのみ使用します。
例
次の例では、ENCRYPTION
パラメータがENABLED
に設定されています。したがって、dept.dmp
ファイルに書き込まれるすべてのデータは暗号化形式になります。
CREATE TABLE deptXTec3
ORGANIZATION EXTERNAL (TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY def_dir1
ACCESS PARAMETERS (ENCRYPTION ENABLED) LOCATION ('dept.dmp'));
親トピック: access_parameters句
16.2.3 LOGFILE | NOLOGFILE
デフォルト: LOGFILE
が指定されない場合、デフォルトのディレクトリにログ・ファイルが作成され、ログ・ファイルの名前は、表名および.log
の拡張子を持つプロセスIDから生成されます。ログ・ファイルがすでに同じ名前で存在する場合は、アクセス・ドライバによってそのログ・ファイルが再びオープンされ、新しいログ情報がファイルの終わりに追加されます。
用途
LOGFILE
は、ダンプ・ファイルのアクセス中に生成されたすべてのメッセージを含むログ・ファイルの名前を指定します。NOLOGFILE
を使用してログ・ファイルの作成を回避できます。
構文および説明
NOLOGFILE
または
LOGFILE [directory_object:]logfile_name
ログ・ファイル名の一部としてディレクトリ・オブジェクトを指定しない場合、DEFAULT
DIRECTORY
属性で指定されたディレクトリ・オブジェクトが使用されます。ディレクトリ・オブジェクトが指定されず、デフォルトのディレクトリも指定されない場合は、エラーが返されます。置換変数を使用してパラレル・ロードおよびパラレル・アンロード中に一意のファイル名を作成する方法については、「LOGFILEのファイル名」を参照してください。
例
次の例では、ダンプ・ファイルdept_dmp
は、ディレクトリ・オブジェクトload_dir
で識別されるディレクトリ内にありますが、ログ・ファイルdeptxt
.log
は、ディレクトリ・オブジェクトlog_dir
で識別されるディレクトリ内にあります。
CREATE TABLE dept_xt (dept_no INT, dept_name CHAR(20), location CHAR(20)) ORGANIZATION EXTERNAL (TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY load_dir ACCESS PARAMETERS (LOGFILE log_dir:deptxt) LOCATION ('dept_dmp'));
16.2.3.1 パラレル・ロードのログ・ファイル・ネーミング
パラレル・ロードでファイル名を一意にするには、アクセス・ドライバで記号置換を行います。サポートされている記号置換は次のとおりです。
-
%p
は、現行のプロセスのプロセスIDに置換されます。たとえば、アクセス・ドライバのプロセスIDが12345の場合、exttab_%p
.log
は、exttab_12345.log
となります。 -
%a
は、現行のプロセスのエージェント番号に置換されます。エージェント番号は、外部表にアクセスしている各パラレル・プロセスに割り当てられた一意の番号です。この番号には、3文字になるように、左側に0が埋められます。たとえば、3番目のパラレル・エージェントがファイルを作成する際に、exttab_%a
.log
がファイル名として指定されている場合、エージェントはexttab_003.log
というファイルを作成します。 -
%%
は、%
に置換されます。ファイル名にパーセント符号が必要な場合、この記号置換を使用する必要があります。
%
文字に前述のリスト内の文字以外の文字が続く場合、エラーが返されます。
%p
または%a
を使用しないで出力ファイルに対して一意のファイル名を作成し、外部表にパラレルでアクセス中の場合、出力ファイルが破損するか、エージェントがファイルに書込みをできないという問題が発生する場合があります。
ファイルに対して拡張子が指定されていない場合は、デフォルトの拡張子である.log
が使用されます。生成された名前が有効なファイル名ではない場合、エラーが返され、データのロードまたはアンロードは行われません。
親トピック: LOGFILE | NOLOGFILE
16.2.4 COMPRESSION
デフォルト: DISABLED
用途
データをダンプ・ファイル・セットに書き込む前にデータを圧縮するかどうかと、使用する圧縮アルゴリズム(オプション)を指定します。
構文および説明
COMPRESSION [ENABLED {BASIC | LOW| MEDIUM | HIGH} | DISABLED]
-
ENABLED
を指定すると、アンロード操作全体ですべてのデータが圧縮されます。追加で次の圧縮オプションのいずれかを指定できます。-
BASIC
- 圧縮率と速度の適度な組合せが実現し、使用されるアルゴリズムはOracle Data Pumpの以前のバージョンと同じです。 -
LOW
- アンロード・スループットへの影響を最小限に抑えます。CPUリソースが限定要因となっている環境に適しています。 -
MEDIUM
- ほとんどの環境に適しています。このオプションはBASIC
オプションと同様、圧縮率と処理速度を加味したよい組合せですが、BASIC
とは異なるアルゴリズムが使用されています。 -
HIGH
- ネットワーク速度が限定要因となっている、速度が遅いネットワークを使用するアンロードに最適です。
ノート:
これらの圧縮アルゴリズムを使用するには、
COMPATIBLE
初期化パラメータを12.0.0以上に設定する必要があります。この機能では、Oracle Advanced Compressionオプションを有効にする必要があります。圧縮アルゴリズムのパフォーマンスは、そのCPU使用量および圧縮率(非圧縮の入力に対する割合としての圧縮済の出力のサイズ)によって特徴付けられます。これらの測定値は、使用される圧縮アルゴリズムの速度に加え、入力のサイズおよびタイプに応じて変化します。基本的に圧縮率はLOWからHIGHへと高くなります。ただし、圧縮率の上昇に応じて、消費されるCPUリソースが多くなります。
ご使用の環境で、データに対して様々な圧縮レベルをテストすることをお薦めします。エクスポートされるダンプ・ファイル・セットの圧縮レベルがパフォーマンスおよび記憶域要件を満たすようにするには、環境、ワークロードの特性、およびデータのサイズとタイプに基づいて圧縮レベルを選択します。
-
-
DISABLED
を指定すると、アップロード操作でデータは圧縮されません。
例
次の例では、COMPRESSION
パラメータがENABLED
に設定されています。したがって、dept.dmp
ダンプ・ファイルに書き込まれるすべてのデータは圧縮形式になります。
CREATE TABLE deptXTec3 ORGANIZATION EXTERNAL (TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY def_dir1 ACCESS PARAMETERS (COMPRESSION ENABLED) LOCATION ('dept.dmp'));
親トピック: access_parameters句
16.2.5 VERSION句
VERSION
句は、ダンプ・ファイルを読み取るOracle Databaseの最低のリリースを指定するために使用されます。
たとえば、11.1
と指定すると、Oracle Database 11gリリース1 (11.1および11.2)データベースの両方でダンプ・ファイルを読み取ることができます。11.2
と指定すると、Oracle Database 11gリリース2(11.2)データベースのみがダンプ・ファイルを読み取ることができます。
デフォルト値はCOMPATIBLE
です。
親トピック: access_parameters句
16.2.6 HADOOP_TRAILERS句
ORACLE_DATAPUMP
アクセス・ドライバにはHADOOP_TRAILERS
句が用意されており、ENABLED
またはDISABLED
(デフォルト)に設定できます。
HADOOP_TRAILERS
句を有効にすると、Hadoopトレーラがダンプ・ファイルに書き込まれます。Hadoopトレーラには、ファイルの様々な部分の場所およびサイズに関する情報が含まれます。情報は、先頭ではなく、ファイルの末尾のダンプ・トレーラ・ブロックと、ストリーム・データの末尾に書き込まれます。
親トピック: access_parameters句
16.2.7 SQL ENCRYPT句の使用による影響
ORACLE_DATAPUMP
アクセス・ドライバのENCRYPT
句を使用して列を暗号化する場合の外部表の要件およびガイドラインを確認します。
外部表の作成時にSQL ENCRYPT
句を指定する場合は、次の点に注意してください。
-
ENCRYPT
句を指定した列は、暗号化されてからダンプ・ファイルに書き込まれます。 -
ダンプ・ファイルを別のデータベースに移動する場合は、ダンプ・ファイル内の暗号化列、およびダンプ・ファイルの読込みに使用する外部表の両方で、同じ暗号化パスワードを使用する必要があります。
-
2つ目のデータベースの外部表で暗号化されている正しい列に対してパスワードを指定しなかった場合は、エラーが発生します。指定したパスワードが正しくない場合は、ダンプ・ファイルのデータが無効になります。
-
作成するダンプ・ファイルのリリースは10.2以上にする必要があります。それ以外の場合はエラーが戻されます。
関連項目:
CREATE TABLE
文でのENCRYPT
句の使用方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: access_parameters句
16.3 ORACLE_DATAPUMPアクセス・ドライバを使用したデータのアンロードとロード
ORACLE_DATAPUMP
アクセス・ドライバは、SQLのCREATE TABLE AS SELECT
文を使用した外部表の作成の一環として、ダンプ・ファイルにデータを書き込むことができます。
ファイル内のデータは、バイナリ形式で記述され、ORACLE_DATAPUMP
アクセス・ドライバによってのみ読取りが可能です。作成されたダンプ・ファイルは変更できません(つまり、ダンプ・ファイルに対してデータ操作言語(DML)操作は実行できません)。ただし、このファイルは何回でも読み取ることができ、別の外部表のダンプ・ファイルとして同じデータベースまたは異なるデータベースで使用できます。
次のステップではサンプル・スキーマoe
を使用して、ORACLE_DATAPUMP
アクセス・ドライバを使用したデータのアンロード方法およびロード方法の例を示します。(例では、ディレクトリ・オブジェクトdef_dir1
がすでに存在し、ユーザーoe
にはそれに対する読取りおよび書込み権限が付与されているとします。)
- パラレル・ロードおよびパラレル・アンロード
このトピックでは、パラレル・ロードおよびパラレル・アンロードについて説明します。 - ダンプ・ファイルの結合
異なる外部表から移入されたすべてのダンプ・ファイルは、別の外部表のLOCATION
句で指定できます。
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.3.1 パラレル・ロードおよびパラレル・アンロード
このトピックでは、パラレル・ロードおよびパラレル・アンロードについて説明します。
ダンプ・ファイルは、記述されるすべてのデータを保持できるサイズのディスクに格納する必要があります。すべてのデータを保持できない容量の場合、CREATE
TABLE
AS
SELECT
文に対してエラーが返されます。この問題を軽減するには、CREATE
TABLE
AS
SELECT
文の実行時に複数のディレクトリ・オブジェクトを作成するという方法があります。ただし、これらのディレクトリは、異なるディスクに存在する必要があります。LOCATION
句でdirectory:file
形式を使用して複数の位置を指定し、PARALLEL
句を指定することで複数のファイルを作成できます。外部表を移入するために作成された各パラレルI/Oサーバー・プロセスでは、固有のファイルに書込みを実行します。各I/Oサーバー・プロセスには固有のファイルが必要であるため、LOCATION
句のファイル数と並列度が一致している必要があります。余分なファイルを指定した場合は、すべて無視されます。指定された並列度に対して必要数のファイルが存在しない場合、LOCATION
句のファイル数と一致するよう並列度が下げられます。
inventories
表の3つのファイルへのアンロードの例を次に示します。
SQL> CREATE TABLE inventories_XT_3 2 ORGANIZATION EXTERNAL 3 ( 4 TYPE ORACLE_DATAPUMP 5 DEFAULT DIRECTORY def_dir1 6 LOCATION ('inv_xt1.dmp', 'inv_xt2.dmp', 'inv_xt3.dmp') 7 ) 8 PARALLEL 3 9 AS SELECT * FROM oe.inventories; Table created.
ORACLE_DATAPUMP
アクセス・ドライバを使用してデータをロードする場合は、パラレル処理で、複数のダンプ・ファイルや同じダンプ・ファイルのチャンクも同時に読み取ることができます。したがって、ファイルが複数のファイル・オフセットを含むことができる大きさであれば、ダンプ・ファイルが1つであっても、データをパラレルでロードできます。ORACLE_DATAPUMP
外部表から読み込む場合、並列度はLOCATION
句のファイル数に関連付けられません。
16.3.2 ダンプ・ファイルの結合
異なる外部表から移入されたすべてのダンプ・ファイルは、別の外部表のLOCATION
句で指定できます。
たとえば、異なる本番データベースのデータを個別のファイルにアンロードし、次にそれらのファイルをデータ・ウェアハウスで定義された外部表に含めることができます。これにより、複数のソースから容易にデータを集計できます。唯一の制限は、すべての外部表のメタデータが完全に同じでなければいけない必要がある点です。つまり、文字セット、タイムゾーン、スキーマ名、表名および列名がすべて一致する必要があります。また、列は同じ順序で定義され、そのデータ型も完全に同一である必要があります。1つ目の外部表を作成した後で、2つ目の外部表に同じ表名を使用できるようにするには、1つ目の外部表を削除する必要があります。こうすることで、2つのダンプ・ファイルにリストされたメタデータは同じ状態になり、これらのダンプ・ファイルを同時に使用して同じ外部表を作成できます。
SQL> CREATE TABLE inv_part_1_xt 2 ORGANIZATION EXTERNAL 3 ( 4 TYPE ORACLE_DATAPUMP 5 DEFAULT DIRECTORY def_dir1 6 LOCATION ('inv_p1_xt.dmp') 7 ) 8 AS SELECT * FROM oe.inventories WHERE warehouse_id < 5; Table created. SQL> DROP TABLE inv_part_1_xt; SQL> CREATE TABLE inv_part_1_xt 2 ORGANIZATION EXTERNAL 3 ( 4 TYPE ORACLE_DATAPUMP 5 DEFAULT directory def_dir1 6 LOCATION ('inv_p2_xt.dmp') 7 ) 8 AS SELECT * FROM oe.inventories WHERE warehouse_id >= 5; Table created. SQL> CREATE TABLE inv_part_all_xt 2 ( 3 PRODUCT_ID NUMBER(6), 4 WAREHOUSE_ID NUMBER(3), 5 QUANTITY_ON_HAND NUMBER(8) 6 ) 7 ORGANIZATION EXTERNAL 8 ( 9 TYPE ORACLE_DATAPUMP 10 DEFAULT DIRECTORY def_dir1 11 LOCATION ('inv_p1_xt.dmp','inv_p2_xt.dmp') 12 ); Table created. SQL> SELECT * FROM inv_part_all_xt MINUS SELECT * FROM oe.inventories; no rows selected
16.4 サポートされるデータ型
ORACLE_DATAPUMP
アクセス・ドライバは、ロードおよびアンロード時に多くのデータ型を自動的に解決します。
外部表を使用してデータベース間でデータを移動する際には、次のような問題があります。
- 2つのプラットフォーム間で、データベースの文字セットとデータベースの各国語文字セットが異なる場合があります。
- 2つのデータベースで、プラットフォームのエンディアンが異なる場合があります。
ORACLE_DATAPUMP
アクセス・ドライバは、これらの状況の一部を自動的に解消します。
次のデータ型は、ロード時およびアンロード時に自動的に変換されます。
- 文字(
CHAR
、NCHAR
、VARCHAR2
、NVARCHAR2
) RAW
NUMBER
- 日時
BLOB
CLOB
およびNCLOB
ROWID
およびUROWID
外部表でサポートされていないデータ型を使用するとエラーが返されます。サポートされていないデータ型であるLONG
を使用した例を次に示します。
SQL> CREATE TABLE bad_datatype_xt 2 ( 3 product_id NUMBER(6), 4 language_id VARCHAR2(3), 5 translated_name NVARCHAR2(50), 6 translated_description LONG 7 ) 8 ORGANIZATION EXTERNAL 9 ( 10 TYPE ORACLE_DATAPUMP 11 DEFAULT DIRECTORY def_dir1 12 LOCATION ('proddesc.dmp') 13 ); translated_description LONG * ERROR at line 6: ORA-30656: column type not supported on external organized table
ノート:
LONG
データ型(LONG
、LONG RAW
、LONG VARCHAR
、LONG VARRAW
)のすべての形式は、Oracle8iリリース8.1.6で非推奨になりました。以降のリリースでは、LONG
データ型は既存のアプリケーションとの下位互換性のために提供されていました。以降のリリースで開発された新しいアプリケーションでは、大量の文字データにCLOB
およびNCLOB
データ型を使用することをお薦めします。
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.5 サポートされないデータ型
ORACLE_DATAPUMP
アクセス・ドライバを使用すると、サポートされていないデータ型のデータをアンロードおよび再ロードできます。
外部表は、列に対して有効なすべてのデータ型のサブセットをサポートしています。特に、文字データ型(LONG
を除く)、RAW
データ型、すべての数値データ型、およびすべての日付、タイムスタンプ、期間データ型をサポートしています。
ORACLE_DATAPUMP
アクセス・ドライバを使用してデータをアンロードおよび再ロードできる、サポートされていないデータ型には、次のものが含まれます。
BFILE
LONG
およびLONG RAW
- FINALオブジェクト型
- FINALオブジェクト型の表
ノート:
LONG
データ型(LONG
、LONG RAW
、LONG VARCHAR
、LONG VARRAW
)のすべての形式は、Oracle8iリリース8.1.6で非推奨になりました。以降のリリースでは、LONG
データ型は既存のアプリケーションとの下位互換性のために提供されていました。以降のリリースで開発された新しいアプリケーションでは、大量の文字データにCLOB
およびNCLOB
データ型を使用することをお薦めします。
- BFILEデータ型のアンロードおよびロード
BFILE
データ型には、ファイルのディレクトリ・オブジェクトとディレクトリ・オブジェクト内のファイル名という2つの情報が格納されます。 - LONGおよびLONG RAWデータ型のアンロード
ORACLE_DATAPUMP
アクセス・ドライバを使用して、LONG
列およびLONG RAW
列をアンロードできますが、このデータはLOB
フィールドにのみ再ロードできます。 - FINALオブジェクト型を含む列のアンロードおよびロード
FINAL型の列のオブジェクトは、オブジェクト型の各属性を外部表の列に移動することで移入されます。 - FINALオブジェクト型の表
オブジェクト表には、表のすべての行を一意に識別するオブジェクト識別子があります。
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.5.1 BFILEデータ型のアンロードおよびロード
BFILE
データ型には、ファイルのディレクトリ・オブジェクトとディレクトリ・オブジェクト内のファイル名という2つの情報が格納されます。
ORACLE_DATAPUMP
アクセス・ドライバを使用して、ディレクトリ・オブジェクト名およびファイル名を外部表の2つの列に格納することにより、BFILE
列をアンロードできます。DBMS_LOB
.FILEGETNAME
プロシージャは両方の名前を返します。ただし、これはプロシージャであるため、SELECT
文では使用できません。かわりに、2つのファンクションを使用します。最初のファンクションは、ディレクトリ・オブジェクト名を返し、2つ目のファンクションはファイル名を返します。
次のステップでは、BFILE
データ型のアンロードおよびロードの例を示します。
親トピック: サポートされていないデータ型
16.5.2 LONGおよびLONG RAWデータ型のアンロード
ORACLE_DATAPUMP
アクセス・ドライバを使用して、LONG
列およびLONG RAW
列をアンロードできますが、このデータはLOB
フィールドにのみ再ロードできます。
LONG
データ型(LONG
、LONG RAW
、LONG VARCHAR
、LONG VARRAW
)のすべての形式は、Oracle8iリリース8.1.6で非推奨になりました。以降のリリースでは、LONG
データ型は既存のアプリケーションとの下位互換性のために提供されていました。以降のリリースで開発された新しいアプリケーションでは、大量の文字データにCLOB
およびNCLOB
データ型を使用することをお薦めします。
次のステップは、LONG
およびLONG RAW
データ型のアンロードの例を示します。
親トピック: サポートされていないデータ型
16.5.3 FINALオブジェクト型を含む列のアンロードおよびロード
FINAL型の列のオブジェクトは、オブジェクト型の各属性を外部表の列に移動することで移入されます。
また、外部表には、列オブジェクトがアトミックNULL
であるかどうかを追跡するための、新規の列が必要です。次のステップでは、FINALオブジェクト型を含む列のアンロードおよびロードの方法を示します。
親トピック: サポートされていないデータ型
16.5.4 FINALオブジェクト型の表
オブジェクト表には、表のすべての行を一意に識別するオブジェクト識別子があります。
そのため次のような問題があります。
-
オブジェクト識別子をアンロードおよび再ロードする必要がない場合、外部表にはオブジェクト表に対する型の属性のフィールドのみを含める必要があります。
-
オブジェクト識別子(OID)をアンロードおよび再ロードする必要があり、表のOIDが表の1つ以上のフィールドである場合(主キー・ベースOIDとも呼ばれる)、外部表には表の型のすべての属性に対して1つの列が存在します。
-
OIDをアンロードする必要があり、表のOIDがシステム生成である場合、手順はより複雑になります。システム生成OIDを保持するには、型の属性の他に別の列を作成する必要があります。
次のステップは、前述の最後の状況の例を示します。
-
システム生成OIDを持つ型の表を作成します。
SQL> CREATE TYPE person AS OBJECT (name varchar2(20)) NOT FINAL 2 / Type created. SQL> CREATE TABLE people OF person; Table created. SQL> INSERT INTO people VALUES ('Euclid'); 1 row created.
-
システム生成OIDを含む列を保持するために、
OID
列を使用する外部表を作成します。SQL> CREATE TABLE people_xt 2 ORGANIZATION EXTERNAL 3 ( 4 TYPE ORACLE_DATAPUMP 5 DEFAULT DIRECTORY def_dir1 6 LOCATION ('people.dmp') 7 ) 8 AS SELECT SYS_NC_OID$ oid, name FROM people; Table created.
-
システム生成OIDを持つ同じ型の別の表を作成します。次に
INSERT
文を実行して、新しい表に古い表からアンロードされたデータをロードします。SQL> CREATE TABLE people2 OF person; Table created. SQL> SQL> INSERT INTO people2 (SYS_NC_OID$, SYS_NC_ROWINFO$) 2 SELECT oid, person(name) FROM people_xt; 1 row created. SQL> SQL> SELECT SYS_NC_OID$, name FROM people 2 MINUS 3 SELECT SYS_NC_OID$, name FROM people2; no rows selected
親トピック: サポートされていないデータ型
16.6 ORACLE_DATAPUMPアクセス・ドライバを使用する際のパフォーマンスのヒント
ORACLE_DATAPUMP
アクセス・ドライバのパフォーマンスを向上させる方法について説明します。
パフォーマンスを監視する場合、最も重要なことは、ロードの経過時間の測定です。また、CPU使用量、メモリー使用量およびI/O率の測定も重要です。
並列度を増減することによって、パフォーマンスを変更できます。並列度は、データ・ファイルの処理に起動できるアクセス・ドライバの数を示します。並列度によって、リソース使用率を低くした遅いロードと、すべてのリソースを使用した速いロードを選択できます。アクセス・ドライバは、アクセス・ドライバ専用に使用するリソース量を判断できないため、自動的にはチューニングされません。
アクセス・ドライバは、パフォーマンスを向上させるために大きなI/Oバッファを使用します。共有サーバーを使用するデータベースでは、アクセス・ドライバが使用するすべてのメモリーはSystem Global Area(SGA)から割り当てられます。そのため、共有サーバー上の外部表を使用する際には注意が必要です。
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.7 ORACLE_DATAPUMPアクセス・ドライバ使用時の制限事項
ORACLE_DATAPUMP
アクセス・ドライバを使用した外部表へのアクセスに適用される制限事項に注意してください。
外部表でのORACLE_DATAPUMP
アクセス・ドライバの使用に適用される制限事項は、次のとおりです。
- 暗号化された列: 暗号化された列がある外部表のエクスポートとインポートは、サポートされていません。
- 列処理: デフォルトでは、外部表の機能は、外部表に定義されたすべての列をフェッチします。これによって、すべての問合せに対し、一貫した結果が保証されます。ただし、パフォーマンスを考慮して、外部表内で参照される列だけを処理することができます。これによって、データ変換の量および問合せの実行で必要なデータ処理の量を最小限にします。この場合、データ型変換エラーが発生した列を含んでいたために拒否された行も、その列が参照されないかぎり、別の問合せでは拒否されません。
ALTER TABLE
コマンドを使用すると、この列処理動作を変更できます。 LONG
列: 外部表は、LONG
列にデータをロードできません。- ロード時におけるバイト順序マークの処理。データ・ファイル文字セットがUTF8またはUTF16の外部表ロードでは、バイト順序マークの確認は抑止できません。バイト順序マークの確認は、データ・ファイルの先頭にバイト順序マークのエンコーディングと一致するバイナリ・データが含まれている場合にのみ抑止する必要があります。(SQL*Loaderを使用したロードでは、バイト順序マークの確認を抑止できます。)バイト順序マークを確認するということは、バイト順序マークがデータ・ファイル内に存在する必要があるという意味ではないことに注意してください。バイト順序マークがない場合は、サーバー・プラットフォームのバイト順序が使用されます。
- バックスラッシュ・エスケープ文字: 外部表機能では、文字列内のバックスラッシュ(
\
)エスケープ文字の使用をサポートしません。 - 予約語: 外部表アクセス・パラメータにおいて列名や表名などの識別子が指定される場合、特定の値はアクセス・パラメータ・パーサーによって予約語とみなされます。予約語を識別子として使用するには、二重引用符で囲む必要があります。
ノート:
LONG
データ型(LONG
、LONG RAW
、LONG VARCHAR
、LONG VARRAW
)のすべての形式は、Oracle8iリリース8.1.6で非推奨になりました。以降のリリースでは、LONG
データ型は既存のアプリケーションとの下位互換性のために提供されていました。以降のリリースで開発された新しいアプリケーションでは、大量の文字データにCLOB
およびNCLOB
データ型を使用することをお薦めします。
関連トピック
親トピック: ORACLE_DATAPUMPアクセス・ドライバ
16.8 ORACLE_DATAPUMPアクセス・ドライバの予約語
ORACLE_DATAPUMP
アクセス・ドライバによって予約されている識別子で語を使用する場合は、二重引用符で囲む必要があります。
外部表アクセス・パラメータにおいて列名や表名などの識別子が指定される場合、特定の値はアクセス・パラメータ・パーサーによって予約語とみなされます。予約語を識別子として使用するには、二重引用符で囲む必要があります。ORACLE_DATAPUMP
アクセス・ドライバの予約語は、次のとおりです。
BADFILE
COMPATIBLE
COMPRESSION
DATAPUMP
DEBUG
ENCRYPTION
INTERNAL
JOB
LATEST
LOGFILE
NOBADFILE
NOLOGFILE
PARALLEL
TABLE
VERSION
WORKERID
親トピック: ORACLE_DATAPUMPアクセス・ドライバ