Oracle 11gを使用していて、以下のステートメントを使用してテーブルをエクスポートしたい
C:\>expdp SYS/sys@MYDATABASE DIRECTORY = Mydir DUMPFILE = Customer.dmp LOGFILE = Customer.log TABLES = PERSON.CUSTOMER
このステートメントの後、cmdはこれを与えています
UDE-28009: operation generated Oracle error 28009
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
続行しました
Username: SYS@SMSPSETUP AS SYSDBA
Password:
そして最後に私は得ました
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
以下のように「Mydir」ディレクトリを作成しました
SQL>CREATE DIRECTORY Mydir AS 'C:\Users\osman\Desktop\Export';
そして、Windowsフォルダシステムからこのフォルダへの完全な権限をすべての人に与えました。
以下のステートメントを実行すると:
select directory_name, directory_path from dba_directories; where directory_name='Mydir';
パス「C:\ Users\osman\Desktop\Export」が表示されます
では、なぜこのエラーが発生するのですか?
ええ、私は解決策を見つけました。これは、Oracleデータベースがネットワーク上の別のコンピューターにあるためです。したがって、「c:\」などのディレクトリにエクスポートしようとすると、Oracleは自分ではなく独自のC:\ディレクトリにエクスポートしようとしています。
フォルダのネットワークアドレスをエクスポートディレクトリとして使用し、問題は解決しました。使用例
\\OSMAN\dump_directory
私はただ、このエラーを乗り越えて何が起こったのかを共有したかっただけです。私の場合(Win 7のOra 11.2.0.3)、ディレクトリパスの末尾に「\」が必要であることがわかりました。
交換済み:
CREATE OR REPLACE DIRECTORY dpump_dir AS 'C:\Data\SID'
と:
CREATE OR REPLACE DIRECTORY dpump_dir AS 'C:\Data\SID\'
まず、Oracleのドキュメントでは、データポンプをSYSとして使用しないでください。
http://docs.Oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL824 :
Oracleテクニカルサポートの要求がある場合を除き、SYSDBAとしてエクスポートを呼び出さないでください。
問題はほぼ確実にアクセス許可に関連しています。 Oracleデータベースを実行しているユーザーは、ファイルに書き込もうとするユーザーです。そのユーザーが問題のフォルダーに書き込める(そしてすべての親フォルダーを通じてアクセスできる)ことを確認してください。
おそらく、ドライブのルートにフォルダ(たとえば、「E:\ TestExport」など)を作成して、心配する親フォルダが少なくなるようにしてから、Oracle内でこれを使用してそうであるかどうかを判断します。
ディレクトリーはosmanユーザーに属しているのに、エクスポートはOracleユーザーによって行われるため、ファイル許可を確認してください。
上記に加えて、次の問題が発生する場合もあります(Windowsの場合):
Oracle SQLステートメント "CREATE DIRECTORY Mydir AS 'C:\ Users\osman\Desktop\Export';" WindowsまたはLinuxではディレクトリを作成できません。変数Mydirとディレクトリ 'C:\ Users\osamn\Desktop\Export'の間のマッピングにすぎません
したがって、ウィンドウに「C:\ Users\osman\Desktop\Export」があることを確認する必要があります
これがあなたに役立つことを願っています!