Si tienes una base de datos con papelera de reciclaje, y borras una tabla que no esté en el tablespace SYSTEM, esta tabla permanece en la papelera de reciclaje. Entonces se puede restaurar la tabla de allí.
Si esto no te gusta y quieres borrar una tabla completamente, se puede hacerlo con DROP TABLE ... PURGE. Aquí está un ejemplo que probé en Oracle 11.2.0.2.7:
Antes de empezar, verifiqué que mi base de datos empleaba la papelera de reclicaje:
SQL> select value from v$parameter
2 where name = 'recyclebin'
3 /
VALUE
----------
on
SQL>
Creé una tabla en el tablespace USERS:
SQL> create table tab1
2 (col1 number)
3 tablespace users
4 /
Tabla creada.
SQL>
Borré la tabla y verifiqué que estaba en la papelera de reciclaje después:
SQL> drop table tab1
2 /
Tabla borrada.
SQL> select original_name from recyclebin
2 /
ORIGINAL_NAME
--------------------------------
TAB1
SQL>
Restauré la tabla:
SQL> flashback table tab1 to before drop
2 /
Flashback terminado.
SQL> desc tab1
Nombre ?Nulo? Tipo
-------------------------- -------- ------------------
COL1 NUMBER
SQL>
Borré la tabla por segunda vez con el comando DROP TABLE ... PURGE:
SQL> drop table tab1 purge
2 /
Tabla borrada.
SQL>
Esta vez la tabla no estaba en la papelera de reciclaje:
SQL> select original_name from recyclebin
2 /
ninguna fila seleccionada
SQL>
Así cuando intenté a restaurar la tabla, tenía el error siguiente:
SQL> flashback table tab1 to before drop
2 /
flashback table tab1 to before drop
*
ERROR en linea 1:
ORA-38305: el objeto no esta en la papelera de
reciclaje
SQL>
Muchas gracias por tu explicacion, es clara y didactica
ResponderEliminar