Poiché Oracle 10g non elimina immediatamente le tabelle quando emettiamo un'istruzione DROP TABLE. Invece li rinomina in questo modo BIN$IN1vjtqhTEKcWfn9PshHYg==$0
e li mette nel cestino. Questo ci consente di recuperare tabelle che non intendevamo eliminare. Scopri di più
.
Le tabelle nel cestino sono ancora tabelle, quindi vengono visualizzate in ALL_TABLES e viste simili. Quindi, se vuoi vedere solo i commenti relativi solo alle tabelle live (non eliminate), devi filtrare per nome della tabella:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Hai ragione, sarebbe incredibile. Quindi ho controllato la documentazione, risulta che Oracle 10g ha aggiunto una colonna chiamata DROPPED alle viste 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'
/
Consulta la documentazione . Ovviamente la necessità di entrare nella vista ALL_TABLES richiede più digitazione che filtraggio sul nome, quindi a seconda delle nostre necessità potrebbe essere più semplice mantenere la clausola WHERE originale.