• Categoría: Oracle
  • Visto: 26076

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Oracle

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