DECLARE
  2  l_file             UTL_FILE.FILE_TYPE;
  3  l_cur_prcs_dt      VARCHAR2(10);
  4  l_str              VARCHAR2(300);
  5  l_dirname          VARCHAR2(300) := '/HOME/HSFSS/BAK/RPT/20091029';
  6  l_ctlfilename      VARCHAR2(300) := 'CD_20091029.ctl';
  7  BEGIN
  8  
  9  l_file := UTL_FILE.FOPEN(l_dirname, l_ctlfilename, 'W' , 327);
 10  END;
 11  /
DECLARE
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 449
ORA-29283: invalid file operation
ORA-06512: at line 9
相应目录有写权限,请问这个问题是怎么回事??

解决方案 »

  1.   

    要建立一个DIRECTORY变量并付给权限,将DIRECTORY变量指向'/HOME/HSFSS/BAK/RPT/20091029'
      

  2.   

       1. create or replace directory D_OUTPUT as '/HOME/HSFSS/BAK/RPT/20091029';  
       2. grant read,write on directory D_OUTPUT to testdb;  
       3. GRANT EXECUTE ON utl_file TO testdb;  
      

  3.   

    testdb 这个是数据库用户名吗,utl_file是什么?
      

  4.   

    我的系统是Linux 5.3 楼上的方法不好用,好象是在windows可用。是不是还有其它设置?
      

  5.   

    linux系统可以啊,'/HOME/HSFSS/BAK/RPT/20091029'就是linux或者unix系统下的目录。testdb就是登陆数据库的用户名。