Eu tenho um trabalho que atualiza um grupo de atualização de exibição materializada no Oracle 19c. Eu queria atualizar o grupo diariamente à meia-noite - trunc(sysdate)
? O trabalho foi feito usando o seguinte PL/SQL:
BEGIN
DBMS_REFRESH.MAKE (
name => 'REFG_1',
list => '',
next_date => trunc(sysdate),
interval => 'SYSDATE + 1',
implicit_destroy => FALSE,
rollback_seg => '',
push_deferred_rpc => TRUE,
refresh_after_errors => FALSE);
END;
/
Os MVs estão sendo atualizados diariamente. No entanto, eles são atualizados às 11h26 (isso coincide com o horário em que criei o trabalho originalmente).
Como crio este trabalho para garantir que ele seja atualizado à meia-noite todas as noites?
O intervalo deve
trunc(sysdate)+1
significar meia-noite de amanhã.Você
next_date
será avaliado até a meia-noite de hoje (no passado) para que a primeira atualização aconteça o mais rápido possível. Você provavelmente quer que isso também seja amanhã à meia-noiteO próximo tempo de execução (
SYSDATE+1
no seu caso) do seu trabalho é avaliado quando o trabalho anterior for concluído. Assim, ele será deslocado cada vez mais.Use
TRUNC(SYSDATE)+1
ou mude para os Jobs do Agendador modernos onde você tem mais liberdade.