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

So listen Sie alle Tabellen in Oracle auf

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.