26/11/2019
En el mundo de la administración de bases de datos, un borrado accidental puede ser una de las peores pesadillas. Afortunadamente, desde la versión 10g, Oracle introdujo una red de seguridad invaluable: la Papelera de Reciclaje (Recycle Bin). Este mecanismo, similar a la papelera de nuestros sistemas operativos, evita que un comando `DROP` sea una sentencia de muerte inmediata para nuestros datos. Sin embargo, esta protección tiene un coste: el espacio. Aquí es donde entra en juego el poderoso comando PURGE, la herramienta definitiva para liberar ese espacio y eliminar objetos de forma permanente. En este artículo, exploraremos a fondo cómo funciona la papelera, cómo gestionarla y cómo dominar el comando `PURGE` para un mantenimiento óptimo de la base de datos.

¿Qué es Exactamente la Papelera de Reciclaje de Oracle?
La Papelera de Reciclaje es un contenedor de datos lógicos donde residen todos los objetos eliminados (como tablas e índices) antes de ser borrados permanentemente. Cuando ejecutas un comando `DROP TABLE`, Oracle no elimina físicamente la tabla y sus datos. En su lugar, realiza las siguientes acciones:
- Renombra el objeto con un nombre único generado por el sistema, que típicamente comienza con `BIN$...`.
- Mueve lógicamente este objeto renombrado a la Papelera de Reciclaje.
- Todos los objetos dependientes, como índices, restricciones y LOBs, también son renombrados y movidos junto con la tabla.
El punto más crucial a entender es que los objetos dentro de la papelera siguen ocupando el mismo espacio en disco que ocupaban cuando estaban activos. Esto significa que si no se gestiona, la papelera puede consumir una cantidad significativa de almacenamiento, afectando el rendimiento y la capacidad de tu base de datos.
Primeros Pasos: Interactuando con la Papelera
Antes de purgar nada, es fundamental saber cómo verificar el estado y el contenido de tu papelera.
¿Está Habilitada la Papelera de Reciclaje?
Por defecto, la Papelera de Reciclaje está activada. Para confirmarlo, puedes conectarte como un usuario con privilegios (como `SYSDBA`) y ejecutar el siguiente comando:
show parameter recyclebin;Si deseas activarla o desactivarla, puedes usar los siguientes comandos. El cambio se aplicará a las nuevas sesiones que se conecten a la base de datos:
-- Para activar ALTER SYSTEM SET recyclebin=on DEFERRED; -- Para desactivar ALTER SYSTEM SET recyclebin=off DEFERRED;Advertencia: Si desactivas la papelera, cualquier comando `DROP` será inmediato y permanente, sin posibilidad de recuperación a través de este mecanismo.
Consultando el Contenido de la Papelera
Para ver qué objetos has eliminado y ahora residen en tu papelera, puedes usar varias vistas del diccionario de datos:
- Para el usuario actual: Puedes usar la vista `USER_RECYCLEBIN` o su sinónimo más corto, `RECYCLEBIN`.
SELECT object_name, original_name, type, droptime FROM RECYCLEBIN;SELECT owner, object_name, original_name, type FROM DBA_RECYCLEBIN;Estas consultas te mostrarán el nombre generado por el sistema (`object_name`), el nombre original del objeto (`original_name`), el tipo de objeto y la fecha en que fue eliminado.
El Comando PURGE: La Eliminación Definitiva
Una vez que estás seguro de que ya no necesitas un objeto que está en la papelera, es hora de usar el comando `PURGE`. Recuerda que esta acción es irreversible. No se puede hacer un `ROLLBACK` de un `PURGE`, y el objeto no podrá ser recuperado con `FLASHBACK`.

