Seit 10g löscht Oracle Tabellen nicht sofort, wenn wir eine DROP TABLE-Anweisung ausgeben. Stattdessen werden sie wie folgt umbenannt BIN$IN1vjtqhTEKcWfn9PshHYg==$0
und wirft sie in den Papierkorb. Dadurch können wir Tabellen wiederherstellen, die wir nicht löschen wollten. Erfahren Sie mehr
.
Tabellen im Papierkorb sind immer noch Tabellen, sodass sie in ALL_TABLES und ähnlichen Ansichten angezeigt werden. Wenn Sie also nur Kommentare sehen möchten, die sich nur auf aktive (nicht gelöschte) Tabellen beziehen, müssen Sie nach Tabellennamen filtern:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
Du hast recht, es wäre unglaublich. Also habe ich die Dokumentation überprüft, es stellt sich heraus, dass Oracle 10g eine Spalte namens DROPPED zu den Ansichten USER_/ALL_/DBA_TABLES hinzugefügt hat.
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'
/