Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment répertorier toutes les tables dans Oracle

Comme avec la plupart des bases de données relationnelles, il peut arriver que vous ayez besoin d'afficher les métadonnées sous-jacentes et de parcourir la liste réelle des tables et la propriété de votre base de données. Heureusement, il existe plusieurs façons d'effectuer cette tâche relativement simple dans Oracle, nous allons donc explorer brièvement chaque option ci-dessous pour trouver celle qui correspond le mieux à vos besoins.

Que sont les dictionnaires de données Oracle ?

Un dictionnaire de données dans Oracle est une collection de tables en lecture seule qui fournissent des informations utiles sur la base de données, notamment les schémas, les utilisateurs, les privilèges et même les données d'audit. Les valeurs de ces dictionnaires stockés sont mises à jour automatiquement par Oracle chaque fois qu'une instruction est exécutée sur le serveur qui modifie les données.

À partir de là, les dictionnaires en lecture seule peuvent être lus et interrogés comme n'importe quel tableau standard, ce qui, comme nous le verrons ci-dessous, fournit des fonctionnalités très utiles.

Affichage des tables appartenant à l'utilisateur actuel

Au niveau le plus élémentaire, vous souhaiterez peut-être afficher une liste de toutes les tables possédées par l'utilisateur Oracle actuel. Cela peut être accompli avec un simple SELECT requête sur les USER_TABLES dictionnaire de données.

Une fois connecté à Oracle, émettez cette déclaration :

SELECT
  table_name, owner
FROM
  user_tables
ORDER BY
  owner, table_name

Cela renverra une liste de toutes les tables dont l'utilisateur actuel est propriétaire, comme spécifié dans le owner colonne.

Affichage des tableaux accessibles par l'utilisateur actuel

Dans une situation où vous êtes uniquement intéressé par les tables auxquelles l'utilisateur Oracle actuel a accès pour, quel que soit le propriétaire, vous utiliserez le ALL_TABLES dictionnaire de données à la place.

SELECT
  table_name, owner
FROM
  all_tables
ORDER BY
  owner, table_name

Il est probable que cette requête renverra beaucoup plus de résultats que ce qui vous intéresse puisque vous visualisez tout, même à distance, accessible à l'utilisateur. Vous pouvez donc limiter votre requête en spécifiant un owner approprié. , comme ceci :

SELECT
  table_name, owner
FROM
  all_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Affichage de tous les tableaux

Enfin, lorsque vous avez absolument besoin de voir chaque table dans le système, ne cherchez pas plus loin que le grand et puissant DBA_TABLES dictionnaire de données.

SELECT
  table_name, owner
FROM
  dba_tables
WHERE
  owner='schema_name'
ORDER BY
  owner, table_name

Il est important de noter que ce dernier DBA_TABLES dictionnaire peut exiger des privilèges d'utilisateur au-delà de ce que l'utilisateur actuel a. Si nécessaire, vous devrez peut-être obtenir le SELECT ANY DICTIONARY privilège ou le SELECT_CATALOG_ROLE rôle. Vous trouverez plus d'informations sur l'octroi de ces privilèges dans la documentation officielle.