5 SQLclでのデータ・ポンプ・サポート

SQLclリリース21.4以降では、データ・ポンプを使用してデータとメタデータをインポートおよびエクスポートできます。データ・ポンプは、PL/SQLパッケージDBMS_DATAPUMPの使用によってSQLclで使用できるようになります。

次の操作を実行できます。

  • 1つ以上のスキーマをエクスポートする。

  • remap schemaオプションを使用して1つ以上のスキーマをインポートする。

  • Oracle Database用およびOracle Autonomous Database Cloud Services用にDATAPUMPエクスポートおよびインポートを使用する。

  • ダンプ・ファイル用にデータベース・ディレクトリまたはOracle Object Storeを使用する。

  • SET DATAPUMPコマンドを使用してデフォルトを設定し、STOREコマンドを使用してそれらを保存する。

  • クラウド・ストレージ機能を使用してデータベース・ディレクトリへの配置やデータベース・ディレクトリからの取得を実行する。

5.1 スタート・ガイド

次の項では、SQLclでDATAPUMPコマンドの使用を開始するために必要な情報を示します。

5.1.1 前提条件

SQLclでDATAPUMPを使用するには、次の知識が必要です。

  • ログイン・ユーザーであり、エクスポートまたはインポートしている場合:

    • その表領域での適切なシステム権限または十分なユーザー領域リソースが必要です。

    • DBAまたはPDB_DBAロールを付与されていない場合、独自のスキーマをインポートまたはエクスポートするにはOracleディレクトリへのアクセス権が必要です。

      次に例を示します。
      grant read, write on directory DATA_PUMP_DIR to dpumpnotdba;
  • 他のスキーマを使用する場合:

    • データ・ポンプのインポート操作とエクスポート操作に必要なロールの詳細は、「必要なロール」を参照してください。

    • インポートする表領域に対する権限が必要です。

  • データ・ポンプを使用できない場合は、かわりに、「ファイルのロード」で示す方法を使用してファイルをロードできます。

  • Autonomous Databaseに接続するには:

  • Oracle Databaseからオブジェクト・ストレージを使用するには:

    • Oracle Cloud Infrastructureのドキュメントクラウド・ストレージ・コマンドのオプションおよび設定と前提条件を参照してください。

    • OCIプロファイル構成ファイルをインストールする必要があります。

    • OCIプロファイルは、OCI PROFILE <name>またはCS OCI <profile>を使用して設定する必要があります。

    • データ・ポンプ・エクスポートで-copycloudオプションを使用して、エクスポートの最後の手順として、オブジェクト・ストレージにダンプ・ファイルをコピーできます。

    • データ・ポンプ・インポートで-copycloudオプションを使用して、インポートの最初の手順として、オブジェクト・ストレージからダンプ・ファイルをコピーできます。

    • クラウド・ストレージ・コマンド(putおよびget)を使用して、クラウド・ストレージとOracleディレクトリの間でダンプ・ファイルをコピーできます。

  • Autonomous Databaseからオブジェクト・ストレージを使用するには:

    • 認証でのDBMS_CLOUDの使用を参照してください。

    • クラウド・ストレージ、SET DATAPUMPまたはDATAPUMPコマンドを使用して、オブジェクト・ストレージ用の資格証明を設定する必要があります。

    • ディレクトリを使用せずに、オブジェクト・ストレージにダンプ・ファイルを直接エクスポートできます。

    • ディレクトリを使用せずに、オブジェクト・ストレージからダンプ・ファイルを直接インポートできます。

    • ログ・ファイルをオブジェクト・ストレージに直接書き込むことはできませんが、クラウド・ストレージ・コマンドを使用してそれらをクラウド・ストレージにコピーできます。

  • エクスポート中にタイムゾーン・ファイルのバージョンが表示されます。ダンプ・ファイルは、タイム・ゾーン・ファイルのバージョンが同一(またはそれ以降)であるデータベースにのみインポートできます。

5.1.2 使用方法

DATAPUMPコマンドは、DBMS_DATAPUMPパッケージを使用してデータ・ポンプ・ジョブを作成および送信します。

  • Autonomousへのインポートについては、クラウド移行アドバイザ・ツール(CPAT)を参照してください。

  • ソース・データベースとターゲット・データベースで、ハードウェア、オペレーティング・システム、文字セット、タイムゾーンおよびバージョンが異なっていてもかまいません。

  • Oracle Databaseリリース11g以降のバージョンに存在するすべてのオブジェクト・タイプとデータ・タイプがサポートされています。

  • データおよびメタデータを転送できます。

  • インポート時に、スキーマ名、表領域名およびメタデータを変換できます。

  • データをOracle独自の形式でアンロードおよびロードできます。

