Liste aller Tabellen in Oracle abrufen?
Wie kann ich eine Oracle-Datenbank abfragen, um die Namen aller darin enthaltenen Tabellen anzuzeigen?
1069
3
Wie kann ich eine Oracle-Datenbank abfragen, um die Namen aller darin enthaltenen Tabellen anzuzeigen?
Dies setzt voraus, dass Sie Zugriff auf die Data-Dictionary-Ansicht
DBA_TABLES
haben. Wenn Sie diese Rechte nicht haben, sie aber benötigen, können Sie den DBA bitten, Ihnen explizit Rechte für diese Tabelle zu gewähren, oder der DBA kann Ihnen das RechtSELECT ANY DICTIONARY
oder die RolleSELECT_CATALOG_ROLE
gewähren (beides würde Ihnen die Abfrage jeder Data-Dictionary-Tabelle ermöglichen). Natürlich können Sie bestimmte Schemata wieSYS
undSYSTEM
ausschließen, die eine große Anzahl von Oracle-Tabellen enthalten, die Sie wahrscheinlich nicht interessieren.Wenn Sie keinen Zugriff auf
DBA_TABLES
haben, können Sie alternativ alle Tabellen, auf die Ihr Konto Zugriff hat, über die AnsichtALL_TABLES
einsehen:Allerdings handelt es sich dabei nur um eine Teilmenge der in der Datenbank verfügbaren Tabellen (
ALL_TABLES
zeigt Ihnen die Informationen für alle Tabellen an, auf die Ihr Benutzer Zugriff hat).Wenn Sie nur an den Tabellen interessiert sind, die Ihnen gehören, nicht aber an denen, auf die Sie Zugriff haben, können Sie
USER_TABLES
verwenden:Da
USER_TABLES
nur Informationen über die Tabellen enthält, die Ihnen gehören, hat es keineOWNER
-Spalte - der Eigentümer sind per Definition Sie.Oracle hat auch eine Reihe von alten Data-Dictionary-Ansichten - zum Beispiel
TAB
,DICT
,TABS
undCAT
- die verwendet werden können. Im Allgemeinen würde ich nicht empfehlen, diese alten Ansichten zu verwenden, es sei denn, Sie müssen Ihre Skripte unbedingt auf Oracle 6 zurückportieren. Oracle hat diese Ansichten seit langem nicht mehr geändert, so dass sie oft Probleme mit neueren Objekttypen haben. Die AnsichtenTAB
undCAT
zeigen beispielsweise Informationen über Tabellen an, die sich im Papierkorb des Benutzers befinden, während die Ansichten[DBA|ALL|USER]_TABLES
diese herausfiltern. CAT" zeigt auch Informationen über materialisierte Ansichtsprotokolle mit einemTABLE_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.Die Abfrage von "user_tables" und "dba_tables" funktionierte nicht.
Dies hier schon:
Versuchen Sie die Auswahl aus user_tables, die die Tabellen auflistet, die dem aktuellen Benutzer gehören.