flashback partei

26
Mª Carmen Gabarrón Flashback

Upload: mar100gar

Post on 16-Apr-2015

40 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Flashback ParteI

Mª Carmen Gabarrón

Flashback

Page 2: Flashback ParteI

Flashback

Flashback

La operación de flashback de base de datos:

Funciona como un botón de rebobinado (vuelta atrás) en la base

de datos

Se puede utilizar en casos de corrupción de datos lógicos

provocada por los usuarios

Flashback Query está implementado usando las estructuras de undo (rollback) que Oracle utiliza habitualmente para el soporte transaccional

Page 3: Flashback ParteI

Flashback

Flashback. TiposLa tecnología de flashback permite consultar versiones anteriores de objetos de esquema, consultar datos históricos o realizar análisis de cambios. Cada transacción genera de forma lógica una nueva versión de la base de datos. Con la tecnología de flashback, puede navegar por estas versiones para buscar un error y su causa:

1. Consulta de flashback o Consultar todos los datos en un punto en el tiempo determinado.

2. Consulta de flashback de versioneso Ver todas las versiones de una fila entre dos horas o dos SCN.

o Ver las transacciones que cambiaron la fila.

3. Consulta de flashback de transaccioneso Ver todos los cambios que ha realizado una transacción.

Page 4: Flashback ParteI

Flashback

Flashback. Tipos

4. Flashback de borrado

Restaura las tablas borradas por accidente.

5. Flashback de tabla

Recupera una tabla a un punto en el tiempo pasado sin tener que restaurar una copia de seguridad.

6. Flashback de base de datos

La función de flashback de base de datos devuelve la base de datos a un punto anterior en el tiempo al deshacer todos los cambios realizados desde ese momento.

Page 5: Flashback ParteI

Flashback

• UNDO_MANAGEMENT

AUTO o NULL, permite la gestión automática de deshacer. (Valor predeterminado).

MANUAL, modo de gestión manual.

• UNDO_TABLESPACE

Especifica el nombre de un tablespaces undo. Se utiliza únicamente cuando la base de datos tiene múltiples tablespaces de deshacer y desea seleccionar uno. Opcional, y es válido únicamente en automático deshacer modo de gestión.

• UNDO_RETENTION Especifica cuanto tiempo (en segundos) las transacciones confirmadas

deben ser retenidas en los segmentos de undo antes de ser sobrescritas. Por defecto 900 segundos, 15 minutos).

Flashback. Parámetros

Page 6: Flashback ParteI

Flashback

select name, value from v$parameter where name like 'undo%';

Flashback. Parámetros

UNDO_MANAGEMENT debe estar en modo AUTO para usar las prestaciones “flashback”

Page 7: Flashback ParteI

Flashback

1. Consulta de flashback Consultar todos los datos en un punto en el tiempo determinado.

2. Consulta de flashback de versiones

3. Consulta de flashback de transacciones

4. Flashback de borrado

5. Flashback de tabla

6. Flashback de base de datos

Page 8: Flashback ParteI

Flashback

1. Consulta de Flashback.

AS OF permite recuperar la versión de las filas a un momento en el tiempo o SCN particular.

A la orden SELECT se añade la cláusula AS OF.

Page 9: Flashback ParteI

Flashback

1. Consulta de Flashback.

Al utilizar la cláusula AS OF de la sentencia SELECT, puede especificar la fecha y hora para el que desea visualizar los datos. Resulta útil para analizar una discrepancia en los datos.

Nota: A la cláusula AS OF le pueden seguir TIMESTAMP o SCN.

Page 10: Flashback ParteI

Flashback

1. Consulta de Flashback. Ejemplo

Devolvemos el salario del empleado 200 al que tenía en la fecha y hora indicas.

Page 11: Flashback ParteI

Flashback

Aunque con la consulta de flashback sólo podemos ver los datos que había es posible recuperar estos datos usando un cursor.

1. Consulta de Flashback.

DECLAREcursor c_flash IS select * from emp

as of timestamp to_date('29/01/13 07:23', 'dd/mm/yy HH:MI');r_emp emp%ROWTYPE;BEGINOPEN c_flash;LOOP

fetch c_flash into r_emp;exit when c_flash%notfound;insert into emp values (r_emp.empno, r_emp.ename, r_emp.job, r_emp.mgr,

r_emp.hiredate, r_emp.sal, r_emp.comm, r_emp.deptno);END LOOP;

CLOSE c_flash;commit;

END;/

Page 12: Flashback ParteI

Flashback

Para ejecutar “flashback query” es necesario:

El privilegio SELECT sobre los objetos,

El privilegio FLASHBACK sobre los objetos, o bien FLASHBACK ANY TABLE (permite ejecutarla sobre cualquier tabla, vista o vista materializada en cualquier esquema).

1. Consulta de Flashback.

Page 13: Flashback ParteI

Flashback

1. Consulta de flashback

2. Consulta de flashback de versioneso Ver todas las versiones de una fila entre dos horas o dos SCN.

o Ver las transacciones que cambiaron la fila.

3. Consulta de flashback de transacciones

4. Flashback de borrado

5. Flashback de tabla

6. Flashback de base de datos

Page 14: Flashback ParteI

Flashback

2. Consulta de Flashback de versiones

VERSIONS permite recuperar múltiples versiones confirmadas de las filas entre dos SCN o momentos en el tiempo.