エクスポート

データ・ポンプ・エクスポートは、メタデータおよびデータをダンプ・ファイルにアンロードするために使用します。ダンプ・ファイルは、Oracleディレクトリまたはオブジェクト・ストレージに格納できます。

  • スキーマ、またはスキーマのリストが指定されていない場合は、現在のスキーマがエクスポートされます。

  • ディレクトリまたはオブジェクト・ストレージ、および資格証明が指定されていない場合、ダンプ・ファイルはDATA_PUMP_DIRに格納されます。

  • ジョブ名は、指定されていない場合は、esql_<n>として作成されます。

  • ダンプ・ファイル名が指定されていない場合、ダンプ・ファイルは<jobname>.DMPとして格納されます。

  • ログ・ファイル名が指定されていない場合、ログ・ファイルは<jobname>.LOGとして格納されます。

インポート

データ・ポンプ・インポートは、Oracleディレクトリまたはオブジェクト・ストレージに格納されている、以前にエクスポートされたダンプ・ファイルからメタデータおよびデータをロードするために使用します。

  • スキーマ、またはスキーマのリストが指定されていない場合は、ダンプ・ファイル内のすべてのオブジェクトがインポートされます(デフォルトではFULLインポート)。

  • ディレクトリまたはオブジェクト・ストレージ、および資格証明が指定されていない場合、ダンプ・ファイルはDATA_PUMP_DIRに格納されます。

  • ジョブ名は、指定されていない場合は、isql_<n>として作成されます。

  • ダンプ・ファイル名が指定されていない場合、ダンプ・ファイルは<jobname>.DMPとして格納されます。

  • ログ・ファイル名が指定されていない場合、ログ・ファイルは<jobname>.LOGとして格納されます。

5.2 データ・ポンプ・コマンドの構文と引数

データ・ポンプ・コマンドは、dpまたはdatapumpを使用して呼び出すことができます。

構文

dp help [examples|syntax] | export [<optional-argument>,...] | import [<optional-argument>,...] |

SQLclでのデータ・ポンプについてヘルプ情報を表示するには、次のいずれかを入力します。

datapump help
dp help

構文をすばやく表示し、その他の詳細を除外するには、次のように入力します。

dp help syntax

ヘルプ内の例のみを表示するには、次のように入力します。

dp help examples

<optional argument>: 次の表に、使用可能なオプションの引数とそれぞれのデフォルト値を示します。

表5-1オプションの引数

ファイル引数 説明 デフォルト
-credential、-c クラウド・ストレージでのダンプ・ファイル・アクセスのための資格証明。 クラウド・ストレージ・コマンドで使用されたとおり
-directory、-d ダンプ・ファイルとログ・ファイルの読取りと書込みのための、デフォルトのデータベース・ディレクトリ。 DATA_PUMP_DIR
-dumpdirectory、-dd ダンプ・ファイル用のデータベース・ディレクトリ。 -directory (指定されている場合)またはDATA_PUMP_DIR
-dumpfile、-f データベース・ディレクトリを使用する場合のダンプ・ファイル名。 <jobname><n>.DMP
-dumpuri、-u

[TRUE | FALSE | <uri> | <qualified-name>]

  • TRUE: URIをクラウド・ストレージ・コマンドで指定する必要があります。
  • FALSE: ダンプ・ファイルは、指定したディレクトリまたはデフォルトのディレクトリに保存されます。
  • <uri>: クラウド・ストレージ・コマンドでデフォルトが設定されていない場合は、クラウド・ストレージ・ファイルの完全なURI。
  • <qualifier>: オブジェクトの名前。オプションで、ネームスペースおよびバケットで修飾します。

クラウド・ストレージ・コマンドで指定されたURIにこの修飾名を追加することで、オブジェクトのURIが完全に特定される必要があります。

Autonomous Databaseからクラウド・ストレージへの直接の読取り/書込みアクセス用の資格証明を設定します。

Oracle Databaseからの-copycloud用のOCIプロファイルを設定します。

