2017-04-06 7 views
0
OWNER SYS 
DIRECTORY_NAME ME 
DIRECTORY_PATH \\172.16.20.11\Mad\ 


begin 

vSFile := utl_file.fopen('ME','20170405.csv','R'); 
IF utl_file.is_open(vSFile) THEN 
LOOP 

書く:PLSQL CSVファイルの読み込みと、私はエラーを取得しています

ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at "MADHUR.MSP_UPD_DAILYSALESFRMSAP", line 28 ORA-06512: at line 1 
29283. 00000 - "invalid file operation" 
*Cause: An attempt was made to read from a file or directory that does 
      not exist, or file or directory access was denied by the 
      operating system. 
*Action: Verify file and directory access privileges on the file system, 
      and if reading, verify that the file exists. 
+0

問題点を教えてください。エラーメッセージに記載されていることを実行しましたか? – Aleksej

+0

Oracleは、Windowsのネットワークパスを[サーバーファイルシステムのディレクトリ](http://docs.oracle.com/database/121/CNCPT/glossary.htm#CNCPT44466)として実際に許可(認識)していますか?そのパスをドライブレターにマッピングし、それが機能するかどうか確認できますか? (もちろん、OSの権限やOracleの権限で問題になる可能性もあります...) –

答えて

0

、このような問題を取得するための理由は、あなたがdirectoryからreadまたはwrite権限を持っていけないということです。

ランあなたはreadwrite priviledges持っているかどうかを確認するには、以下のクエリ:あなたは任意のアクセス権を持っていけない、次に読み付与とPRIVSを書く見つけた場合

SELECT * 
     FROM all_tab_privs 
    WHERE table_name = 'your_directory name';  

を。

SQL>CREATE OR REPLACE DIRECTORY dir1 as '/opt/oracle/'; 

SQL>GRANT READ,WRITE on dir1 to <Required user>; (if you want to give access to particular user) 
OR 
SQL>GRANT READ,WRITE on dir1 to PUBLIC; (if you want to give access to all users then give access to public) 
+0

私はパーミッションを読み書きしています – kumarh

+0

@kumarh。許可を得ている場合は、この問題を解決する必要があります。デモで私のポストを参照してください:http://stackoverflow.com/questions/42720366/plsql-open-file-in-write-mode/42720486#42720486 – XING

0

あなたのエラーは問題がある正確に何を説明します:

*Cause: An attempt was made to read from a file or directory that does not exist, or file or directory access was denied by the operating system.

とそれを修正するために行うには:

*Action: Verify file and directory access privileges on the file system, and if reading, verify that the file exists.

だから、あなたは指定:

DIRECTORY_PATH \\172.16.20.11\Mad\

oracleユーザーで実際に\\172.16.20.11\Mad\にアクセスできますか?

もしそうでない場合は、grant read, write on directory to userにアクセスする必要があります。また、そのパスのユーザーのOS権限もチェックしてください。

また、UNCパスの代わりにドライブ文字を使用するネットワーク共有を行うことも検討してください。

+0

私はこのパスにアクセスすることができます。私はアクセス許可を持っています。 – kumarh

+0

どのユーザーがそれにアクセスできますか? –

+0

Oracleがディレクトリとして開くことができるかどうかについての正確なルールは何かについてはわかりませんが、Windowsではエクスプローラで同じ方法を提示することはできますが、Windowsでは名前付きドライブとURLに違いがあります。たとえば、\\ ln-sharepoint.blahblah.net \ Root \ whatever \ docs "にするか、エクスプローラでブラウズすると通常のフォルダとして表示されますが、もし私が' cd 'しようとすると'CMDは現在のディレクトリとしてのUNCパスをサポートしていません。 ' –

関連する問題