Архив

Публикации с меткой ‘log’

DML Error Logging

В 10.2  появилось логирование ошибок при выполнение DML команд INSERT, UPDATE, MERGE и DELETE.

Если DML-операция при массовой  обработке данных вызывает ошибки при добавлении или изменении, какой либо записи, то вся операция DML будет отменена. Новая инструкция — LOG ERRORS,  предназначена для обхода подобных ситуация. Если в процессе выполнения DML операции возникает ошибка, то информация о ней  запишется в заранее созданную (при помощи пакета DBMS_ERRLOG) таблицу логов, на которую указывает конструкция LOG ERRORS.

Читать дальше про “DML Error Logging” »

Categories: SQL Tags: , , , ,

Просмотр лога и xml для concurrent`а

Для удобного доступа к логу и xml канкарента, можно использовать следующий запрос

SELECT get_log_bfile('l' || x.request_id || '.req') as log_date,
       get_xml_bfile('o' || x.request_id || '.out') as xml_date
FROM fnd_concurrent_requests x
WHERE x.request_id = :p_request_id

Но перед его использованием следует создать директории для доступа к файлам:

create or replace directory CUNCURRENT_XML
 as '/oracle/NAME_INSTANCE/inst/apps/NAME/logs/appl/conc/out';
create or replace directory CUNCURRENT_LOG
 as '/oracle/NAME_INSTANCE/inst/apps/NAME/logs/appl/conc/log';


и сами функции

create or replace function get_log_bfile(p_filename in varchar2) 
 return bfile as
l_bfile bfile := bfilename('CUNCURRENT_LOG',p_filename);
begin
    return l_bfile;
end;
/
create or replace function get_xml_bfile(p_filename in varchar2 ) 
 return bfile as
  l_bfile bfile := bfilename('CUNCURRENT_XML',p_filename);
begin
    return l_bfile;
end;
/

Вывод сообщения в лог (для concurrent)

24 Март 2010 2 comments
-- Вывод сообщения в лог
procedure output_log_data(p_log_str in varchar2) is
    g_output_dbms    number := 1; -- Вывод сообщений в dbms_output.put_line
    g_output_oebs    number := 2; -- Вывод сообщений в fnd_file.put_line
    v_output_current number := g_output_oebs;
begin
    if fnd_global.conc_request_id = -1 then
      v_output_current := g_output_dbms;
    end if;
    if v_output_current = g_output_dbms then
      dbms_output.put_line(p_log_str);
    elsif v_output_current = g_output_oebs then
    --fnd_file.put_line(fnd_file.output, p_log_str); --Строка выводится в "Просмотр Результатов"
      fnd_file.put_line(fnd_file.log, p_log_str); --Строка выводится в "Просмотр Журнала"
    end if;
end output_log_data;