デフォルトのオブジェクト名は<jobname>.DMPです
-logdirectory、-ld ログ・ファイル用のデータベース・ディレクトリ。 -directory (指定されている場合)またはDATA_PUMP_DIR
-logfile、-lf データベース・ディレクトリ内のログ・ファイル名。 <jobname><n>.LOG

表5-2 コマンド引数

コマンド引数 説明 デフォルト
-noexec、-ne

[TRUE | FALSE]

TRUE: PL/SQLを検証し生成しますが、実行はしません。

FALSE
-verbose、-ve

[TRUE | FALSE]

TRUE: 追加の診断出力を表示します。

FALSE

表5-3 共通引数

共通引数 説明 デフォルト
-copycloud、-cc

[TRUE | FALSE]

TRUE: ディレクトリとクラウド・ストレージの間でダンプ・ファイルをコピーします。

エクスポートの場合は、データ・ポンプ・ジョブの完了後に、ダンプ・ファイルをディレクトリからクラウド・ストレージにコピーします。

インポートの場合は、データ・ポンプ・ジョブを開始する前に、ダンプ・ファイルをクラウド・ストレージからディレクトリにコピーします。

CLOUDSTORAGEコマンド、SET DATAPUMPコマンドまたはDATAPUMPコマンドの場合は、資格証明およびクラウド・ストレージURIを設定する必要があります。

FALSE
-includemetadata、-im

[TRUE | FALSE]

TRUE: ジョブにメタデータを含めます。

TRUE
-includerows、-ir

[TRUE | FALSE]

TRUE: ジョブにデータを含めます。

TRUE
-jobname、-j

データ・ポンプ・ジョブの名前。

ジョブ名には、データ・ポンプで生成された番号が付加されます(ジョブ名の末尾が数字である場合を除く)。jobname<n>は、データ・ポンプ・ジョブの発行時に使用され、ダンプ・ファイル名およびログ・ファイル名、またはオブジェクト名のデフォルトとして使用されます。

ESQL_<n> | ISQL_<n> ここでのnはデータ・ポンプで生成された番号です。
-schemas、-s <schema>、

<schema>,...] - 処理するスキーマまたはスキーマ・リスト。

次に例を示します。
-schemas schema1,schema2
エクスポートの場合は、現在の接続のスキーマ。インポートの場合、デフォルトはFULLであり、ダンプ・ファイル内のすべてのオブジェクトがインポートされます。

-version、-v

{<nn.n> | COMPATIBLE | LATEST}

<nn.n>: 特定のデータベース・バージョン。たとえば、11.0.0。

Oracle Database 11gリリース2 (11.2.0.3)以降からOracle Database 12 cリリース1 (12.1)にエクスポートする場合は、値12を指定して、既存のすべてのデータベース機能、コンポーネントおよびオプションをエクスポートできるようにします。これは、マルチテナント・コンテナ・データベース(CDB)または非CDBに適用されます。

COMPATIBLE: データベース互換性レベルおよび機能の互換性リリース・レベルからのメタデータ・バージョンを使用します。

LATEST: メタデータのバージョンはデータベースのバージョンに対応します。

DBMS_METADATA OPENを参照してください

COMPATIBLE

-wait、-w

[TRUE | FALSE]

TRUE: データ・ポンプ・ジョブが終了するまで待機し、サマリー結果を表示します。

FALSE: 待機も結果表示もなしでデータ・ポンプ・ジョブを発行します。

TRUE

表5-4 エクスポート専用の引数

エクスポート専用の引数 説明 デフォルト
-compression、-cm

{ALL | DATA_ONLY | METADATA_ONLY | NONE}

ユーザー・データおよびメタデータに圧縮が必要かどうかを示します。

ALL: ユーザー・データとメタデータを圧縮します。

DATA_ONLY: ユーザー・データのみを圧縮します。

METADATA_ONLY: メタデータのみを圧縮します。

NONE: ユーザー・データもメタデータも圧縮しません。

DBMS_METADATA SET_PARAMETER COMPRESSIONを参照してください

METADATA_ONLY

-estimate、-e

{BLOCKS | STATISTICS}

表のサイズの見積り方法を指定します。これは、ジョブを開始する前に実行する必要があります。

BLOCKS: 見積りは、ユーザー表に割り当てられたブロックの数を使用して計算されます。

STATISTICS: 見積りは、各表の統計を使用して計算されます。表に使用可能な統計がない場合は、BLOCKSが使用されます。

