以下のように表示されます。
(日本語)
ORA-39002: 操作が無効です。
(英語)
ORA-39002: invalid operation
発生パターン
このエラーは、expdp(エクスポート)やimpdp(インポート)を実行した時に、以下のような場合に発生します。
- DIRECTORY句に指定したディレクトリオブジェクトが存在しない
- ディレクトリオブジェクトに対する読み書き権限(READ、WRITE)が付与されていない
- ディレクトリオブジェクトが指しているOS側の実フォルダが存在しない、またはアクセスできない
- 複数のインスタンスが存在する環境で、意図しないインスタンスに接続してexpdp/impdpを実行している
- エラー例
- C:¥>expdp system/xxxxxx directory=dump_dir dumpfile=exp01.dmp logfile=exp01.log Export: Release 19.0.0.0.0 - Production on 木 8月 20 10:00:00 2026 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ORA-39002: 操作が無効です。 ORA-39070: ログ・ファイルをオープンできません。 ORA-29283: 無効なファイル操作です。 ORA-06512: "SYS.UTL_FILE" ORA-29283: 無効なファイル操作です。
DIRECTORY句に指定した「dump_dir」に問題があり、ログ・ファイルを作成できずにエラーとなっている例です。
このように、ORA-39002はORA-39070やORA-29283など、他のエラーと一緒に表示されることが多いエラーです。
対処法
- ディレクトリオブジェクトが無い場合は、作成する
- 実行例
- SQL> create or replace directory dump_dir as 'D:¥dump'; ディレクトリが作成されました。
「D:¥dump」の部分は、実際にダンプファイルを出力したいOS上のフォルダに読み替えてください。
- ディレクトリオブジェクトに、読み書き権限が付与されているか確認し、無ければ付与する
- 実行例
- SQL> grant read on directory dump_dir to system; SQL> grant write on directory dump_dir to system;
- OS側に、ディレクトリオブジェクトが指しているフォルダが実際に存在するか確認する。無ければ、あらかじめフォルダを作成しておく
- 複数のインスタンスを起動している環境では、接続先のインスタンスを明示して実行する
- 接続先インスタンスを指定する例
- C:¥>expdp system/xxxxxx@orcl directory=dump_dir dumpfile=exp01.dmp logfile=exp01.log
「orcl」の部分は、接続したいインスタンスのサービス名(またはSID)に読み替えてください。
備考
- 作成済みのディレクトリオブジェクトの一覧やパスは、以下のデータディクショナリビューで確認できます。
SELECT * FROM dba_directories;
関連記事
- [ORACLE] ディレクトリを作成する
- [ORACLE] ディレクトリに権限を付与する
- [データディクショナリ] DIRECTORYの情報を取得する
- [ORAエラー] ORA-39034: 表TABLE_DATA:"XXX"."XXX"は存在しません。