Обновить при фиксации для материализованного представления

У меня есть две базовые рабочие таблицы test_table1 и test_table2, на которых я создал материализованные журналы просмотра. Я создал представление поверх этого под названием test_view1, которое является объединением test_table1 и test_table2. Теперь мне нужно создать материализованное представление для этого представления test_view1.

Я создал материализованное представление как REFRESH ON COMMIT, и оно было создано, но когда я запустил процедуру инкрементного обновления как за

execute DBMS_MVIEW.REFRESH('test_mview2', 'F', '', TRUE, FALSE, 0,0,0,FALSE, FALSE);

материализованное представление не обновляется, даже если к базовым таблицам был применен какой-либо DML. Но когда я запускаю процедуру полного обновления:

execute DBMS_MVIEW.REFRESH('test_mview2', 'C', '', TRUE, FALSE, 0,0,0,FALSE, FALSE);

он обновляется.

Как я могу REFRESH ON COMMIT для этого конкретного материализованного представления?

Вывод dbms_mview.explain_mview: (CApability_name --possible - msgtxt)

  1. REFRESH_FAST_PCT --N-- PCT невозможно ни в одной из подробных таблиц в матере
  2. REWRITE_FULL_TEXT_MATCH --N-- Ошибка Oracle: подробности см. В RELATED_NUM и RELATED_TEXT.
  3. REWRITE_FULL_TEXT_MATCH --N - перезапись запроса отключена для материализованного представления
  4. REWRITE_PARTIAL_TEXT_MATCH --N - материализованное представление не может поддерживать любой тип перезаписи запроса
  5. REWRITE_PARTIAL_TEXT_MATCH --N - перезапись запроса отключена для материализованного представления
  6. REWRITE_GENERAL --N - материализованное представление не может поддерживать любой тип перезаписи запроса
  7. REWRITE_GENERAL --N - причина, по которой возможность отключена, ускользнула от анализа
  8. REWRITE_GENERAL --N - перезапись запроса отключена для материализованного представления
  9. REWRITE_PCT --N - общая перезапись невозможна или PCT невозможен на
  10. PCT_TABLE_REWRITE --N-- Ошибка Oracle: подробности см. В RELATED_NUM и RELATED_TEXT.
  11. PCT_TABLE_REWRITE --N-- отношение не является секционированной таблицей
  12. PCT --N--
  13. REFRESH_COMPLETE --Y--
  14. REFRESH_FAST --N--
  15. ПЕРЕПИСАТЬ --N--
  16. PCT_TABLE --N-- Ошибка Oracle: подробности см. В RELATED_NUM и RELATED_TEXT.
  17. PCT_TABLE --N-- отношение не является секционированной таблицей
  18. REFRESH_FAST_AFTER_INSERT --N-- mv ссылается на функцию PL / SQL, которая поддерживает состояние
  19. REFRESH_FAST_AFTER_ONETAB_DML --N - увидеть причину, по которой REFRESH_FAST_AFTER_INSERT отключен

REFRESH_FAST_AFTER_ANY_DML N узнать причину, по которой REFRESH_FAST_AFTER_ONETAB_DML отключен


person Deepak Venga    schedule 20.11.2013    source источник
comment
Какой результат вы получите от DBMS_MVIEW.EXPLAIN_MVIEW для этого материализованного представления?   -  person David Aldridge    schedule 20.11.2013
comment
Добавьте к вопросу вывод SELECT имя_возможности, возможно, SUBSTR (msgtxt, 1,60) AS msgtxt FROM mv_capabilities_table.   -  person David Aldridge    schedule 20.11.2013
comment
Добавьте это к вопросу, во имя богов! Прекратите вставлять в комментарии какую-то большую нечитаемую кучу дерьма!   -  person David Aldridge    schedule 20.11.2013


Ответы (1)


Из результата MV Capabilities:

REFRESH_FAST_AFTER_INSERT N mv ссылается на функцию PL / SQL, которая поддерживает состояние

У вас есть функция PL / SQL, определенная как часть материализованного представления или представления, на которое она ссылается, что препятствует работе быстрого обновления. Могу поспорить, что в нем есть оператор SELECT, но в любом случае он не детерминирован.

person David Aldridge    schedule 20.11.2013
comment
Если над представлением необходимо создать MView, где должны быть созданы журналы материализованного представления? - person Deepak Venga; 22.11.2013
comment
Базовые таблицы. Но проблема здесь в вашей функции pl / sql, а не в представлении. Лично я бы не стал ссылаться на представление, я бы поместил полный запрос в MV. Таким образом, MV знает, что определение запроса не меняется между обновлениями. - person David Aldridge; 22.11.2013