postgres log create 12c 11g oracle materialized-views

log - materialized views oracle base



Cómo actualizar la vista materializada en el oráculo (8)

Estoy tratando de actualizar la vista materializada usando:

DBMS_MVIEW.REFRESH(''v_materialized_foo_tbl'')

Pero está arrojando una declaración sql inválida.

Luego he creado un procedimiento almacenado como este:

CREATE OR REPLACE PROCEDURE MAT_VIEW_FOO_TBL IS BEGIN DBMS_MVIEW.REFRESH(''v_materialized_foo_tbl'') END MAT_VIEW_FOO_TBL IS;

Este procedimiento ha sido creado con éxito, pero cuando llamo a este procedimiento con

MAT_VIEW_FOO_TBL;

está arrojando un error nuevamente.

Amablemente sugiera una solución para este problema.

Gracias, Srinivas


Cuando tenemos que usar procedimientos o paquetes incorporados, tenemos que usar el comando "EJECUTAR", entonces funcionará.

EX:

EXECUTE exec DBMS_MVIEW.REFRESH (''v_materialized_foo_tbl'');


Ejecute este script para actualizar los datos en la vista materializada:

BEGIN DBMS_SNAPSHOT.REFRESH(''Name here''); END;


Intente usar la sintaxis siguiente:

Sintaxis común:

begin dbms_mview.refresh(''mview_name''); end;

Ejemplo:

begin dbms_mview.refresh(''inv_trans''); end;

Espero que lo anterior ayude.


La mejor opción es usar el ''?'' argumento para el método. De esta forma, DBMS_MVIEW elegirá la mejor manera de actualizar, por lo que hará la actualización más rápida posible para usted. , y no fallará si prueba algo como method => ''f'' cuando realmente necesita una actualización completa. :-)

desde el prompt SQL * Plus:

EXEC DBMS_MVIEW.REFRESH(''my_schema.my_mview'', method => ''?'');


Puede actualizar una vista materializada de la siguiente manera:

EXECUTE DBMS_SNAPSHOT.REFRESH(''Materialized_VIEW_OWNER_NAME.Materialized_VIEW_NAME'',''COMPLETE'');


Si está trabajando con SQL Developer, debe poner dbms_view en minúscula. El resto compilado bien para mí, aunque todavía no he llamado al procedimiento desde el código.

CREATE OR REPLACE PROCEDURE "MAT_VIEW_FOO_TBL" AS BEGIN dbms_mview.refresh(''v_materialized_foo_tbl''); END;


prueba esto:

DBMS_SNAPSHOT.REFRESH( ''v_materialized_foo_tbl'',''f'');

primer parámetro es el nombre de mat_view y el segundo define el tipo de refresh . f denota una actualización rápida. pero tenga esto en cuenta, anulará cualquier otra opción de tiempo de actualización.


un poco tarde para el juego, pero encontré la manera de hacer que funcione la sintaxis original en esta pregunta (estoy en Oracle 11g)

** primer cambio al esquema de tu MV **

EXECUTE DBMS_MVIEW.REFRESH(LIST=>''MV_MY_VIEW'');

alternativamente puede agregar algunas opciones:

EXECUTE DBMS_MVIEW.REFRESH(LIST=>''MV_MY_VIEW'',PARALLELISM=>4);

esto realmente funciona para mí, y al agregar la opción de paralelismo aceleré mi ejecución aproximadamente 2,5 veces.

Más información aquí: Cómo actualizar una vista materializada en paralelo