DBMS_METADATA SET_PARAMETER ESTIMATEを参照してください

 

-filesize、-fs

{<n>{B | KB | MB | GB | TB}}

ファイルのサイズを制限します。

DBMS_DATAPUMP ADD_FILEを参照してください。

500 MB

-flashbackscn、-fb

[TRUE | FALSE]

TRUE: 実行の開始時のシステム変更番号(SCN)に基づいて一貫性のあるデータベース・コンテンツを使用します。

DBMS_METADATA SET_PARAMETER FLASHBACK_SCNを参照してください

FALSE

-reusefile、-r

[TRUE | FALSE]

TRUE: 既存のダンプ・ファイルを新しいファイルで置き換えます。

DBMS_DATAPUMP ADD_FILEを参照してください

TRUE

表5-5 インポート専用の引数

インポート専用の引数 説明 デフォルト

-columnencryption、-ce

[TRUE | FALSE]

TRUE: 表メタデータに列暗号化句を含めます。

FALSE 列暗号化句を省略します。

DBMS_METADATA SET_TRANSFORM_PARAM OMIT_ENCRYPTION_CLAUSEを参照してください

データベースでサポートされている場合はTRUE

-objectid、-oid

[TRUE | FALSE]

TRUE: エクスポートされたOIDを割り当てます。

FALSE: 新しいOIDを割り当てます

DBMS_DATAPUMP METADATA_TRANSFORM OIDを参照してください

TRUE

-remapschemas、-rs

{<oldSchema>=<newSchema>,...}

ジョブ内のオブジェクトは<newSchema>に移動されます。(例: oldschema1=newschema1、oldschema2=newschema2)。

該当なし

-remaptablespaces、-rt

{<oldTablespace>=<newTablespace>,...}

ジョブ内の<oldTablespace>記憶域セグメントは<newTablespace>に再配置されます。(例: oldtablespace1=newtablespace1、oldtablespace2=newtablespace2)

該当なし

-segmentattributes、-sa

[TRUE | FALSE]

TRUE: セグメント属性句(物理属性、記憶域属性、表領域、ロギング)を含めます。

DBMS_DATAPUMP METADATA_TRANSFORM SEGMENT_ATTRIBUTESを参照してください

TRUE

-skipunusableindexes、-sui

[TRUE | FALSE]

TRUE: 行は、使用できない索引を持つ表に挿入されます。

DBMS_METADATA SET_PARAMETER SKIP_UNUSABLE_INDEXESを参照してください

TRUE

-storage、-st

[TRUE | FALSE]

TRUE: 記憶域句を含めます。

DBMS_DATAPUMP METADATA_TRANSFORM STORAGEを参照してください

TRUE

-tableexists、-te

{APPEND | REPLACE | SKIP | TRUNCATE}

インポート中に表が存在する場合に実行する処理です。

APPEND: 新しい行は、表内の既存の行に追加されます。

REPLACE: 新しい表が作成される前に、古い表が削除されます。

SKIP: 既存の表が変更されることはありません。

TRUNCATE: 行が既存の表から削除された後に、インポートによる行が挿入されます。

DBMS_METADATA SET_PARAMETER TABLE_EXISTS_ACTIONを参照してください

-includemetadata trueの場合はSKIP。それ以外の場合は、インポート中に表が存在すればAPPENDアクションが実行されます。

-tablecompression、-tc

[TRUE | FALSE]

TRUE: 表圧縮句がサポートされている場合はそれが含まれます。

FALSE: 表には、表領域のデフォルトの圧縮が適用されます。

DBMS_DATAPUMP METADATA_TRANSFORM TABLE_COMPRESSION_CLAUSEを参照してください

TRUE

5.3 ユースケース

次のユースケースでは、DATAPUMPコマンドを使用してデータをインポートおよびエクスポートする方法を示します。

ユースケース1

自動コピーを使用してデータベース・スキーマをOracle Object Storeにエクスポートしてから、Autonomousにインポートします。

-- OCI setup for database access to Oracle Object Store
SQL> oci profile my-profile
SQL> cs https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/abc123/testing-bucket/

-- Export the current schema into the DATA_PUMP_DIR with automatic copy using OCI setup
SQL> connect <db-connect-string>
SQL> dp export -copycloud -dumpfile my_dump.dmp

-- Import from Oracle Object Store using credential
SQL> set cloudconfig <wallet>
SQL> connect <cloud-connect-string>
SQL> dp import -dumpuri /o/my_dump.dmp -c SWIFTCRED

