utl_file.fopen не удается Иногда - PullRequest
       36

utl_file.fopen не удается Иногда

0 голосов
/ 12 декабря 2018

Все,

У нас есть набор из 8 заданий, которые выполняются параллельно на сервере Unix.Эти задания вызывают хранимую процедуру Oracle.Все эти процедуры выполняют набор операций с БД (для разных таблиц) и в конце создают файлы на Unix-сервере.(Каждое задание создает файл с разными именами. Но помещает в одну папку)

В последнее время мы видим случайные сбои с сообщением об ошибке "ORA-06512: at" SYS.UTL_FILE ", строка 536". Каждый день при создании отчета об ошибке происходит сбой одного или двух заданий.Когда работа повторяется, проблем нет.Мы не могли воспроизвести проблему в более низкой среде.

Папка имеет все права доступа.Эта работа выполнялась более года без проблем.Любые идеи приветствуются.

Основываясь на моем анализе: - Операции с БД завершены без каких-либо проблем.Файл не создан (даже пустой).Так что это не удалось при встрече fopen.

Пример кода

DECLARE
 IN_CONT_TYPE   varchar2(100) := 'HARDWARE_ATTRIBUTES' ;
    in_batch_name  ccpm_epslz_control.push_batch_name%TYPE := 'HARDWARE_ATTRIBUTES_20181211062540';
  l_file_type utl_file.file_type;
  file_record_hold_cur sys_refcursor;
BEGIN

/*DB Operations*/

      l_file_type       :=utl_file.fopen('ERR_FOLDER',l_file_name,'W');
      utl_file.put_line(l_file_type, 'count of input records filtered based on errors:');
      utl_file.put_line(l_file_type, '-----------------------------------------------');
      utl_file.put_line(l_file_type, l_col_name_print);
      OPEN file_record_hold_cur FOR l_select_stmt_bus;
      LOOP
        FETCH file_record_hold_cur INTO l_putline_stmt_bus;
        EXIT
      WHEN file_record_hold_cur%notfound;
        utl_file.put_line(l_file_type, l_putline_stmt_bus);
      END LOOP;
      CLOSE file_record_hold_cur;
      utl_file.fclose(l_file_type);
    EXCEPTION
    WHEN OTHERS THEN
      Dbms_Output.put_line ( DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
    END;

СООБЩЕНИЕ ОБ ОШИБКЕ: - ORA-20051: внутренняя ошибка при генерации файла ORA-06512: в «MYPACKAGE», строка 84 ORA-06512: в «SYS».UTL_FILE ", строка 536

...