Wie bei den meisten relationalen Datenbanken kann es vorkommen, dass Sie die zugrunde liegenden Metadaten anzeigen und die tatsächliche Tabellenliste und den Besitz Ihrer Datenbank durchsehen müssen. Glücklicherweise gibt es mehrere Möglichkeiten, diese relativ einfache Aufgabe in Oracle auszuführen, daher gehen wir unten kurz auf jede Option ein, um herauszufinden, welche Ihren Anforderungen am besten entspricht.
Was sind Oracle-Datenwörterbücher?
Ein Datenwörterbuch in Oracle ist eine Sammlung von schreibgeschützten Tabellen, die nützliche Informationen über die Datenbank bereitstellen, einschließlich Schemas, Benutzer, Berechtigungen und sogar Überwachungsdaten. Die Werte in diesen gespeicherten Wörterbüchern werden automatisch von Oracle aktualisiert, sobald eine Anweisung auf dem Server ausgeführt wird, die Daten ändert.
Von dort aus können die schreibgeschützten Wörterbücher wie jede Standardtabelle gelesen und abgefragt werden, was, wie wir weiter unten sehen werden, einige sehr nützliche Funktionen bietet.
Anzeigen von Tabellen im Besitz des aktuellen Benutzers
Auf der einfachsten Ebene möchten Sie vielleicht eine Liste aller Tabellen anzeigen, die im Besitz sind vom aktuellen Oracle-Benutzer. Dies kann mit einem einfachen SELECT
erreicht werden Abfrage auf den USER_TABLES
Datenwörterbuch.
Sobald Sie mit Oracle verbunden sind, geben Sie diese Anweisung aus:
SELECT
table_name, owner
FROM
user_tables
ORDER BY
owner, table_name
Dadurch wird eine Liste aller Tabellen zurückgegeben, deren Eigentümer der aktuelle Benutzer ist, wie im owner
angegeben Spalte.
Anzeigen von Tabellen, auf die der aktuelle Benutzer zugreifen kann
In einer Situation, in der Sie nur daran interessiert sind, auf welche Tabellen der aktuelle Oracle-Benutzer Zugriff hat verwenden Sie unabhängig von der Eigentümerschaft den ALL_TABLES
stattdessen Datenwörterbuch.
SELECT
table_name, owner
FROM
all_tables
ORDER BY
owner, table_name
Es ist wahrscheinlich, dass diese Abfrage viel mehr Ergebnisse zurückgibt, als Sie interessieren, da Sie alles anzeigen, was dem Benutzer auch nur aus der Ferne zugänglich ist. Daher möchten Sie Ihre Abfrage möglicherweise einschränken, indem Sie einen geeigneten owner
angeben , etwa so:
SELECT
table_name, owner
FROM
all_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Alle Tabellen anzeigen
Schließlich, wenn Sie unbedingt jede Tabelle anzeigen müssen Suchen Sie im System nicht weiter als nach den großartigen und leistungsstarken DBA_TABLES
Datenwörterbuch.
SELECT
table_name, owner
FROM
dba_tables
WHERE
owner='schema_name'
ORDER BY
owner, table_name
Es ist wichtig zu beachten, dass diese letzte DBA_TABLES
Wörterbuch erfordert möglicherweise Benutzerrechte, die über die des aktuellen Benutzers hinausgehen. Gegebenenfalls muss Ihnen das SELECT ANY DICTIONARY
gewährt werden Privileg oder die SELECT_CATALOG_ROLE
Rolle. Weitere Informationen zum Gewähren dieser Privilegien finden Sie in der offiziellen Dokumentation.