Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Liste aller Tabellen in Oracle abrufen?

SELECT owner, table_name
  FROM dba_tables

Dies setzt voraus, dass Sie Zugriff auf DBA_TABLES haben Ansicht des Datenwörterbuchs. Wenn Sie diese Berechtigungen nicht haben, sie aber benötigen, können Sie anfordern, dass der DBA Ihnen explizit Berechtigungen für diese Tabelle erteilt, oder dass der DBA Ihnen das SELECT ANY DICTIONARY erteilt Privileg oder die SELECT_CATALOG_ROLE Rolle (mit beiden können Sie jede Datenwörterbuchtabelle abfragen). Natürlich möchten Sie vielleicht bestimmte Schemas wie SYS ausschließen und SYSTEM die eine große Anzahl von Oracle-Tabellen haben, die Sie wahrscheinlich nicht interessieren.

Alternativ, wenn Sie keinen Zugriff auf DBA_TABLES haben , können Sie über ALL_TABLES alle Tabellen sehen, auf die Ihr Konto Zugriff hat Ansicht:

SELECT owner, table_name
  FROM all_tables

Obwohl dies eine Teilmenge der in der Datenbank verfügbaren Tabellen sein kann (ALL_TABLES zeigt Ihnen die Informationen für alle Tabellen, auf die Ihrem Benutzer Zugriff gewährt wurde).

Wenn Sie nur an den Tabellen interessiert sind, die Ihnen gehören, und nicht denen, auf die Sie Zugriff haben, können Sie USER_TABLES verwenden :

SELECT table_name
  FROM user_tables

Seit USER_TABLES hat nur Informationen über die Tabellen, die Sie besitzen, es hat keinen OWNER Spalte – der Eigentümer sind per Definition Sie.

Oracle hat auch eine Reihe von Legacy-Data-Dictionary-Ansichten – TAB , DICT , TABS , und CAT zum Beispiel - das könnte verwendet werden. Im Allgemeinen würde ich die Verwendung dieser Legacy-Ansichten nicht empfehlen, es sei denn, Sie müssen Ihre Skripte unbedingt auf Oracle 6 zurückportieren. Oracle hat diese Ansichten seit langem nicht geändert, sodass sie häufig Probleme mit neueren Objekttypen haben. Zum Beispiel das TAB und CAT Ansichten zeigen beide Informationen über Tabellen, die sich im Papierkorb des Benutzers befinden, während die Ansicht [DBA|ALL|USER]_TABLES Ansichten alle filtern diese heraus. CAT zeigt auch Informationen über Materialized View Logs mit einem TABLE_TYPE von "TABLE", was wahrscheinlich nicht das ist, was Sie wirklich wollen. DICT kombiniert Tabellen und Synonyme und sagt Ihnen nicht, wem das Objekt gehört.