jueves, 17 de noviembre de 2016

VERSIONS BETWEEN SCN

Seguimiento de Cambios en los Datos 
Puede suceder que, de algún modo, haya datos en la tabla que se hayan cambiado incorrectamente. Para investigar esto, puede utilizar varias consultas de flashback para ver los datos de filas en puntos concretos en el tiempo. Lo que es más eficaz, puede utilizar la función Consulta de Versiones de Flashback para ver todos los cambios efectuados en una fila durante un período de tiempo. Esta función le permite agregar una cláusula VERSIONS a una sentencia SELECT que especifique un SCN o rango de registro de hora en el que desee ver cambios en los valores de fila. La consulta también puede devolver metadatos asociados como, por ejemplo, la transacción responsable del cambio. 

Es más, después de identificar una transacción errónea, puede utilizar la función Consulta de Versiones de Flashback para identificar otros cambios que haya realizado la transacción. Puede utilizar entonces la función Consulta de Versiones de Flashback para restaurar la tabla a un estado anterior a la realización de los cambios. 

Puede utilizar una consulta en una tabla con una cláusula VERSIONS para producir todas las versiones de todas las filas que existen o que hayan existido entre el momento en que se emitió la consulta y los segundos undo_retention anteriores al momento actual. undo_ retention es un parámetro de inicialización de ajuste automático. Una consulta que incluye una cláusula VERSIONS se conoce como consulta de versiones. Los resultados de una consulta de versiones se comportan como si se hubiera aplicado la cláusula WHERE a las versiones de las filas. La consulta de versiones devuelve versiones de las filas sólo en transacciones. 

SCN (número de cambio del sistema): Oracle Server asigna un SCN (número de cambio del sistema) para identificar los registros de rehacer para cada transacción validada. 


En el ejemplo de la imagen, se recupera el salario del empleado 107 (1). El salario del empleado 107 se aumenta en un 30 por ciento y se valida el cambio (2). Se muestran las diferentes versiones del salario (3). 


La cláusula VERSIONS no cambia el plan de la consulta. Por ejemplo, si ejecuta una consulta en una tabla que utilice el método de acceso a índices, la misma consulta de la misma tabla con una cláusula VERSIONS continúa utilizando el método de acceso a índices. Las versiones de las filas devueltas por la consulta de versiones son versiones de las filas en las transacciones. La cláusula VERSIONS no afecta al comportamiento transaccional de una consulta. Esto significa que una consulta en una tabla con una cláusula VERSIONS sigue heredando el entorno de la consulta de la transacción en curso.  

La cláusula VERSIONS por defecto se puede especificar como VERSIONS BETWEEN {SCN|TIMESTAMP} MINVALUE AND MAXVALUE. 

La cláusula VERSIONS es una extensión SQL únicamente para consultas. Puede tener operaciones DML y DDL que utilicen una cláusula VERSIONS dentro de las subconsultas. La consulta de versiones recupera todas las versiones validadas de las filas seleccionadas. Los cambios realizados por la transacción activa actual no se devuelven. La consulta de versiones recupera todas las encarnaciones de las filas. Esto significa en esencia que las versiones devueltas incluyen las versiones suprimidas y subsiguientes reinsertadas de las filas. 

Ejemplo de Obtención de Versiones de Filas 
El acceso a filas para una consulta de versiones se puede definir en una de las siguientes dos categorías: 
Acceso a filas basado en ROWID: En el caso del acceso basado en ROWID, se devuelven todas las versiones de los ROWID independientemente del contenido de las filas. Básicamente, esto significa que se devuelven todas las versiones de la ranura del bloque indicado por el ROWID. 

Acceso a todas las demás filas: Para el acceso a todas las demás filas, se devuelven todas las versiones de las filas. 


Cláusula VERSIONS BETWEEN 
Puede utilizar la cláusula VERSIONS BETWEEN para recuperar todas las versiones de las filas que existen o que han existido entre el momento en que se emitió la consulta y un punto pasado en el tiempo. 

Si el momento de retención de deshacer es mejor que el momento de límite inferior/SCN de la cláusula BETWEEN, la consulta recupera únicamente las versiones hasta el momento de retención de deshacer. El intervalo de tiempo de la cláusula BETWEEN se puede especificar como intervalo SCN o como intervalo de reloj. Este intervalo de tiempo se cierra en los límites inferior y superior. 

En el ejemplo, se recuperan los cambios de salario de Lorentz. El valor NULL para END_DATE para la primera versión indica que se trataba de la versión existente en el momento de la consulta. El valor NULL para START_DATE para la última versión indica que esta versión se creó en un momento anterior a la retención de deshacer. 
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?