OracleはWindowsServerに入れてあり、UTL_FILEを利用するPL/SQLを実行するのも同じマシンからです。
http://www.shift-the-oracle.com/plsql/utl_file/utl_file_dir.html などを参考に
設定A:
ALTER SYSTEM SET
UTL_FILE_DIR='d:\フォルダ名'
SCOPE = SPFILE ;
して再起動。
あとは
設定B:
CREATE DIRECTORY utl_data AS 'd:\フォルダ名';
GRANT READ,WRITE ON DIRECTORY utl_data TO user_name ;で
という方法も試してみましたがダメでした。(ORA-29280 エラー や ORA-29283エラー)
PL/SQL内は
handle_in utl_file.file_type;
W_DIR = 'd:\フォルダ名';(設定B時はW_DIR='UTL_DATA')
W_FIL = 'ファイル名';
handle_in := utl_file.fopen(W_DIR,W_FIL,'r',10000);
Oracleの本で調べたところ 以下をチェックするように書いてあり
1.Oracle9iで初期化パラメータの管理にSPFILEを使用している場合は、init.oraからSPFILEに変更を反映する必要がある
2.Oracleをインストールしたユーザーにアクセス権がなければ読み書きできない
チェック1の「init.oraからSPFILEに変更を反映する」というのがよくわかりませんでした。
またチェック2のOracleインストールユーザー名というのはどこで確認したら良いのでしょうか。設定B時に権限を与えていますがログイン時のユーザーのみです。
ディレクトリ名を英語のみにしてみてはどうでしょう?
設定AでSPFILEには反映されてるように思います。
SELECT NAME, VALUE FROM V$PARAMETER2 WHERE NAME='utl_file_dir' ;
で確認してください。
http://www.shift-the-oracle.com/oerrs/ora-29280.html
SPFILE)
http://www.shift-the-oracle.com/oracle/pfile-spfile.html
http://634.ayumu-baby.com/oracle/oracle_spfile.html
Oracleのインストールユーザーは、Oracleをインストールしたユーザーです。
Windowsのユーザー管理で、DBAグループに入ってるユーザー居ませんか?
回答ありがとうございます。
ディレクトリ名は英語表記です。
SELECT NAME, VALUE FROM V$PARAMETER2 WHERE NAME='utl_file_dir' ;
での確認は行いました。正しく設定されていました。
すみません。初歩的なことなんでしょうがDBAグループの確認の仕方がわかりません。
OSの管理ツールか何かで確認できるのでしょうか。