DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Журналы заданий

Информацию о журналах заданий можно найти в двух представлениях словаря данных: DBA_SCHEDULER_JOB_LOG и DBA_SCHEDULER_JOB_RUN_DETAILS.
Представление DBA_SCHEDULER_JOB_LOG
При создании, изменении, удалении и запуске заданий результаты таких операций загружаются в сводную таблицу, которая доступна через представление DBA_SCHEDULER_JOB_LOG. Перечень столбцов представления приведен в таблице ниже.
Имя столбца
Описание
LOG_ID
Уникальный идентификатор записи.
LOG_DATE
Временная метка записи журнала.
OWNER
Владелец журнала.
JOB_NAME
Имя задания.
JOB_CLASS
Класс заданий (если задан).
OPERATION
Что произошло при обращении к заданию (например, CREATE,
RUN, BROKEN).
STATUS
Что произошло после выполнения операции заданием (на­пример, SUCCEEDED, FAILED).
USER_NAME
Имя пользователя, вызвавшего задание.
CLIENT_ID
Идентификатор клиента, если он был задан посредством
DBMS_SESSION.SET_IDENTIFIER.
GLOBAL_UID
Глобальный UID для глобальных пользователей.
ADDITIONAL_INFO
Любая дополнительная информация о выполнении задания хранится в данном столбцев виде значения типа CLOB. Напри­мер, если задание было автоматически удалено после успеш­ного выполнения (параметр auto_drop был установлен в TRUE), то в столбце OPERATION отображается значение DROP. Однако этих сведений недостаточно для того, чтобы понять, автома­тически удалено задание или явно, пользователем. В столб­це дополнительной информации выводится конкретная при­чина удаления, в данном случае это будет REASON="Auto drop job dropped".
Аналогично здесь сохраняется и любая другая информация, связанная с выполнением задания.

Представление DBA_SCHEDULER_JOB_RUN_DETAILS
Представление DBA_SCHEDULER_JOB_LOG, описанное в предыдущем разделе, выводит сводную журнальную информацию для заданий, но не детали выполнения. Подробные сведения о выполнении работы содержатся в представлении DBA_SCHEDULER_JOB_RUN_DETAILS, столбцы которого описаны в следующей таблице.
Имя столбца
Описание
LOG_ID
Уникальный номер, представляющий определенную за­пись журнала.
LOG_DATE
Временная метка записи журнала, выводимая как значе­ние типа TIMESTAMP WITH TIME ZONE.
OWNER
Владелец задания.
JOB_NAME
Имя задания.
STATUS
Статус задания после выполнения операции (например,
FAILED, SUCCEEDED).
ERROR#
Номер ошибки Oracle (в случае ошибки).
REQ_START_DATE
Спланированное или запрошенное время запуска задания, которое может не совпадать с фактическим временем за­пуска.
ACTUAL_START_DATE
Выполнение задания может не начаться в запланированное или запрошенное время (например, если окно не было предварительно открыто или выполнялось более высоко­приоритетное задание). В этом случае временная метка в данном столбце фиксирует фактическое время начала вы­полнения задания.
RUN_DURATION
Продолжительность выполнения задания, отображаемая как значение типа TIMESTAMP.
INSTANCE_ID
При работе с базой данных RAC задание должно выпол­няться на определенном экземпляре базы данных. Номер такого экземпляра записывается в данный столбец.
SESSION_ID
SID сеанса, который запустил процесс задания.
SLAVE_PID
Идентификатор подчиненного процесса задания.
CPU_USED
Процессорное время, израсходованное на выполнение зада­ния.
ADDITIONAL_INFO
Дополнительная информация об особенностях выполнения задания, сохраненная в виде значения типа CLOB. Такая ин­формация может быть чрезвычайно полезна для диагно­стики проблем с выполнением задания. Предположим, на­пример, что задание выполнить не удалось, а в данном столбце находятся такие сведения:
ORA-01014: ORACLE shutdown in progress
Или предположим, что задание сбора статистики не выпол­нилось, и в столбце отображается следующее:
ORA-28031: maximum of 148 enabled roles exceeded
В обоих случаях вы можете определить точную причину невыполнения задания. Аналогично здесь сохраняется и другая информация, связанная с соответствующей стро­кой представления DETAILS.

