Wie liste ich alle Tabellen in einem Schema in Oracle SQL auf?
158
Um alle Tabellen in einem anderen Schema anzuzeigen, müssen Sie über eine oder mehrere der folgenden Systemberechtigungen verfügen:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
oder der große Hammer, die DBA-Rolle.
Mit einem dieser Optionen können Sie Folgendes auswählen:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Ohne diese Systemberechtigungen können Sie nur Tabellen anzeigen, auf die Sie direkt oder über eine Rolle Zugriff haben.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Schließlich können Sie das Datenwörterbuch jederzeit nach Ihren eigenen Tabellen abfragen, da Ihre Rechte an Ihren Tabellen nicht widerrufen werden können (ab 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
statt%_TABLES
.DISTINCT
in der Abfrage.owner, object_name
ist einzigartig inALL_OBJECTS
owner, object_name
in dba_objects keineswegs eindeutig; In dieser Ansicht werden sowohl Paketkörper als auch Pakete angezeigt, und Tabellen und Indizes befinden sich in unterschiedlichen Namespaces.quelle
Sie können abfragen
USER_TABLES
quelle
Wenn Sie sich als normaler Benutzer ohne DBA-Berechtigung angemeldet haben, können Sie den folgenden Befehl verwenden, um alle Tabellen und Ansichten Ihres eigenen Schemas anzuzeigen.
quelle
Versuchen Sie dies, ersetzen Sie? mit Ihrem Schemanamen
quelle
Wenn Sie mit JDBC (Java) auf Oracle zugreifen, können Sie die DatabaseMetadata- Klasse verwenden. Wenn Sie mit ADO.NET auf Oracle zugreifen, können Sie einen ähnlichen Ansatz verwenden.
Wenn Sie mit ODBC auf Oracle zugreifen, können Sie die SQLTables- Funktion verwenden.
Andernfalls reicht eine der bereits erwähnten Abfragen aus, wenn Sie nur die Informationen in SQLPlus oder einem ähnlichen Oracle-Client benötigen. Zum Beispiel:
quelle
Es werden alle Tabellen in Ihrem Schemakatzen-Synonym für user_catalog angezeigt
quelle
Die obige Abfrage gibt Ihnen die Namen aller in diesem Benutzer vorhandenen Tabellen.
quelle
(zeigt alle Tabellen)
quelle
SELECT Tabellenname, Eigentümer FROM all_tables wobei Eigentümer = 'Schemaname' nach Tabellenname sortiert
quelle
Sie können die zweite Abfrage direkt ausführen, wenn Sie den Eigentümernamen kennen.
- Zuerst können Sie auswählen, welche EIGENTÜMER es gibt:
- Dann können Sie die Tabellen unter diesem Eigentümer sehen:
quelle
Schauen Sie sich mein einfaches Dienstprogramm an, um einige Informationen zum Datenbankschema anzuzeigen. Es basiert auf: Reverse Engineering eines Datenmodells mit dem Oracle Data Dictionary
quelle
Wenn Sie auch die Größe des Tisches benötigen, ist dies praktisch:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
quelle
Name des Tabellen- und Zeilenzählers für alle Tabellen im
OWNER
Schema:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
quelle