连续执行过程
 declare aa number(15):=0;
  begin
 lsdba.loadfile_sy_cz('SY002001420061018.txt','/data/today/CZ002001420061018','CZ002001420061018.ZIP');
end;
前50次执行成功,第51次开始报错。
如果断开数据库连接,再重新连接后,又可以执行50次,各位大虾,执行过程数报下面错误:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 449
ORA-29283: invalid file operation
ORA-06512: at "LSDBA.LOADFILE_SY_CZ", line 36
ORA-06512: at line 6
请帮忙看看。。

解决方案 »

  1.   

    lsdba.loadfile_sy_cz包内容未给出,猜测为"SYS.UTL_FILE"问题。问题:怎么样在Oracle中写操作系统文件,如写日志解答:可以利用utl_file包,但是,在此之前,要注意设置好Utl_file_dir初始化参数
    /**************************************************************************
    parameter:textContext in varchar2 日志内容
    desc: ·写日志,把内容记到服务器指定目录下必须配置Utl_file_dir初始化参数,并保证日志路径与Utl_file_dir路径一致或者是其中一个
    ****************************************************************************/ 
    CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2)
    IS
    file_handle utl_file.file_type;
    Write_content VARCHAR2(1024);
    Write_file_name VARCHAR2(50);
    begin
    --open file
    write_file_name := 'db_alert.log';
    file_handle := utl_file.fopen('/u01/logs',write_file_name,'a');
    write_content := to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss')||'||'||text_context;
    --write file
    IF utl_file.is_open(file_handle) THEN
    utl_file.put_line(file_handle,write_content);
    end IF;
    --close file
    utl_file.fclose(file_handle);
    EXCEPTION
    WHEN OTHERS THEN
    begin
    IF utl_file.is_open(file_handle) THEN
    utl_file.fclose(file_handle);
    end IF;
    EXCEPTION
    WHEN OTHERS THEN
    NULL;
    end;
    end sp_Write_log;
    ----------------------------------------------------------------
      

  2.   

    lsdba.loadfile_sy_cz这个贴出来瞅瞅
      

  3.   

    谢谢,已经解决
    utl_file.fopen 后,
    没有执行utl_file.fclose