MINVALUE y MAXVALUE se refieren a los datos más antiguo y más reciente respectivamente.

A la orden SELECT se añade la cláusula VERSIONS.

Permite recuperar todas las versiones de las filas existentes entre dos puntos en el tiempo o dos SCN

Page 15: Flashback ParteI

Flashback

2. Consulta de Flashback de versiones

Page 16: Flashback ParteI

Flashback

• Puede realizar consultas a partir de un intervalo de tiempo o un

rango de números de cambio del sistema (SCN).

• Las filas devueltas por la consulta de flashback de versiones

representan un historial de cambios de las filas entre transacciones.

2. Consulta de Flashback de versiones

Page 17: Flashback ParteI

Flashback

• Sólo recupera las incidencias confirmadas de las filas. Las versiones

no confirmadas de las filas de una transacción no se muestran. Las

filas devueltas también incluyen las versiones suprimidas y las

posteriormente insertadas en dichas filas.

• Puede utilizase para recuperar el historial de filas. Ofrece una forma

de auditar las filas de una tabla y recuperar información sobre las

transacciones que han afectado a las filas.

2. Consulta de Flashback de versiones

Page 18: Flashback ParteI

Flashback

select DNAME, DEPTNO, versions_XID, versions_starttimeversions_endtime, versions_startscn, versions_endscn,

versions_operationfrom DEPTVERSIONS BETWEEN timestamp TO_DATE ('29/01/13 12:00' ,

'DD/MM/YY HH24:MI') AND SYSDATE;

2. Consulta de Flashback de versiones

Pueden usarse las columnas ocultas:

versions_starttime

versions_endtime

versions_startscn

versions_endscn

versions_XID versions_operation

Page 19: Flashback ParteI

Flashback

• La cláusula VERSIONS no se puede utilizar para realizar consultas en:

• Tablas externas

• Tablas temporales

• Tablas fijas

• Vistas

• La cláusula VERSIONS no puede abarcar comandos DDL. Si se modificó la estructura de la tabla, la consulta deja de producir filas cuando alcanza la hora del pasado en que se cambió la estructura.

2. Consulta de Flashback de versiones. Limitaciones.

Page 20: Flashback ParteI

Flashback

1. Consulta de flashback

2. Consulta de flashback de versiones

3. Consulta de flashback de transacciones

• Ver todos los cambios que ha realizado una transacción.

4. Flashback de borrado

5. Flashback de tabla

6. Flashback de base de datos

Page 21: Flashback ParteI

Flashback

3. Consulta de flashback de transacciones.

• La consulta de flashback de transacciones se utiliza para ver los cambios realizados en la base de datos a nivel de transacción.

• Permite diagnosticar los problemas de la base de datos y realizar análisis y auditorías de transacciones.

• La vista flashback_transaction_query almacena las sentencias SQL necesarias para deshacer los cambios realizados por una transacción concreta o durante un período de tiempo específico.

Page 22: Flashback ParteI

Flashback

La vista FLASHBACK_TRANSACTION_QUERY muestra información acerca de las transacciones realizadas en la bd.

• XID Identificador de transacción• START_SCN (NUMBER) Número SCN de inicio de la transacción (system

change number )• START_TIMESTAMP (DATE) Momento de inicio de la transacción• COMMIT_SCN (NUMBER) SCN de validación de la transacción (nulo para

aquellas que estén activas)• COMMIT_TIMESTAMP (DATE) Tiempo de validación de la transacción

(nulo para aquellas que estén activas)• LOGON_USER Usuario conectado

3. Consulta de flashback de transacciones.

Page 23: Flashback ParteI

Flashback

• UNDO_CHANGE# Undo SCN (1 o superior)• OPERATION Operación realizada (D – Delete, I – Insert, U – Update o B – desconocida)

• TABLE_NAME Nombre de la tabla a la que se le aplica la operación DML

• TABLE_OWNER Propietario de la tabla• ROW_ID Rowid de la fila modificada• UNDO_SQL SQL para deshacer la operación DML indicada por OPERATION

3. Consulta de flashback de transacciones.

Page 24: Flashback ParteI

Flashback

select undo_change#, operation, table_owner, table_name, row_id, undo_sql

from flashback_transaction_queryWHERE LOGON_USER='CARMEN' AND TABLE_NAME ='DEPT';

3. Consulta de flashback de transacciones.

Page 25: Flashback ParteI

Flashback

UPDATE DEPTSET LOC='Cartagena'WHERE DEPTNO=60;COMMIT;

Insert into dept values (70, 'Promoción', 'Cádiz');

delete from deptwhere deptno=50;

commit;

3. Consulta de flashback de transacciones.

select DNAME, DEPTNO, versions_XID, versions_starttime

versions_endtime, versions_startscn, versions_endscn, versions_operation

from DEPTVERSIONS BETWEEN timestamp TO_DATE

('29/01/13 12:20:00' , 'DD/MM/YY HH24:MI:ss') AND sysdate;

Identificamos la transacción

Page 26: Flashback ParteI

Flashback

select XID, undo_change#, operation, table_owner, table_name, row_id, undo_sql

from flashback_transaction_queryWHERE XID= '110009008B0A0000'

3. Consulta de flashback de transacciones.

Órdenes que nos permiten anular la transacción