Eftersom 10g Oracle inte omedelbart släpper tabeller när vi utfärdar en DROP TABLE-sats. Istället döper den om dem så här BIN$IN1vjtqhTEKcWfn9PshHYg==$0
och lägger dem i papperskorgen. Detta gör att vi kan återställa tabeller vi inte menade att släppa. Läs mer
.
Tabeller i papperskorgen är fortfarande tabeller, så de visas i ALL_TABLES och liknande vyer. Så om du bara vill se kommentarer som endast hänför sig till levande (ej släppta) tabeller måste du filtrera efter tabellnamn:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Du har rätt, det skulle vara otroligt. Så jag kollade dokumentationen och det visade sig att Oracle 10g lade till en kolumn som heter DROPPED i USER_/ALL_/DBA_TABLES-vyerna.
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'
/
Kolla in dokumentationen . Uppenbarligen kräver behovet av att gå med i vyn ALL_TABLES mer att skriva än att filtrera på namnet, så beroende på vårt behov kan det vara lättare att behålla den ursprungliga WHERE-satsen.