What is purge recyclebin in Oracle recyclebin?

Oracle: Domina el Comando PURGE y la Papelera

26/11/2019

Valoración: 3.95 (13058 votos)

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.

Does Oracle Database remove all objects from a user's Recycle Bin?
Oracle Database will remove all objects from the user's recycle bin and release all space associated with objects in the recycle bin. This clause is valid only if you have SYSDBA system privilege. It lets you remove all objects from the system-wide recycle bin, and is equivalent to purging the recycle bin of every user.
Índice de Contenido

¿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;
  • Para todos los usuarios (requiere privilegios de DBA): La vista `DBA_RECYCLEBIN` muestra el contenido de la papelera de todos los usuarios del sistema.
  • 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`.

What is the Recycle Bin feature in Oracle databases?
The Recycle Bin feature in Oracle databases offers a significant advantage in data management and recovery. By understanding its functionality and effectively managing its use, database administrators and users can enhance data protection and streamline recovery processes

Purgar un Objeto Específico

Si quieres eliminar permanentemente una sola tabla o índice, tienes dos formas de hacerlo:

  1. Usando el nombre original: Si solo existe una versión de la tabla 'EMPLEADOS' en tu papelera, puedes ejecutar:
  2. 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.

  3. 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";

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;
  • Para toda la base de datos (requiere privilegio SYSDBA): Este es un comando poderoso que vacía la papelera de todos los usuarios del sistema. Es muy útil para tareas de mantenimiento a gran escala.
  • 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;
  • Purgar objetos de un usuario en un tablespace específico: Esto es especialmente útil si un usuario está alcanzando su cuota de espacio en un tablespace particular.
  • PURGE TABLESPACE USERS USER SCOTT;

Tabla Comparativa de Comandos PURGE

ComandoAlcancePermisos RequeridosUso 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.

Does Oracle Database remove all objects from a user's Recycle Bin?
Oracle Database will remove all objects from the user's recycle bin and release all space associated with objects in the recycle bin. This clause is valid only if you have SYSDBA system privilege. It lets you remove all objects from the system-wide recycle bin, and is equivalent to purging the recycle bin of every user.

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.

Subir