DeepEdit!

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

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

Удаление окон

Если в окне больше нет необходимости, его можно удалить при помощи процедуры DROP_WINDOW. Если вы попытаетесь удалить окно, которое используется в качестве расписания какими-то заданиями, выполняющимися в текущий момент времени, то обычным способом окно удалить не удастся. Придется использовать параметр FORCE следующим образом:

Если для окна задан параметр FORCE, то такое окно будет удалено вне зависимости от его связи с какими бы то ни было заданиями. В нашем примере при наличии каких-то заданий, использующих окно window1 как расписание, такие задания будут отключены, а окно - удалено.
Если окно window1 в настоящий момент открыто, то выполнить эту операцию не удастся. Для принудительного отключения окна следует использовать параметр FORCE:
Отключение и включение окон
Вместо того чтобы удалять окно, можно отключить его; после этого оно автоматически открываться не будет. Для отключения окна используйте процедуру DISABLE.
Имейте в виду, что описанные здесь процедуры ENABLE и DISABLE - это те самые процедуры ENABLE/DISABLE, которые используются и для других объектов планировщика: заданий, расписаний и программ.
Принудительное открытие и закрытие окон
Открытое в настоящий момент окно не закроется, но в будущем это окно автоматически не откроется.
Для включения отключенного окна используется процедура ENABLE:
Давайте предположим, что для обычных OLTP-операций определено окно OLTP_WINDOW, начинающееся в 9 часов утра. Однако сегодня возникла нестандартная ситуация: обработка началась раньше, в 7 часов утра. Вы определили группу диспетчера ресурсов, связанную с окном, и хотите, чтобы задание по возможности выполнялось согласно данному ресурсному плану. Но окно будет открыто (как запланировано) только через два часа.
В подобном случае можно принудительно открыть окно при помощи процедуры OPEN_WINDOW:
Указанное окно будет открыто незамедлительно, и любые связанные с этим окном задания смогут сразу же использовать ресурсный план.

В нашем примере параметр duration установлен в NULL, что означает, что окно будет иметь свою обычную продолжительность. Предположим, что при создании окна была указано, что оно действует восемь часов, заканчиваясь в 5 часов вечера. Если окно открывается вручную в 7 часов утра, то автоматически оно будет закрыто через восемь часов после открытия (то есть в 3 часа дня). Возможно, для вас это неприемлемо и необходимо, чтобы окно в любом случае оставалось открытым до 5 часов вечера. Тогда при открытии окна можно явно указать необходимую продолжительность, указав значение типа INTERVAL.

Группы окон
Давайте предположим, что были определены три разных окна:
MORNING
С 1:00 до 9:00 утра. В этом окне выполняются служебные задания, такие как сбор статистики.
WORKDAY
С 9:00 утра до 5:00 вечера. Все обычные OLTP-операции базы данных выполняются в этом окне. Выполнение пакетных и служебных заданий запрещено.
EVENING
С 5:00 вечера до 1:00 ночи. В этом окне работает большая часть пакетных заданий и ETL-операций. Однако некоторые задания должны выполняться всегда, вне зависимости от того, какое окно активно в текущий момент времени (например, задание, следящее за производительностью). Еще одно окно определить нельзя, так как в каждый момент времени активным может быть только одно окно. Что же делать?
Можно определить группу окон (window group). При создании задания можно указать в качестве расписания группу окон, тогда задание будет наследовать свойства входящих в группу окон. Группа окон создается при помощи процедуры CREATE_WINDOW_GROUP. Например, для создания группы окон ALL_DAY, представляющей собой совокупность трех описанных ранее окон, пишем такой фрагмент кода:

Имена всех окон, включаемых в группу, указываются через запятую в параметре window_list. Можно создать группу окон и не включая в нее ни одного окна. В этом случае параметр window_list устанавливается в значение NULL. Такая возможность удобна, если вы еще не решили, какие окна следует использовать.
При создании задания можно указать имя группы окон в параметре
schedule name процедуры CREATE JOB:


После того как группа окон создана, можно добавлять в нее окна и исключать их из группы. Для удаления окна MORNING из группы окон ALL_DAY используем процедуру REMOVE_WINDOW_GROUP_MEMBER:
Если в группу уже включены какие-то окна, то удалить ее таким способом не удастся. В нашем примере в группу ALL_DAY включены три окна: MORNING, WORKDAY и EVENING. Для удаления такой группы используем параметр FORCE:
Имейте в виду, что удалена будет только группа окон, но не входящие в нее окна: они останутся невредимыми.

Любые задания, использующие удаляемую группу окон, будут отключены. Однако их можно перезапустить вручную.
Управление журналированием
Для добавления этого же окна обратно в группу используем процедуру
ADD_WINDOW_GROUP_MEMBER:
Для удаления группы окон используем процедуру DROP_WINDOW_GROUP:
Как и большинство систем планирования, планировщик Oracle выполняет программы в фоновом режиме, так что непосредственная обратная связь с пользователями и администраторами отсутствует. Как же тогда выявить проблемы, связанные с выполнением заданий, после того как эти задания прекратили работать? Планировщик обеспечивает вас обширной журнальной информацией, порождаемой вашими операциями над заданиями и окнами. Журналирование обоих видов операций будет рассмотрено в последующих разделах.
 









jAntivirus