4

Oracle 10g データ ポンプ ユーティリティによって作成されたダンプ ファイルからデータをインポートしようとしています。私が発行しているコマンドは

impdp \"username/password@DB as sysdba\" remap_schema=SRC_SCHEMA:TARGET_SCHEMA remap_tablespace=source_tablespace:target_tablespace DUMPFILE=db.dmp

次のエラー メッセージが表示されます。

ORA - 39001: Invalid argument value
ORA - 39000: Bad dump file spcification
ORA - 39088: file name cannot contain a path specification

このエラーの原因は何ですか?

4

1 に答える 1

10

ドキュメントから:

ORA-39088: ファイル名にパス指定を含めることはできません
原因:ダンプ・ファイル、ログ・ファイルまたはSQLファイルの名前にパス指定が含まれています。
処置:ディレクトリ・オブジェクトの名前を使用して、ファイルを格納する場所を示してください。

これは、あなたが示したパラメータDUMPFILE=db.dmpが実際には のようなものであることを示唆していますがDUMPFILE=C:\some\dir\path\db.dmp、これは許可されていません。データベースによって認識されるディレクトリを使用し、それをDIRECTORYパラメータで指定する必要があります。


そのディレクトリパラメーターリンクから@ruffinが指摘しているように、ダンプファイルをデフォルトのDATA_PUMP_DIRディレクトリに配置できます。これは、ビューから見つけることができます。dba_directoriesそのオブジェクトを使用する権限がある場合は、ビューから見つけることができますall_directories。インポートするユーザーには、それを使用できるようにするための読み取りおよび書き込み権限が付与されている必要があります。また、ダンプ ファイルをオペレーティング システム ディレクトリに移動できるようにする必要があるため、そこでもアクセス許可が問題になる可能性があります。

データベース権限とオペレーティング システムへのアクセス権を持つ適切なディレクトリ オブジェクトがない場合は、作成して適切な権限を付与する必要があります。これは、通常は次のように、適切な権限を持つ人が行う必要がありますSYS

create directory my_data_pump_dir as 'C:\some\dir\path';
grant read, write on directory my_data_pump_dir to <username>;

次に、インポートが次のように変更されます。

... DUMPFILE=db.dmp DIRECTORY=my_data_pump_dir

pmonオペレーティング システムのディレクトリは、データベース サーバー上の Oracle ユーザー アカウント (データベース プロセスを実行しているユーザーなど) が利用できる必要があることに注意してください。ローカル ディレクトリが何らかの方法でリモート サーバーにマウントされていない限り、ローカル ファイルを使用してリモート データベースにインポートすることはできません。古いimpコマンドは、サーバー上で頻繁に実行されるクライアント側のアプリケーションでしたが、実行する必要はありませんでした。impdpサーバー側のアプリケーションです。

于 2012-02-13T10:53:19.617 に答える