2010-11-25 21 views

Respuesta

0

Usted FUERZA ser capaz de hacer uso de la MT existente como la fuente de un prebuilt table for the new MV

Mucho depende de lo que está haciendo a la consulta por supuesto. Si está agregando una columna, por ejemplo, necesitará actualizar todo para obtener su nuevo valor.

PS. La forma más rápida de convertir el MV existente en una mesa sería el intercambio de partición, pero ten cuidado con gotchas. Luego manipula la tabla para que coincida con el nuevo conjunto de resultados y cree la nueva MV basada en la tabla manipulada.

2

Puede dejar el mview en su lugar. Si su preocupación es minimizar el tiempo de inactividad mientras el nuevo mview crea una instancia (porque no usó una tabla precompilada), puede hacer lo siguiente.

  1. crear una nueva tabla llamada mview_1 en la mesa de pre-compilados
  2. Una vez que se ha creado se puede soltar el viejo
  3. crear o sustituir vista mview como seleccionar * de mview_1

Ahora, cada vez que necesite reconstruir podrá hacerlo con poco o ningún tiempo de inactividad, ya que puede señalar fácilmente la vista a la nueva tabla/mview en el futuro.

+0

tiempo de inactividad puede ser cero si apuntas tus consultas y código a un sinónimo (o vista estándar) y lo cambias del wro ng vista materializada a la nueva (y viceversa cuando tenga que modificarla de nuevo). La creación de la vista materializada puede llevar todo el tiempo que necesite, simplemente cambie el puntero cuando esté listo en cuestión de milisegundos. –

3

Para las condiciones en las que no está seguro si existe el MVIEW o no (que es lo que CREA O REEMPLAZA es realmente bueno), uso;

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

No, no puede modificar la consulta de una vista materializada sin soltarla.

La sintaxis CREATE MATERIALIZED VIEW no es compatible con esta característica.

El ALTER vista materializada se utiliza para modificar una existente materializado vista en una o más de las siguientes maneras:

  • Para cambiar sus características de almacenamiento
  • para cambiar su método de actualización, el modo, o el tiempo
  • para alterar su estructura de modo que es un tipo diferente de materializado vista
  • Para habilitar o deshabilitar la consulta reescribir

Ver Oracle 12c Release 1 Manual para:

Cuestiones relacionadas