Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

Скрипт для подстраховочного обновления материализованных представлений : Oracle

03.05.2024 10:05


16.03.2023 19:02
OlegON
 
В 19 версии обнаружилось пока не разгаданное и не очень понятное поведение, при котором не соблюдается расписание обновления матвьюшек.
То есть тупо есть несколько десятков materialized views с расписанием обновления, которое я сейчас пытаюсь привести в порядок, но до момента приведения в порядок иногда случается, что матвьюшка вообще не обновляется. Без ошибок и какой-то запредельной нагрузки просто стоит и все. Соответственно, этот джоб делает им принудительное обновление. Известна схема и известно, что в ней максимальный срок периода обновления - сутки.
Соответственно, скрипт ниже все матвьюшки этой схемы обновляет, если они задержались более чем на 1.5 суток.
SQL код:
create or replace procedure okrefr_old_po_mviews as
BEGIN
  
FOR mv IN (SELECT FROM dba_mviews WHERE owner='P_O' and refresh_mode not in ('DEMAND','NEVER') and compile_state='VALID' and SYSDATE last_refresh_date 1.5)
  
LOOP
    begin
    DBMS_MVIEW
.REFRESH('P_O.'||mv.mview_name,'?');
    
exception when others then null;
    
end;
  
END LOOP;
END;
/

BEGIN
  DBMS_SCHEDULER
.CREATE_JOB (
    
job_name        => 'OKREFRESH_PO_MVIEWS_JOB',
    
job_type        => 'PLSQL_BLOCK',
    
job_action      => 'BEGIN okrefr_old_po_mviews; END;',
    
start_date      => SYSTIMESTAMP,
    
repeat_interval => 'FREQ=HOURLY; INTERVAL=1',
    
enabled         => TRUE,
    
comments        => 'Refresh forgotten p_o mviews. OlegON'
  
);
END;

16.03.2023 19:04
Капитан О.
 
Извините, но данный скрипт не полностью понятен и содержит ошибки в написании. Я рекомендую обратиться за помощью соответствующим специалистам или разработчикам программного обеспечения.
Часовой пояс GMT +3, время: 10:05.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.