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

Obtenir la liste de toutes les tables dans Oracle ?

SELECT owner, table_name
  FROM dba_tables

Cela suppose que vous avez accès aux DBA_TABLES vue du dictionnaire de données. Si vous ne disposez pas de ces privilèges mais que vous en avez besoin, vous pouvez demander que le DBA vous accorde explicitement des privilèges sur cette table, ou que le DBA vous accorde le SELECT ANY DICTIONARY privilège ou le SELECT_CATALOG_ROLE rôle (l'un ou l'autre vous permettrait d'interroger n'importe quelle table de dictionnaire de données). Bien sûr, vous voudrez peut-être exclure certains schémas comme SYS et SYSTEM qui ont un grand nombre de tables Oracle dont vous ne vous souciez probablement pas.

Alternativement, si vous n'avez pas accès à DBA_TABLES , vous pouvez voir toutes les tables auxquelles votre compte a accès via ALL_TABLES afficher :

SELECT owner, table_name
  FROM all_tables

Bien que cela puisse être un sous-ensemble des tables disponibles dans la base de données (ALL_TABLES affiche les informations de toutes les tables auxquelles votre utilisateur a obtenu l'accès).

Si vous êtes uniquement concerné par les tables que vous possédez, pas celles auxquelles vous avez accès, vous pouvez utiliser USER_TABLES :

SELECT table_name
  FROM user_tables

Depuis USER_TABLES n'a que des informations sur les tables que vous possédez, il n'a pas de OWNER colonne - le propriétaire, par définition, c'est vous.

Oracle a également un certain nombre de vues de dictionnaire de données héritées-- TAB , DICT , TABS , et CAT par exemple-- qui pourrait être utilisé. En général, je ne suggérerais pas d'utiliser ces vues héritées à moins que vous n'ayez absolument besoin de rétroporter vos scripts vers Oracle 6. Oracle n'a pas modifié ces vues depuis longtemps, elles ont donc souvent des problèmes avec les nouveaux types d'objets. Par exemple, la TAB et CAT les vues affichent toutes deux des informations sur les tables qui se trouvent dans la corbeille de l'utilisateur tandis que les [DBA|ALL|USER]_TABLES les vues les filtrent toutes. CAT affiche également des informations sur les journaux de vues matérialisées avec un TABLE_TYPE de "TABLE", ce qui est peu susceptible d'être ce que vous voulez vraiment. DICT combine des tables et des synonymes et ne vous dit pas à qui appartient l'objet.