Desde Oracle 10g se incorpora una funcionalidad muy interesante, Recycle Bin. Recycle Bin posibilita la recuperación de objetos borrados con el estamento DROP, es una funcionalidad con ciertas similitudes a la papelera de reciclaje de Windows.
Cuando borramos un objeto con el estamento DROP Oracle renombra el objeto borrado y todos sus objetos dependientes, vistas, triggers, índices, etc. usando el preficjo BIN$.
La funcionalidad FLASHBACK DROP nos va a permitir recuperar objetos borrados con el estamento DROP desde la Recycle Bin, además podremos realizar tareas de mantenimiento de la RECYCLEBIN.
La vista RECYCLEBIN contiene todos los elementos borrados.
Vamos A hacer un SELECT para ver el contenido.
SQL> SELECT * FROM RECYCLEBIN;
¿Cómo recuperar una tabla borrada?
Para recuperar desde la RECYCLE BIN usaremos la funcionalidad FLASHBACK DROP, la sintaxis es la siguiente:
FLASHBACK TABLE nombre_objeto TO BEFORE DROP;{ctype_code_a}
Donde nombre_objecto es el nombre original del objeto borrado.
En este ejemplo vamos a recuperar la tabla CLIENTES que se ha borrado de forma accidental.
Nos conectamos a la base de datos con SQLPLUS y el usuario OWNER de la tabla.
Primero vamos a comprobar que la tabla no existe.
{ctype_code_a}SQL> SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME = ‘CLIENTES’;
no rows selected
Comprobado la tabla CLIENTES no existe, realizamos un SELECT sobre la vista REYCLEBIN para comprobar que la tabla CLIENTES esta en la papelera de reciclaje.
SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE FROM RECYCLEBIN;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ -------------------- ------------
BIN$lS45aVDfHAfgRAALXeBFkQ=={ctype_code_a}SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE FROM RECYCLEBIN;
OBJECT_NAME ORIGINAL_NAME TYPE
------------------------------ -------------------- ------------
BIN$lS45aVDfHAfgRAALXeBFkQ==$0 CLIENTES TABLE{/ctype_code_a} CLIENTES TABLE
Bien, vamos a recuperar la tabla CLIENTES.
SQL> FLASHBACK TABLE CLIENTES TO BEFORE DROP;
Flashback complete.
Ya tenemos la tabla CLIENTES restaurada, ahora comprobamos que la tabla existe.
SQL> SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME = 'CLIENTES';
OWNER TABLE_NAME
------------------------------ ------------------------------
LUIS CLIENTES
Perfecto, ya tenemos nuestra tabla recuperada.
Si queremos recuperarla con otro nombre utilizaremos el comando FLASHBACK junto con la cláusula adicional RENAME TO.
Ejemplo:
SQL> FLASHBACK TABLE CLIENTES TO BEFORE DROP
RENAME TO CLIENTES_2;
Flashback complete.
Comprobamos,
SQL> SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'LUIS';
OWNER TABLE_NAME
------------------------------ ------------------------------
LUIS CLIENTES_2
{ctype_link} Artículos relacionado. Recycle Bin – Mantenimiento de la papelera de reciclaje en Oracle.{ctype_link}
Compatibilidad- Oracle 10g y Oracle 11g