El comando PURGE en Oracle: papelera de reciclaje y espacio
DROP TABLE no borra nada desde 10g: mueve el objeto a la papelera. PURGE y FLASHBACK TABLE son las dos caras de esa decisión que salvó muchas tardes.
Antes de Oracle 10g, un DROP TABLE con la mano equivocada era una llamada al DBA para restaurar una copia de seguridad completa, con su ventana de parada y su vergüenza correspondiente. Desde 10g, DROP no destruye: renombra el objeto con un prefijo BIN$ y lo aparta en la papelera de reciclaje (recyclebin). El espacio sigue contando a efectos de cuota, pero el objeto puede rescatarse con una sola sentencia. PURGE es el otro lado de la moneda: la orden que borra de verdad.
Inspeccionar la papelera
SELECT object_name, original_name, type, droptime,
can_undrop, space
FROM recyclebin
ORDER BY droptime DESC;La vista RECYCLEBIN (sinónimo de USER_RECYCLEBIN) lista los objetos caídos: ORIGINAL_NAME es el nombre que conocías, OBJECT_NAME el nombre BIN$... interno, y CAN_UNDROP dice si la recuperación es posible —los índices caen junto a su tabla, por eso muchos aparecen como NO: se recuperan solos con la tabla padre.
Rescatar: FLASHBACK TABLE
DROP TABLE pruebas; -- va a la papelera, no se destruye
FLASHBACK TABLE pruebas TO BEFORE DROP;
FLASHBACK TABLE pruebas TO BEFORE DROP RENAME TO pruebas_v2;La variante con RENAME TO es oro puro cuando el accidente ha sido borrar una tabla que ya habías recreado: permite rescatar la versión antigua con otro nombre y compararlas. Ojo con los borrados repetidos: si caen tres tablas con el mismo nombre, Flashback devuelve la más reciente primero; el orden last in, first out se puede saltar indicando el nombre BIN$ exacto.
Borrar de verdad: PURGE
DROP TABLE pruebas PURGE; -- borra directamente, sin papelera
PURGE TABLE pruebas; -- vacia de la papelera un objeto concreto
PURGE INDEX idx_pruebas;
PURGE RECYCLEBIN; -- tu papelera completa
PURGE DBA_RECYCLEBIN; -- todas (requiere privilegio SYSDBA)
PURGE TABLESPACE usuarios; -- papelera de un tablespaceHay dos motivos para purgar a conciencia. El primero es el espacio: mientras el objeto descansa en la papelera, sus extents no se liberan, y en tablespaces con presión la papelera se convierte en un fantasma que ocupa gigabytes invisibles en las consultas a USER_SEGMENTS si no se mira DBA_FREE_SPACE con cuidado. El segundo es la higiene en entornos regulados: un objeto «borrado» que sigue recuperable puede incumplir políticas de borrado definitivo de datos personales.
Desactivar la papelera (y por qué pensártelo)
ALTER SESSION SET recyclebin = OFF; -- solo tu sesion
ALTER SYSTEM SET recyclebin = OFF DEFERRED; -- toda la instanciaEn ciclos de desarrollo con cientos de DROP y CREATE automáticos, algunas bases de datos arrancan con la papelera apagada para no acumular chatarra. El parámetro sigue existiendo en versiones modernas, pero la práctica recomendada hoy es más simple: dejarla activada y purgar en los scripts de limpieza. El día que el DROP equivocado ocurra —y ocurre—, una papelera operativa vale más que cualquier disciplina.
Recuperar el espacio de verdad
Purgar la papelera devuelve los extents al pool libre del tablespace, pero conviene entender qué significa eso: el espacio vuelve a estar disponible dentro del tablespace, no al sistema operativo. Si la pregunta del jefe es «¿y baja el fichero .dbf?», la respuesta es no: para eso están los movimientos de segmento (ALTER TABLE ... MOVE con reconstrucción de índices) o la reducción de datafiles, operaciones mayores que se planifican. La comprobación honesta del espacio libre tras una purga grande sale de DBA_FREE_SPACE, sumando por tablespace —y sorprende a más de uno ver que el gigabyte liberado sigue siendo un fichero del mismo tamaño exacto.
Purga y particiones
Un matiz que conecta con la administración moderna: ALTER TABLE ... DROP PARTITION también pasa por la papelera en la mayoría de casos, y TRUNCATE PARTITION libera espacio sin papelera intermedia. En tablas de millones de filas por día, la estrategia de particionado por rangos más borrado de particiones completas es la alternativa elegante a los DELETE masivos: minutos frente a horas, y sin generar deshacer.
La papelera convirtió el peor error de dedo en una operación de diez segundos. Usarla bien es saber también cuándo vaciarla.
Relacionado con la vida y muerte de objetos está el análisis de bloqueos y cómo desbloquear un objeto, y si tu objetivo es mover esquemas completos entre entornos, las utilidades Data Pump son la evolución natural de estas órdenes.