La Papelera de Reciclaje de Oracle10g
La Papelera de Reciclaje de Oracle10g
La Papelera de Reciclaje de Oracle10g
Fecha de creacin: lunes 24 de Octubre de 2005. Versin: 1.0. Pruebas realizadas en Oracle10g Release 1 sobre Windows XP Professional 32 bits.
Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es). Queda prohibida la edicin o modificacin de este documento sin permiso de su autor. Se permite, sin embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga ntegro y se haga mencin expresa a su autor.
Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es). Queda prohibida la edicin o modificacin de este documento sin permiso de su autor. Se permite, sin embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga ntegro y se haga mencin expresa a su autor.
Comando PURGE
La eliminacin de los objetos residentes en la papelera se puede hacer manualmente a travs de este comando. Solo podrn borrar los objetos de la papelera los propietarios, aquellos con permiso SYSDBA o DROP ANY. Las variantes que existen son:
COMANDO
PURGE TABLE nombre_tabla;
EXPLICACIN
Elimina la tabla indicada de la papelera. El nombre de la tabla puede ser el nombre original o el renombrado. Elimina el ndice indicado de la papelera. El nombre del ndice es el nombre original y no el renombrado. Elimina todos los objetos (del usuario que lanza la orden) de la papelera. Elimina todos los objetos (de todos los usuarios) de la papelera. Solo un SYSDBA puede lanzar este comando. Elimina todos los objetos (del usuario) de la papelera que residan en el tablespace indicado. Elimina todos los objetos de la papelera que residan en el tablespace indicado y pertenezcan el usuario indicado.
PURGE RECYCLEBIN;
PURGE DBA_RECYCLEBIN;
En el ltimo caso se usa el comando FLASHBACK TABLE nombre_tabla TO BEFORE DROP [RENAME TO nuevo_nombre_tabla]. El nombre de la tabla especificado puede ser el nombre original o el nombre dado por Oracle10g al ubicarla en la papelera. Si existe ms de una tabla en la papelera con el mismo nombre original, este comando restaurara la borrada ms recientemente. Para indicar una tabla concreta hay que usar el nombre originado por Oracle. Por ltimo, se puede indicar el nuevo nombre que tendr la tabla despus de ser recuperada.
Ejemplo completo
Oracle10g Release 1. Creamos una tabla cualquiera llama T1: SQL> create table t1 (c number(1)) tablespace users; Tabla creada. Comprobamos si existe alguna tabla borrada en la papelera: SQL> select * from recyclebin; ninguna fila seleccionada Borramos la tabla T1: SQL> drop table t1; Tabla borrada. Comprobamos que la tabla est ahora en la papelera: SQL> select object_name, original_name from recyclebin; OBJECT_NAME ORIGINAL_NAME ------------------------------ -------------------------------BIN$ACEfotX6TRqgiRnY6LN6nQ==$0 T1 Volvemos a crear de nuevo la tabla T1 comprobando que la borr de verdad: SQL> create table t1 (c number(1)) tablespace users; Tabla creada. La volvemos a borrar: SQL> drop table t1; Tabla borrada. Comprobamos que ahora estn las dos tablas en la papelera: SQL> select object_name, original_name from recyclebin; OBJECT_NAME ORIGINAL_NAME ------------------------------ ------------BIN$ACEfotX6TRqgiRnY6LN6nQ==$0 T1 BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0 T1 Intentamos acceder a alguna de las tablas borradas en seleccin e insercin:
Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es). Queda prohibida la edicin o modificacin de este documento sin permiso de su autor. Se permite, sin embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga ntegro y se haga mencin expresa a su autor.
-- o SHOW RECYCLEBIN;
SQL> select * from "BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0"; ninguna fila seleccionada SQL> insert into "BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0" values (1); insert into "BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0" values (1) * ERROR en lnea 1: ORA-38301: no se puede realizar DDL/DML en objetos de la papelera de reciclaje Borramos la tabla T1 (borra la T1 ms antigua): SQL> purge table t1; Tabla depurada. SQL> select object_name, original_name from recyclebin; OBJECT_NAME ORIGINAL_NAME ------------------------------ ------------BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0 T1 Volvemos a crear la tabla T1: SQL> create table t1 (c number(1)) tablespace users; Tabla creada. Ahora la borramos sin dejarla ir a la papelera de reciclaje y lo comprobamos: SQL> drop table t1 PURGE; Tabla creada. SQL> select object_name, original_name from recyclebin; OBJECT_NAME ORIGINAL_NAME ------------------------------ ------------BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0 T1 Ahora la borramos sin dejarla ir a la papelera de reciclaje y lo comprobamos: SQL> drop table t1 PURGE; Tabla creada. SQL> select object_name, original_name from recyclebin; OBJECT_NAME ORIGINAL_NAME ------------------------------ ------------BIN$ZdHqVQ+nS0OJsW83y8BEoQ==$0 T1 Por ltimo, restauramos la tabla T1 desde la papelera de reciclaje (si existiese ya una tabla con el nombre T1 obtendramos el error ORA-38312: el nombre original lo ha utilizado un objeto existente). En este caso usaramos la clusula vista anteriormente RENAME TO nuevo_nombre: SQL> flashback table T1 to before drop; Flashback terminado. SQL> select object_name, original_name from recyclebin; ninguna fila seleccionada
Este documento ha sido elaborado por Infor Consult Soluciones, SL (http://www.inforconsult.com.es). Queda prohibida la edicin o modificacin de este documento sin permiso de su autor. Se permite, sin embargo, imprimir y ceder este documento a terceros siempre que el contenido se mantenga ntegro y se haga mencin expresa a su autor.