1

この質問はUTL_FILE.FOPEN、PL/SQL でコマンドを実行しています。

UTL_FILE.FOPENクライアント側またはサーバー側でファイルを開きますか?

MACHINE A で Oracle クライアント 10 を実行し、MACHINE B (サーバー) に接続しているとします。

Java アプリケーションを介してマシン A で次のストアド プロシージャを実行すると、

DECLARE
  fileHandler UTL_FILE.FILE_TYPE;
BEGIN
  fileHandler := UTL_FILE.FOPEN('/app/dir', 'test.txt', 'W');
  UTL_FILE.PUTF(fileHandler, 'Writing TO a file\n');
  UTL_FILE.FCLOSE(fileHandler);
END;    
/

質問は、ディレクトリ/app/dirがマシン A (クライアント) またはマシン B (サーバー) にある必要があることです。

4

1 に答える 1

3
utl_file.fopen

DBAによって設定されたディレクトリ内のファイルのみを開き、それらのディレクトリはデータベースが存在するのと同じサーバー上にあります。あなたの質問のMachineB。と。必要な古いディレクトリにはアクセスできません。

DBAがこれを制御する方法は2つあります。init.oraパラメータutl_file_dir またはディレクトリオブジェクトの作成です。

utl_file_dir V$PARAMETERSから選択できるかどうかを確認するには

select value 
 from v$parameters
where name='utl_file_dir';

pl / sqlでアクセスできるディレクトリ・オブジェクトを表示するには、次のようにします。

SELECT owner, directory_name, directory_path
  FROM all_directories;

これらは2つの異なるものです。utl_file_dirは古い機能であり、ディレクトリオブジェクトは新しいものです。

于 2012-11-27T11:44:34.240 に答える