web-dev-qa-db-ja.com

EXPDPを使用したOracleエクスポートで、Windows 7でORA-06512 SYS.UTL_FILEエラーが発生する

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」が表示されます

では、なぜこのエラーが発生するのですか?

5
osman

ええ、私は解決策を見つけました。これは、Oracleデータベースがネットワーク上の別のコンピューターにあるためです。したがって、「c:\」などのディレクトリにエクスポートしようとすると、Oracleは自分ではなく独自のC:\ディレクトリにエクスポートしようとしています。

フォルダのネットワークアドレスをエクスポートディレクトリとして使用し、問題は解決しました。使用例

\\OSMAN\dump_directory
1
osman

私はただ、このエラーを乗り越えて何が起こったのかを共有したかっただけです。私の場合(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\'
5
Ken

まず、Oracleのドキュメントでは、データポンプをSYSとして使用しないでください。

http://docs.Oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL824

Oracleテクニカルサポートの要求がある場合を除き、SYSDBAとしてエクスポートを呼び出さないでください。

問題はほぼ確実にアクセス許可に関連しています。 Oracleデータベースを実行しているユーザーは、ファイルに書き込もうとするユーザーです。そのユーザーが問題のフォルダーに書き込める(そしてすべての親フォルダーを通じてアクセスできる)ことを確認してください。

おそらく、ドライブのルートにフォルダ(たとえば、「E:\ TestExport」など)を作成して、心配する親フォルダが少なくなるようにしてから、Oracle内でこれを使用してそうであるかどうかを判断します。

4
Phil Sumner

ディレクトリーはosmanユーザーに属しているのに、エクスポートはOracleユーザーによって行われるため、ファイル許可を確認してください。

2
Cyryl1972

上記に加えて、次の問題が発生する場合もあります(Windowsの場合):

  • サービスに移動します。
  • 「OracleService」を検索
  • 右クリック->プロパティ->ログオン(タブ)
  • このアカウント(現在のユーザー名)->をより特権のあるアカウントに変更します(もちろん、現在のユーザー特権も変更できます)
  • サービスを再起動すると動作するはずです。

Oracle SQLステートメント "CREATE DIRECTORY Mydir AS 'C:\ Users\osman\Desktop\Export';" WindowsまたはLinuxではディレクトリを作成できません。変数Mydirとディレクトリ 'C:\ Users\osamn\Desktop\Export'の間のマッピングにすぎません

したがって、ウィンドウに「C:\ Users\osman\Desktop\Export」があることを確認する必要があります

これがあなたに役立つことを願っています!

0
LawrenceLi