Быстрая компиляция большого количества инвалидных объектов в БД

от автора

БД находится в restricted (выполнен startup restrict или alter sytem enable restricted session+убиты все пользовательские сессии).
listener остановлен.

Последовательность действий.

  • exec dbms_scheduler.set_scheduler_attribute(‘scheduler_disabled’,’true’);alter system disable restricted session;
  • @?/rdbms/admin/utlrp
  • в другой сессии: alter system enable restricted session;exec dbms_scheduler.set_scheduler_attribute(‘scheduler_disabled’,’false’);


Перекомпиляция большого количества объектов может потребоваться после апгрейдов софта oracle или прикладной части софта в БД.
Обычные инструкции в таком случае содержат рекоменадции запустить utlrp в обычном режиме БД, но в реальности возникают проблемы, когда в БД начинают выполняться джобы и пользователские сессии, а объекты еще не откомпилированы.
Если запускать utlrp в restricted, то он не будет работатьв parallel. Если же убрать listener, запретить джобы и выйти из restricted перед запуском utlrp, то parallel опять же не получится, из-за отключеных джобов.
Вышеописанная последовательность, однако, работает, так как utlrp запускается не в restricted и создает свои джобы с атрибутов allow_rusn_in_restricted_mode — они запустятся после ввода соотвествующих команд в другой сессии.

Актуально для БД с большим количеством объектов и заданий в dba_jobs, dba_scheduler_jobs.

ссылка на оригинал статьи http://habrahabr.ru/post/199088/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *