Быстрое обновление материализованного представления на основе не быстрого обновления
Я обнаружил, что могу иметь две таблицы и создать fast refresh on commit
materialized view
на основе этих таблиц присоединились.
Однако я хотел бы сделать fast refresh on commit
материализованное представление, основанное на следующем:
(1) Стол, к которому присоединяются
(2) А complete refresh on demand
материализованное представление, которое само основано на других взглядах (то есть обычных взглядах).
Когда я пытаюсь это сделать, я получаю ошибку ORA-12053
, который говорил о записях в from
пункт, имеющий зависимости друг от друга, даже если они явно не.
Я могу обойти это, заменив (2) обычной таблицей и просто выполняя массовую вставку в эту таблицу вместо обновления материализованного представления. Тем не менее, я бы предпочел не делать этого, если не нужно.
Я попытаюсь поработать над минимальным примером, который иллюстрирует ошибку, но если бы вы могли дать мне представление о том, возможно ли то, что я хочу сделать (желательно на примере), или нет, это было бы здорово.
2 ответа
Следуйте этим фактам, чтобы понять ошибку.
Fast Refresh on Commit
материализованное представление обновляется строка за строкой на основе изменений, внесенных в базовые таблицы.Refresh Complete on Demand
материализованное представление обновляется путем усечения таблицы назначения и повторной вставки всего.- Обновление верхнего материализованного представления будет невозможно, потому что oracle не может отследить изменения в таблице 2 (то есть, обновить полное материализованное представление.)
Существуют ограничения на вложенные материализованные представления. Я описал их в этом посте. ORA-12053 является результатом несоответствия первому ограничению вложенных MV. Делать базовый MV более сложным (объединять, объединять или объединять все MV) - это решение.
С Уважением,
Роб.