Purgar un Objeto Específico
Si quieres eliminar permanentemente una sola tabla o índice, tienes dos formas de hacerlo:
- Usando el nombre original: Si solo existe una versión de la tabla 'EMPLEADOS' en tu papelera, puedes ejecutar:
- Usando el nombre generado por el sistema: Para ser absolutamente preciso y eliminar una versión específica, usa el nombre `BIN$...` que obtuviste de la vista `RECYCLEBIN`.
PURGE TABLE "BIN$JWva26/9xEPgPRaW/qQoRw==$0";
PURGE TABLE EMPLEADOS;Si has eliminado varias tablas con el mismo nombre, este comando purgará la versión que lleva más tiempo en la papelera.
Al purgar una tabla, todos sus objetos dependientes (índices, particiones, etc.) también son eliminados permanentemente.
Vaciar Completamente la Papelera de Reciclaje
A menudo, querrás limpiar todo el contenido para recuperar una gran cantidad de espacio.
- Para tu propio usuario: El siguiente comando vaciará todos los objetos de tu papelera personal.
PURGE RECYCLEBIN;PURGE DBA_RECYCLEBIN;Purgado Selectivo por Tablespace
En escenarios más avanzados, es posible que solo quieras liberar espacio en un tablespace específico. El comando `PURGE` ofrece esta flexibilidad.
- Purgar todos los objetos de un tablespace: Elimina todos los objetos de la papelera que residen en el tablespace `USERS`.
PURGE TABLESPACE USERS;PURGE TABLESPACE USERS USER SCOTT;Tabla Comparativa de Comandos PURGE
| Comando | Alcance | Permisos Requeridos | Uso Típico |
|---|---|---|---|
PURGE TABLE nombre_tabla; | Un objeto específico del usuario actual. | Ser propietario del objeto. | Eliminar permanentemente una tabla que ya no se necesita. |
PURGE RECYCLEBIN; | Todos los objetos de la papelera del usuario actual. | Usuario estándar. | Limpieza y recuperación de espacio personal. |
PURGE DBA_RECYCLEBIN; | Todos los objetos de todas las papeleras de la base de datos. | SYSDBA. | Mantenimiento global, liberar espacio masivamente. |
PURGE TABLESPACE nombre_ts; | Todos los objetos de la papelera que residen en un tablespace específico. | SYSDBA o privilegios sobre el tablespace. | Liberar espacio urgentemente en un tablespace crítico. |
El Lado Opuesto: Recuperar con FLASHBACK
La razón de ser de la Papelera de Reciclaje es permitir la recuperación. Antes de purgar, siempre considera si podrías necesitar el objeto de nuevo. El comando FLASHBACK TABLE es el antídoto para un `DROP` accidental.
FLASHBACK TABLE EMPLEADOS TO BEFORE DROP;Este comando restaurará la tabla `EMPLEADOS` (junto con sus índices y restricciones dependientes) desde la papelera a su estado activo, como si nunca hubiera sido eliminada.

Preguntas Frecuentes (FAQ)
¿Los objetos en la papelera ocupan espacio en disco?
Sí, absolutamente. Ocupan exactamente el mismo espacio que cuando estaban activos. Esta es la razón principal por la que la gestión y purga periódica de la papelera es una tarea de mantenimiento esencial para cualquier DBA.
¿Qué sucede si desactivo la Papelera de Reciclaje?
Si el parámetro `recyclebin` está en `OFF`, cualquier comando `DROP` que ejecutes será permanente e inmediato. El objeto no irá a la papelera y no podrá ser recuperado mediante `FLASHBACK TABLE TO BEFORE DROP`.
¿Puedo recuperar una tabla después de ejecutar un comando PURGE?
No. El comando `PURGE` es final. Una vez que un objeto es purgado, la única forma de recuperarlo sería a través de una restauración desde un backup de la base de datos.
¿Cómo puedo ver el nombre original de un objeto en la papelera?
Al consultar las vistas `USER_RECYCLEBIN` o `DBA_RECYCLEBIN`, la columna `ORIGINAL_NAME` contiene el nombre que tenía el objeto antes de ser eliminado, mientras que `OBJECT_NAME` contiene el nombre asignado por el sistema (`BIN$...`).
Dominar la Papelera de Reciclaje y el comando `PURGE` te otorga un control total sobre el ciclo de vida de tus objetos de base de datos. Te proporciona una red de seguridad contra errores, al tiempo que te da las herramientas necesarias para gestionar eficientemente el espacio de almacenamiento, asegurando que tu base de datos Oracle funcione de manera limpia, ordenada y optimizada.
Si quieres conocer otros artículos parecidos a Oracle: Domina el Comando PURGE y la Papelera puedes visitar la categoría Juegos.