ユースケース2

手動コピーを使用してデータベース・スキーマをOracle Object Storeにエクスポートしてから、Autonomousにインポートします。

-- Export the current schema into the DATA_PUMP_DIR
SQL> connect <db-connect-string>
SQL> dp export -dumpfile my_dump.dmp

-- OCI setup to manual copy from database directory to Oracle Object Store
SQL> oci profile my-profile
SQL> cs https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/abc123/testing-bucket/
SQL> cs put dbdir DATA_PUMP_DIR/my_dump.dmp /o/my_dump.dmp

-- Import from Oracle Object Store using credential
SQL> set cloudconfig <wallet>
SQL> connect <cloud-connect-string>
SQL> dp import -dumpuri /o/my_dump.dmp -c SWIFTCRED

ユースケース3

自動コピーを使用して複数のスキーマをOracle Object Storeにエクスポートしてから、スキーマの再マップを使用してインポートします。

-- OCI setup for Database access to Oracle Object Store
SQL> oci profile my-profile
SQL> cs https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/abc123/testing-bucket/

-- Export schemas into Database Directory with automatic copy to Oracle Object Store
SQL> connect <db-connect-string>
SQL> dp export -schemas dpumptest1,dpumptest11 -dumpfile DPUMPTEST1_11.DMP -cc

-- Import from Oracle Object Store using credential. Remap the schemas
SQL> set cloudconfig <wallet>
SQL> connect <cloud-connect-string>
SQL> dp import -dumpuri /o/DPUMPTEST1_11.DMP -c SWIFTCRED -rs dpumptest1=dpumptest2,dpumptest11=dpumptest21

ユースケース4

Autonomousからエクスポートした後、Autonomousにインポートします。

-- DBMS_CLOUD setup for access to Oracle Object Store
SQL> oci cs dbc swiftcred
SQL> cs https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/abc123/testing-bucket/

-- Export the current schema into Oracle Object Store
SQL> set cloudconfig <wallet>
SQL> connect <cloud-connect-string1>
SQL> datapump export -dumpuri /o/DPUMPTEST1z.DMP

-- Import from Oracle Object Store
SQL> connect <cloud-connect-string2>
SQL> dp import -copycloud -dumpuri /o/DPUMPTEST1z.DMP

ユースケース5

クラウド・ストレージを使用してデータベース間で転送します。

-- OCI setup to manual copy between directories and Oracle Object Store.
SQL> oci profile my-profile
SQL> cs https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/abc123/testing-bucket/

-- Export the current schema into the DATA_PUMP_DIR
SQL> connect <db-connect-string1>
SQL> dp export -dumpfile DPUMPTEST1.DMP -cc

-- Copy to database directory from Oracle Object Storage
SQL> connect <db-connect-string2>
SQL> datapump import -dumpfile DPUMPTEST1.DMP -schemas dpumptest1 -cc

ユースケース6

SET DATAPUMPを使用して、エクスポートとインポートの両方のデフォルト引数を設定します。

-- Set default arguments for credential, segment attributes and remap schemas
SQL> set datapump -c SWIFTCRED -sa false -rs dpumptest1=dpumptest2,dpumptest11=dpumptest21

-- Show default arguments
SQL> show datapump

-- Restore original default settings
SQL> set datapump default

5.4 ヒントとトラブルシューティング

DATAPUMPコマンドは、DBMS_DATAPUMPパッケージを使用してエクスポートおよびインポートを実行する、PL/SQLを作成します。

  • PL/SQLとパラメータのプレビュー

    • -noexecオプションを使用してエクスポートまたはインポートを検証します。このオプションでは、生成されたPL/SQLとパラメータが表示されますが、実行のためにジョブが発行されることはありません。

  • コマンド処理に関する追加情報の取得

    • 追加の診断情報を表示するには、-verboseオプションを使用します。

    • また、このオプションでは、ログの最終行および完了した割合を表示するための、コピーできる問合せが提供されます。

  • ジョブ・ログの表示

    • -waitオプションを使用すると、ログがコンソールに書き込まれます。

    • -wait falseを使用すると、ディレクトリ内のファイルを表示できない場合に、ログをオブジェクト・ストレージにコピーできます。

  • ログイン・ユーザーとしてインポートまたはエクスポートする場合は、SYSロールを使用しないことをお薦めします。