Desde 10g, Oracle no descarta inmediatamente las tablas cuando emitimos una instrucción DROP TABLE. En su lugar, los renombra así BIN$IN1vjtqhTEKcWfn9PshHYg==$0
y los pone en la papelera de reciclaje. Esto nos permite recuperar tablas que no queríamos descartar. Más información
.
Las tablas en la papelera de reciclaje siguen siendo tablas, por lo que aparecen en ALL_TABLES y vistas similares. Entonces, si solo desea ver comentarios relacionados solo con tablas activas (no eliminadas), debe filtrar por nombre de tabla:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Tienes razón, sería increíble. Así que revisé la documentación y resultó que Oracle 10g agregó una columna llamada DROPPED a las vistas USER_/ALL_/DBA_TABLES.
select tc.*
from all_tab_comments tc
join all_tables t
on tc.owner = t.owner
and tc.table_name = t.table_name
where t.dropped = 'NO'
/
Consulte la documentación . Obviamente, la necesidad de unirse a la vista ALL_TABLES requiere escribir más que filtrar el nombre, por lo que, dependiendo de nuestra necesidad, podría ser más fácil mantener la cláusula WHERE original.