2010-11-25 8 views

ответ

0

Вы Might быть в состоянии использовать существующий MV в качестве источника prebuilt table for the new MV

Многое зависит от того, что вы делаете на запрос, конечно. Например, если вы добавляете столбец, вам нужно обновить все, чтобы получить новое значение.

PS. Быстрый способ превратить существующий MV в таблицу будет заменой разделов, но следить за gotchas. Затем вы управляете таблицей в соответствии с новым набором результатов и создаете новый MV на основе управляемой таблицы.

2

Вы можете оставить mview на месте. Если ваша задача состоит в том, чтобы минимизировать время простоя, в то время как новый mview создает экземпляр (поскольку вы не использовали предварительно созданную таблицу), вы можете сделать следующее.

  1. Создать новую таблицу с именем mview_1 на предварительно построенной таблице
  2. После того, как он был создан, Вы можете оставить старую
  3. создать или заменить вид MView, как выбрать * из mview_1

Теперь, всякий раз, когда вам нужно перестроить, вы сможете сделать это с минимальным временем простоя, так как вы можете просто взглянуть на представление новой таблицы/mview в будущем.

+0

Простои могут быть равны нулю, если вы указываете свои запросы и код на синоним (или стандартный вид) и переключаете его с wro (и обратно, когда вам нужно снова его изменить). Создание материализованного представления может занять все время, которое вам нужно, вы просто меняете указатель, когда он готов в течение миллисекунд. – 2016-09-22 10:02:42

3

Для условий, в которых вы не уверены, существует ли MVIEW или нет (что для CREATE OR REPLACE действительно подходит), я использую;

BEGIN 
    EXECUTE IMMEDIATE 'DROP MATERIALIZED VIEW name_of_mview'; 
    EXCEPTION 
     WHEN OTHERS THEN 
      IF SQLCODE = -12003 THEN 
       dbms_output.put_line('MVIEW does not exist, which was somewhat expected'); 
      ELSE 
       RAISE; 
      END IF; 
END; 
/

CREATE MATERIALIZED VIEW name_of_mview ... AS SELECT ... 
15

Нет, вы не можете изменить запрос материализованного представления, не отбрасывая его.

Синтаксис CREATE MATERIALIZED VIEW не поддерживает эту функцию.

альтер MATERIALIZED VIEW используется для изменения существующего материализованного представления в одном или нескольких из следующих способов:

  • Чтобы изменить его характеристики хранения
  • Чтобы изменить свой метод обновления, режим, или время
  • Для того, чтобы изменить его структуру, так что это другой тип материализованного представления
  • Чтобы включить или отключить запрос переписать

См Oracle 12c Release 1 Руководство по:

Смежные вопросы