Inicio > Oracle > Recuperar una tabla luego de ser Eliminada BD – Oracle – FlashBack

Recuperar una tabla luego de ser Eliminada BD – Oracle – FlashBack


Imaginemos el siguiente Panorama:

Tenemos una tabla “A”, luego la eliminamos (Drop)

Creamos de nuevo una tabla “A”, la volvemos a eliminar (Drop)

Creamos de nueva cuenta una tabla “A” y la volvemos a eliminar (Drop).

Posteriormente se nos solicita que debemos de recuperar la Tabla A, la primera que creamos. ¿Como lo haríamos?

Oracle maneja una papelera en la cual se guarda todo lo que eliminamos a este se le llama recyclebin 

Y desde ahi podriamos recuperar la tabla que deseamos usando el FlashBack Table: Recupera tablas eliminadas.

Como resolverlo:

 

Forma 1: ( Ineficiente)

Para recuperar una tabla con FlashBack es de la siguientes maneras

flashback table "NombreTabla" to before drop;
flashback table "NombreTabla" to before drop rename to "NuevoNombre";

Si queremos recuperar la Tabla A que creamos por primera vez, tendriamos que hacer lo siguiente:

flashback table A to before drop rename to A3;
flashback table A to before drop rename to A2;
flashback table A to before drop;

Y ahi ya tendriamos recuperado la Tabla A, luego posterioremente eliminamos las tablas A2 y A3.
Solucion 2:

Utilizando el RECYCLEBIN corremos la siguiente query para ver los elementos eliminados.

SELECT object_name, original_name, type, droptime, base_object FROM RECYCLEBIN;

y nos devolvera lo siguiente:

OBJECT_NAME                    ORIGINAL_NAME   TYPE
------------------------------ --------------- ----------
DROPTIME            BASE_OBJECT
------------------- -----------
BIN$4PK0jfk4R1uFiZLIQ7HHIg==$0 EMP_FLASH       TABLE
2007-08-30:16:56:31       53938
BIN$C+EsfasdiwJjhsSjshdfHSS=$0 EMP_FLASH       TABLE
2007-08-30:16:55:21       53934
BIN$C+EJy7/qThipip4yLQM8fQ==$0 EMP_FLASH       TABLE
2007-08-30:16:54:59       53934

Ahi podemos observar que hay 3 elementos eliminados y son de la clase Table por lo cual son nuestras 3 tablas llamadas A. Pero tienen nombres raros el “object name”, asi que en base a este nombre recuperaremos nuestra tabla A, como sabemos que tabla es la indicada, en base a la fecha y hora de eliminacion, por lo cual la de fecha mas antigua es la tabla correcta en este caso. La de nombre

BIN$C+EJy7/qThipip4yLQM8fQ==$0

Por lo cual para recuperar la tabla tendriamos que hacer lo siguiente:

FLASHBACK TABLE "BIN$C+EJy7/qThipip4yLQM8fQ==$0" TO BEFORE DROP RENAME TO A;
Y listo tenemos nuestra Tabla A de regreso.

Para este ejemplo se utilizo el Usuario Scott

SQL> ALTER USER SCOTT ACCOUNT UNLOCK;
sqlplus scott/tiger
Categorías:Oracle
  1. febrero 10, 2014 a las 10:38 am

    excelente dato!

  2. Anónimo
    febrero 26, 2014 a las 8:13 am

    mejor que excelente amigo gracias me salvaste .

  3. febrero 26, 2014 a las 8:17 am

    gracias te pasaste

  4. Anónimo
    octubre 8, 2014 a las 11:52 am

    Excelente

  1. No trackbacks yet.

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

A %d blogueros les gusta esto: