4.3 Oracle Data Pumpレガシー・モードでのファイルの場所の管理
オリジナルのバージョンはクライアントベース、データ・ポンプはサーバーベースであるため、オリジナルのエクスポートとインポート、およびOracle Data Pumpエクスポートとインポートは、ダンプ・ファイルとログ・ファイルの書込み/読取りを実行できる場所によって異なります。
オリジナルのエクスポートおよびインポートでは、FILE
パラメータとLOG
パラメータを使用して、それぞれダンプ・ファイル名とログ・ファイル名を指定しました。これらのファイル名は常にクライアント・システムに対してローカルなファイルを参照します。パス指定を含めることもできます。
Oracle Data Pumpエクスポートおよびインポートは、DUMPFILE
パラメータとLOGFILE
パラメータを使用して、それぞれダンプ・ファイル名とログ・ファイル名を指定しました。これらのファイル名は常にサーバー・システムに対してローカルなファイルを参照し、パス情報を含めることはできません。かわりに、ディレクトリ・オブジェクトを使用して、パス情報を間接的に指定します。ディレクトリ・オブジェクトによって定義されるパス値は、サーバーからアクセスできる必要があります。ディレクトリ・オブジェクトは、Oracle Data Pumpジョブ用にDIRECTORY
パラメータを使用して指定されます。DUMPFILE
パラメータおよびLOGFILE
パラメータに渡されるファイル名にディレクトリ・オブジェクトを付加することもできます。Oracle Data Pumpを使用する特権ユーザーは、ディレクトリ・オブジェクトがコマンドラインで指定されていない場合に、デフォルト・ディレクトリ・オブジェクトを使用できます。このデフォルトのディレクトリ・オブジェクトDATA_PUMP_DIR
は、インストール時に設定されます。
Oracle Data Pumpのレガシー・モードを有効にし、オリジナルのエクスポートのFILE=filespec
パラメータまたはLOG=filespec
パラメータ(あるいはその両方)をコマンドラインに指定すると、次の優先順位ルールを使用して、ファイルの場所が決まります。
-
コマンドラインに
FILE
パラメータとLOG
パラメータの両方を指定した場合は、優先順位ルールがそれぞれのパラメータに個別に適用されます。 -
オリジナルのエクスポート/インポートとOracle Data Pumpエクスポート/インポートのパラメータが混在する場合は、それぞれに個別のルールが適用されます。
たとえば、次のコマンドを指定したとします。
expdp system FILE=/user/disk/foo.dmp LOGFILE=foo.log DIRECTORY=dpump_dir
この場合、この項で説明したとおり、Oracle Data Pumpのレガシー・モードによるファイル管理ルールが、
FILE
パラメータに適用されます。ダンプ、ログおよびSQLファイルのデフォルトの場所に関する通常の(レガシー・モードではない)Oracle Data Pumpのファイル管理ルールは、LOGFILE
パラメータに適用されます。
例4-1 適用されるOracle Data Pumpのレガシー・モードによるファイル管理ルール
ファイル管理は次の順序で進行します。
-
パスの位置がファイル指定の一部として指定されると、Oracle Data Pumpはエクスポート・ジョブを実行するスキーマからアクセスでき、そのパスの位置がファイル指定でのパスの位置に一致するディレクトリ・オブジェクトの検索を試行します。そのようなディレクトリ・オブジェクトが見つからないと、エラーが返されます。たとえば、
USER_DUMP_FILES
という名前のサーバーベースのディレクトリ・オブジェクトを'/disk1/user1/dumpfiles/'
のパス値とともに定義し、このディレクトリ・オブジェクトへの読取り/書込みアクセス権限をhr
スキーマに付与するとします。次のコマンドを実行すると、Oracle Data Pumpはそのパス値に'/disk1/user1/dumpfiles/'
が含まれ、そのhr
スキーマに読取り/書込みアクセス権限が付与されているサーバーベースのディレクトリ・オブジェクトを検索します。expdp hr FILE=/disk1/user1/dumpfiles/hrdata.dmp
その場合、Oracle Data Pumpはディレクトリ・オブジェクト
USER_DUMP_FILES
を使用します。この例で使用されているパス値'/disk1/user1/dumpfiles/'
は、Oracle Databaseからアクセスできるサーバー・システム上のパスを参照している必要があります。パスの位置がファイル指定の一部として指定されている場合は、
DIRECTORY
パラメータで指定されたディレクトリ・オブジェクトが無視されます。たとえば、次のコマンドを実行すると、Oracle Data Pumpはファイル・パラメータのDPUMP_DIR
ディレクトリ・オブジェクトを使用せず、かわりにそのパス値に'/disk1/user1/dumpfiles/'
が含まれ、そのhr
スキーマに読取り/書込みアクセス権限が付与されているサーバーベースのディレクトリ・オブジェクトを探します。expdp hr FILE=/disk1/user1/dumpfiles/hrdata.dmp DIRECTORY=dpump_dir
-
パスの位置をファイル指定の一部として指定していない場合は、
DIRECTORY
パラメータに指定されたディレクトリ・オブジェクトが使用されます。たとえば、次のコマンドを実行すると、Oracle Data PumpはDPUMP_DIR
ディレクトリ・オブジェクト用に定義されたパスの位置をhrdata.dmp
ファイルに適用します。expdp hr FILE=hrdata.dmp DIRECTORY=dpump_dir
-
ファイル指定の一部としてパスの場所を指定せず、
DIRECTORY
パラメータでディレクトリ・オブジェクトの名前を指定していない場合、Oracle Data Pumpは次の順序で、次の処理を実行します。-
Oracle Data Pumpは
DATA_PUMP_DIR_schema_name
という形式のディレクトリ・オブジェクトを検索します。ここでのschema_name
は、Oracle Data Pumpジョブを実行するスキーマです。たとえば、次のコマンドを実行すると、Oracle Data PumpはDATA_PUMP_DIR_HR
という名前のサーバーベースのディレクトリ・オブジェクトの存在を調べます。expdp hr FILE=hrdata.dmp
また、
hr
スキーマには、このディレクトリ・オブジェクトへの読取り/書込みアクセス権限が付与されている必要があります。そのようなディレクトリ・オブジェクトが存在しないとき、処理はステップbに進みます。 -
Oracle Data Pumpは、クライアントベースの環境変数
DATA_PUMP_DIR
を検索します。たとえば、DUMP_FILES1
という名前のサーバーベースのディレクトリ・オブジェクトが定義されていて、hr
スキーマにそのオブジェクトへの読取り/書込みアクセス権限が付与されているとします。その場合は、クライアント・システムで、次のようにDUMP_FILES1
を指すように環境変数DATA_PUMP_DIR
を設定します。setenv DATA_PUMP_DIR DUMP_FILES1 expdp hr FILE=hrdata.dmp
Oracle Data Pumpは、次にサーバーベースのディレクトリ・オブジェクト
DUMP_FILES1
をhrdata.dmp
ファイルに対して使用します。クライアントベースの環境変数
DATA_PUMP_DIR
が存在しないとき、処理はステップcに進みます。 -
Oracle Data Pumpジョブを実行するスキーマにDBA権限があると、デフォルトのOracle Data Pumpディレクトリ・オブジェクト
DATA_PUMP_DIR
が使用されます。このデフォルトのディレクトリ・オブジェクトは、インストール時に設定されます。たとえば、次のコマンドを実行すると、Oracle Data PumpはシステムにDBA権限があるとみなし、デフォルトのDATA_PUMP_DIR
ディレクトリ・オブジェクトを使用しようとします。expdp system FILE=hrdata.dmp
-