Dashboard > СУБД > Home > Oracle, пересборка поломанных сущностей > Information > Сравнение Страницы
  СУБД Вход | Зарегистрироваться   Вариант для печати.  
  Oracle, пересборка поломанных сущностей
Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотреть историю страницы


there.are.num.changes

 Десятка очень чувствительно относится к изменениям в ведомых сущностях в базе данных, как то таблицы, триггеры, функции/процедуры. И даже вьюшки. Поэтому их приходится пересобирать. Если зависимостей 2-3, их можно пересобрать руками. Но чаще их бывает от десятка.
  
 {noformat}
 begin
  for rec in ( SELECT
  owner, object_name, object_id, object_type, created, last_ddl_time, timestamp, status, temporary
  FROM dba_objects
  object_type in ('PROCEDURE', 'FUNCTION') AND status='INVALID'
  WHERE object_type in ('PROCEDURE', 'FUNCTION') AND status='INVALID'
  )
  loop
  execute immediate 'alter '||rec.object_type||' '||rec.owner||'.'||rec.object_name||' compile';
  end loop;
 end;
  
 {noformat}
  
 Если по уму - перед командой пересборки нужно лазить в текущие сессии и смотреть что сейчас работает по шедулеру и задевает те зависимости, которые собираемся перекомпилить - и стопать их (типа, dbms_scheduler.stop_job(owner||'.'||job_name) ). Иначе процесс перекомпиляции затянется на время выполнения всех этих задач по шедулеру, у которых в зависимостях есть таблицы/функции/триггеры, которые будут подвергаться пересборке.
  
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5 Build:#805 Apr 26, 2007) - Запрос Bug/feature - Связаться с администраторами