utilizar - oracle vistas actualizables
Vistas materializadas-Identificando la última actualización (3)
Actualmente accedo a una serie de vistas y vistas materializadas. Los materiales son mantenidos por un tercero que ofrece poca información sobre la frecuencia y el éxito de la materialización. En los últimos tiempos, las vistas materializadas no se han podido actualizar y he enviado numerosos informes con datos incorrectos / demorados.
En este momento estoy consultando cada materializado que pretendo usar para establecer cuándo se produjo la última actualización dentro del sistema transaccional, si no se ha actualizado, el resto del código no se ejecuta, sin embargo, esto es un esfuerzo inútil y puede a veces conducir. a una suposición incorrecta (la vista materializada puede haberse renovado, pero no se realizaron transacciones adicionales; por lo tanto, el resto del código no se ejecuta) y preferiría otro método.
¿Hay alguna forma de identificar si una vista materializada se ha actualizado utilizando una tabla del sistema Oracle? Si no, ¿alguien tiene alguna idea de cómo haría esto sin tener que contactar al tercero?
Desafortunadamente, el formato de fecha predeterminado de Oracle es YYYY-MM-DD. Si necesitas el tiempo solo usa algo como esto:
SELECT owner, mview_name, to_char(LAST_REFRESH_DATE, ''yyyy-mm-dd hh24:mi:ss'') last_refresh_date
FROM all_mviews
WHERE owner = ''FOO''
AND mview_name = ''MV_BAR'';
Parece que doc_180 ya respondió esto en los comentarios, no estoy seguro de por qué no se agregó como la respuesta
SELECT owner, mview_name, last_refresh_date
FROM all_mviews
WHERE owner = <<user that owns the materialized view>>
AND mview_name = <<name of the materialized view>>
Si tiene acceso a las tablas DBA, podría sustituir DBA_MVIEWS
por ALL_MVIEWS
. Eso le permitiría obtener acceso a la información sobre cuándo se actualizó cada vista materializada en lugar de solo el subconjunto de vistas materializadas a las que tiene acceso. Por supuesto, eso probablemente no sea una diferencia que sea particularmente importante en este caso.
Personalmente, uso all_snapshots, y esta información es complementaria a la información de DBA_MVIEWS o ALL_MVIEWS.
select owner, name, last_refresh, error, status, refresh_mode
from all_snapshots
where owner = ''owner'';