Очистка журнала заданий

Журналирование заданий обеспечивает доступ к очень полезной информации, но если время от времени не очищать журналы, они будут неограниченно увеличиваться в объеме и заполнят все пространство базы данных. По умолчанию журнальная информация хранится в таблице (SYS.SCHEDULER$_JOB_RUN_DETAILS) табличного пространства SYSAUX. Oracle решает проблему, автоматически удаляя журнальные записи через определенные промежутки времени. Операция удаления выполняется заданием планировщика под названием PURGE_LOG, которое принадлежит пользователю SYS. Это задание автоматически устанавливается при создании базы данных Oracle в составе класса заданий DEFAULT_JOB_CLASS. Оно вызывает именованную программу PURGE_LOG_PROG, которая указывает на хранимую процедуру AUTO_PURGE самого пакета DBMS_SCHEDULER.
Это задание выполняется на основе именованного расписания DAILY_ PURGE_SCHEDULE, которое запускается в 3:00 утра ежедневно. Хотя это автоматически создаваемое задание, это не мешает управлять его выполнением. Как и для любых других видов заданий, вы можете изменять его свойства (например, изменить время его запуска, вызываемую программу или определить, следует ли связывать его с окном).
PURGE_LOG удаляет только те записи журнала, которые помечены для удаления, так как истек их период сохранения (retention period) (см. далее раздел «Задание периода сохранения»).
Уровень журналирования
Управлять объемом журнала заданий можно также за счет ограничения объема информации о задании, записываемой в журнал. Например, можно вести журнал только при выполнении задания, но не при его создании. В некоторых случаях можно вообще отказаться от жур- налирования.
Определить уровень журналирования можно при создании класса заданий, задав параметр logging_level процедуры CREATE_JOB_CLASS. Впоследствии задание унаследует свойства класса (при наличии ссылки на класс при создании задания).
DBMS_SCHEDULER поддерживает три уровня журналирования:
DBMS_SCHEDULER.LOGGING_OFF
Журналирование полностью отключено. DBMS_SCHEDULER.LOGGING_RUNS
Журналы ведутся только при выполнении задания. Значение по умолчанию.
DBMS_SCHEDULER.LOGGING_FULL
Журналы ведутся при выполнении задания, а также при осуществлении любых операций над заданиями (таких как создание, удаление и изменение).
Можно задать параметр logging_level процедуры CREATE_JOB_CLASS следующим образом:

Можно изменить уровень журналирования, задав атрибут logg- ing_level класса заданий как в следующем примере (см. далее раздел «Управление атрибутами»).

Задание периода сохранения
Существует еще один способ ограничения размера журналов - задание периода сохранения для записей в журнальных таблицах. При запуске автоматического задания PURGE_LOG из журнала удаляются только те записи, которые старше соответствующей даты. Длительность периода сохранения по умолчанию составляет 30 дней. Через 30 дней журнальные записи, созданные 31 день назад, будут автоматически удалены.
При необходимости можно указать разные периоды сохранения для всех классов заданий. Для этого задайте параметр log_history процедуры CREATE_JOB_CLASS (значение по умолчанию - 30 дней). Позже можно будет изменить период сохранения для существующего класса заданий, задав атрибут log_history.
В следующем примере период сохранения задается для уже существующего класса заданий DEFAULT_JOB_CLASS:
Зададим период сохранения для журнала продолжительностью 120 дней при создании класса заданий:
Текущее значение длительности периода сохранения журнала можно найти в представлении словаря данных DBA_SCHEDULER_JOB_CLASSES:

В большинстве случаев значения по умолчанию для уровня журнали- рования и периода сохранения оказываются вполне подходящими. Однако в некоторых случаях может возникнуть необходимость замены этих значений. Журналы обычно являются единственным средством, с помощью которого можно выявить проблемы после завершения заданий. Для особенно важных заданий можно включить полное жур- налирование. Для заданий, по которым вам необходимо просматривать более старые, чем обычно, сведения, можно указать более долгий (по отношению к значению по умолчанию) период сохранения.
 









jAntivirus