Имеет ли значение порядок объектов в параметре 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 шт):

Автор решения: 0xdb

В документации 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 обновления материализованных представлений выполняются в алфавитном порядке.

→ Ссылка