Процедуры управления журналированием

Журналирование реализовано с помощью пакета PACK_LOG, который включает две процедуры:

ENABLE_LOGGING – включает журналирование для указанной таблицы и ее колонок:

PROCEDURE ENABLE_LOGGING(

 vTABLE VARCHAR2,

 vCOLUMN_LIST VARCHAR2 := NULL,

 vSCHEMA_NAME VARCHAR2 := NULL);

vTABLE – название таблицы, которая должна журналироваться;

vCOLUMN_LIST полный список названий колонок, разделенных запятыми, которые должны журналироваться. Если NULL, то журналирование включается для всех колонок таблицы за исключением LOG_ID;

vSCHEMA_NAME имя схемы, в которой находится указанная таблица. Если NULL, то будет использоваться схема kernel ядра базы данных.

DISABLE_LOGGING – выключает журналирование для указанной таблицы и ее колонок:

PROCEDURE DISABLE_LOGGING(

 vTABLE VARCHAR2,

 vCOLUMN_LIST VARCHAR2 := NULL,

 vSCHEMA_NAME VARCHAR2 := NULL);

vTABLE – название таблицы, журналирование которой нужно запретить;

vCOLUMN_LIST полный список названий колонок, разделенных запятыми, которые не должны журналироваться. Если NULL, то журналирование выключается для всех колонок таблицы;

vSCHEMA_NAME имя схемы, в которой находится указанная таблица. Если NULL, то будет использоваться схема kernel ядра базы данных.

GET_PAUSE_MODE – возвращает 1, если журналирование приостановлено в текущей сессии и 0, если журналирование включено:

FUNCTION GET_PAUSE_MODE RETURN NUMBER;

SET_PAUSE_MODE – приостанавливает или возобновляет журналирование для текущей сессии:

PROCEDURE SET_PAUSE_MODE(vPAUSE_MODE NUMBER);

vPAUSE_MODE – если параметр равен 1, журналирование будет приостановлено, если 0 — возобновлено;

35_important

В процедурах могут выполняться DDL операторы ALTER TABLE table_name ADD column_name, при этом происходит COMMIT транзакции. Делать вызов этих процедур внутри основной транзакции (серверного вызова) может быть опасно!

Также управлять журналированием можно с помощью менеджера IHistoryService (из пространства имен Ultima):

HistoryService.EnableLogging("kernel""table_name");

 

HistoryService.DisableLogging("kernel""another_table_name""column1""column2");

 

/* Hard optimization ! Danger ! */

using (HistoryService.PauseLogging())

{

   CloneAllPrices();

}