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

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

31.01.2025 10:54


16.03.2023 19:02
В 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:54.

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