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.