Записи журнала SQL DB2 непосредственно в iSeries

Недавно я наткнулся на оператор SQL, который можно использовать в iSeries/DB2 для извлечения данных непосредственно из журналов базы данных. Он работал без использования DSPJRN и т. д. Он вызывал хранимую процедуру, и результаты возвращались непосредственно в сеанс SQL. К сожалению, с тех пор я потерял информацию.

Кто-нибудь знает имя хранимой процедуры и как написать оператор SQL?


person Peter    schedule 16.08.2013    source источник


Ответы (3)


Нашел. Он работает через UDTF — определяемую пользователем табличную функцию, предоставляемую IBM.

Формат следующий. Обязательны только первые 2 параметра. Об этом есть достойный блог: http://ibmsystemsmag.blogs.com/i_can/2010/11/

select * from table (Display_Journal( 'journLib', 'Journal', -- Библиотека журнала и имя -- 'receiverLib', 'Receiver', -- Библиотека приемника и имя -- CAST(null as TIMESTAMP), -- Отметка времени начала -- CAST(null as DECIMAL(21,0)), -- Начальный порядковый номер -- '', -- Коды журнала -- '', -- Записи журнала -- '','', -- Библиотека объектов, Имя объекта -- '','', -- Тип объекта, Элемент объекта -- '', -- Пользователь -- '', -- Работа -- '' -- Программа --
)) как x

person Peter    schedule 20.08.2013

Это не совсем то, что вы описываете, но бесплатная утилита Tools/400 EXPJRNE может вызываться как хранимая процедура или может быть заключена в настраиваемую хранимую процедуру, которая также будет возвращать набор результатов.

person James Allman    schedule 16.08.2013
comment
Если вы посмотрите на код утилиты, то увидите, что это оболочка вокруг команды DSPJRN. В нем говорится, что выходной файл имеет те же поля, что и журналируемый файл, плюс информация о журнале. Почему требуется так много кода, я не уверен. - person WarrenT; 19.08.2013

Вы можете создать хранимую процедуру или функцию с некоторым кодом-оболочкой для вызова API получения записей журнала (QjoRetrieveJournalEntries)

person WarrenT    schedule 18.08.2013
comment
Да, но есть готовое решение IBM через UDTF - см. мой другой ответ - person Peter; 20.08.2013