Имеет ли значение порядок объектов в параметре LIST процедуры DBMS_MVIEW.REFRESH?
dbms_mview.REFRESH(
LIST=>'MV_CREATIVES_MIX_WITH_NAME_DCO,MV_CREATIVES_STATISTICS_MIX_DCO,
MV_AUTOCHECKER_UPD,MV_AUTOLINKING_DCO'
/*, atomic_refresh => false, out_of_place => true*/);
В параметре LIST объекты:
MV_CREATIVES_MIX_WITH_NAME_DCO,MV_CREATIVES_STATISTICS_MIX_DCO
являются источниками данных для объектов:
MV_AUTOCHECKER_UPD,MV_AUTOLINKING_DCO
В данном случае, выполнются ли обновление объектов в заданном порядке?
Или, чтобы соблюсти порядок выполнения, следует выполнить обновление источников данных в отдельном JOB?
Ответы (1 шт):
В документации DBMS_MVIEW.REFRESH порядок выполнения обновлений в листе материализованных представлений не указан, т.е на него не стоит полагаться.
В MOS документе Doc ID 1452382.1 сказано:
In 10g and above versions, Oracle does not refresh the MVIEWs in sequence as specified in the "LIST" parameter in the DBMS_SNAPSHOT.REFRESH / DBMS_MVIEW.REFRESH procedure. MVIEWs are sorted and refreshed in alphabetical order from 10g onwards. Whereas in 9i, it refreshes the MVIEWs as specified in LIST parameter; there is no sorting by MVIEW name in 9i.
До верии 9i включительно, обновления выполнялись действительно в порядке, указанном в параметре LIST, а начиная с 10g обновления материализованных представлений выполняются в алфавитном порядке.