Если vw_testdata
- «обычное» представление, это сохраненный запрос и не содержит данных. Я предполагаю, что вас беспокоит то, что - если этот запрос (в какой-то момент) не получит "ничего" и вы обновите sh материализованное представление, вы потеряете данные в материализованном представлении.
Если это так, создайте хранимая процедура, например
create or replace procedure p_refresh as
l_cnt number;
begin
select max(1)
into l_cnt
from vw_testdata
where exists (select null from vw_testdata);
if l_cnt = 1 then
dbms_mview.refresh('mv_testdata');
end if;
end;
/
Проверяет, существует ли что-нибудь в vw_testadata
; в таком случае обновляется материализованное представление.
Теперь запланируйте выполнение этой процедуры еженедельно.