2012-01-25 17 views
5

Supongamos que tiene dos bases de datos Oracle, DB_A y DB_B. Hay una tabla llamada TAB1 en DB_A con un registro de vista materializada, y una vista materializada llamado SNAP_TAB1 en DB_B crea con¿Hay alguna forma de consultar los cambios realizados por una actualización materializada de vista materializada en Oracle?

CREATE SNAPSHOT SNAP_TAB1 
REFRESH FAST 
AS SELECT * FROM [email protected]_A; 

¿Hay alguna forma de consulta en DB_B los cambios realizados en SNAP_TAB1 después de cada llamada al avance rápido actualizar la vista materializada?

DBMS_SNAPSHOT.REFRESH('SNAP_TAB1', 'F'); 

En DB_A, antes de la actualización, se puede consultar la tabla de vista de registro materializado, MLOG $ _TAB1, para ver qué filas se han cambiado en TAB1. Estoy buscando una forma de consultar en DB_B, después de cada actualización, qué filas se han actualizado en SNAP_TAB1.

Gracias!

Respuesta

1

creo que las siguientes líneas de trabajo con mesa de pre-compilados:

Usted puede agregar una columna en la tabla SNAP_TAB1.

Para inserciones Puede ponerlo en default sysdate => para cada inserción, tendrá la marca de tiempo del inserto.

Para las actualizaciones, puede utilizar un activador. Debido a que la columna no está involucrada en la Vista Materializada, la actualización de la columna con el activador no será un problema.

probaly mejor, con el gatillo puede utilizar un identificador único para almacenar en esa columna, que se incrementa antes de cada nueva actualización. (La obtención de la identificación única puede tener diferentes aproaches.)

Obviamente, se puede' t track borra con esta idea.

Cuestiones relacionadas