Oracle Live

02/04/2016

FDA – Flashback Data Archive

Filed under: Backup & Recovery — mogukiller @ 1:19 am

Flashback Data Archive te permite mantener un historico de como han cambiado los datos en una tabla. Al contrario que otras herramientas de flashback, el FDA no extrae los datos de la información de redo de los ficheros de flashback. Con FDA la información de los cambios se almacena en un tablespace aparte.

Version: 11.2.0.4

1.- Resticciones de la tabla:
		a) La tabla no puede contener campos LOB.

2.- Creamos un tablespace para FDA		
		CREATE TABLESPACE FLBCK DATAFILE '/export/oracle/app/oracle/oradata/PRUEBA/flbck_dat01.dbf' SIZE 100M;
		
--------------
PASOS
--------------

1.- Creamos FLASHBACK ARCHIVE
		
		CREATE FLASHBACK ARCHIVE DEFAULT FLA1 TABLESPACE FLBCK QUOTA 100M RETENTION 1 DAY;
				
	1.1- Podemos modificar los FLASHBACK ARCHIVE files:
	
		-- Modificamos la cuota sobre el TS.
		ALTER FLASHBACK ARCHIVE FLA1 ADD TABLESPACE FLBCK QUOTA 5G;
		
		-- Modificamos el tiempo de retencion
		ALTER FLASHBACK ARCHIVE FLA1 MODIFY RETENTION 2 YEARS;
		
		-- Purgamos datos antiguos
		ALTER FLASHBACK ARCHIVE FLA1 PURGE BEFORE ( SYSTEMSTAMP - INTERVAL '1' DAY);
		ALTER FLASHBACK ARCHIVE FLA1 PURGE UNTIL SCN 12234212;
		
		-- Indicamos el fichero de flashback por defecto. NOTA: tb podemos incluir DEFAULT a la hora de crearlo.
		ALTER FLASHBACK ARCHIVE FLA1 SET DEFAULT;	
		
	1.2- Borramos el flashback archive file y los datos historicos que contenga.
	
		DROP FLASHBACK ARCHIVE FLA1;
		

2.- Habilitamos / Deshabilitamos FLASHBACK ARCHIVE.		

	2.1- Habilitamos
		
		ALTER TABLE TPCC.FL_TABLE FLASHBACK ARCHIVE;
		ALTER TABLE TPCC.FL_TABLE FLASHBACK ARCHIVE FLA1;
	
	2.2- Deshabilitamos
		
		ALTER TABLE TPCC.USUARIOS NO FLASHBACK ARCHIVE;
	
	2.3- Ejemplo
		
		SELECT COUNT(*) FROM FL_TABLE AS OF TIMESTAMP TO_TIMESTAMP('2015/08/27 10:25:00','YYYY/MM/DD HH24:MI:SS');
		SELECT COUNT(*) FROM FL_TABLE AS OF SCN 14952807;
		SELECT ID_PRUEBA, VALOR FROM FL_TABLE VERSIONS BETWEEN SCN 14965671 AND 14965772 WHERE ID_PRUEBA=51;	<<< Muestra los valores que tenia una columna entre determinados instantes
		
3.- Vistas asociadas
	
	*_FLASHBACK_ARCHIVE_TABLES
	*_FLASHBACK_ARCHIVE_TS
	*_FLASHBACK_ARCHIVE

COL FLASHBACK_ARCHIVE_NAME FOR A30
COL TABLESPACE_NAME FOR A30
SELECT FLASHBACK_ARCHIVE_NAME, TABLESPACE_NAME, QUOTA_IN_MB FROM DBA_FLASHBACK_ARCHIVE_TS;
/*
FLASHBACK_ARCHIVE_NAME         TABLESPACE_NAME                QUOTA_IN_MB
------------------------------ ------------------------------ ----------------------------------------
FLA1                           FLBCK                          100
*/

COL FLASHBACK_ARCHIVE_NAME FOR A30
SELECT OWNER_NAME, TABLE_NAME, FLASHBACK_ARCHIVE_NAME, ARCHIVE_TABLE_NAME, STATUS FROM dba_FLASHBACK_ARCHIVE_TABLES
/*
OWNER_NAME                     TABLE_NAME                     FLASHBACK_ARCHIVE_NAME         ARCHIVE_TABLE_NAME                                    STATUS
------------------------------ ------------------------------ ------------------------------ ----------------------------------------------------- -------------
TPCC                           FL_TABLE                       FLA1                           SYS_FBA_HIST_27342                                    ENABLED
*/


4.- Laboratorio

 - Hemos insertado en la tabla FL_TABLA 200 registros a las 10:21:32
 
 BEGIN 

	FOR I IN 1..200 LOOP
		INSERT INTO FL_TABLE VALUES (I, SYSDATE, DBMS_RANDOM.STRING('I',50));
	END LOOP;
	COMMIT;
END;
/

10:21:32 PRUEBA SQL>SELECT COUNT(*) FROM FL_TABLE;
/*
  COUNT(*)
----------
       200
 */
 - Ahora borramos un rango de registros
 
 DELETE FROM FL_TABLE WHERE ID_PRUEBA BETWEEN 1 AND 50;
 
 10:27:50 PRUEBA SQL>SELECT COUNT(*) FROM FL_TABLE;
/*
  COUNT(*)
----------
       150
*/

- Validamos el flashback.

10:30:25 PRUEBA SQL>SELECT COUNT(*) FROM FL_TABLE AS OF TIMESTAMP TO_TIMESTAMP('2015/08/27 10:25:00','YYYY/MM/DD HH24:MI:SS');
/*
  COUNT(*)
----------
       200
*/	   
SELECT * FROM FL_TABLE AS OF TIMESTAMP TO_TIMESTAMP('2015/08/27 10:25:00','YYYY/MM/DD HH24:MI:SS') WHERE ID_PRUEBA = 10;
/*
 ID_PRUEBA FECHA    VALOR
---------- -------- --------------------------------------------------
        10 27/08/15 DLPQLQVZQRXJMNLQDHJLJGMBEZTGIXOYCBLPWAVZHABYDHKUGK
*/

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: