Comment répertorier toutes les tables d'un schéma dans Oracle SQL?
159
Pour voir toutes les tables d'un autre schéma, vous devez disposer d'un ou plusieurs des privilèges système suivants:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
ou le gros marteau, le rôle du DBA.
Avec l'un de ceux-ci, vous pouvez sélectionner:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Sans ces privilèges système, vous ne pouvez voir que les tables auxquelles vous avez obtenu un certain niveau d'accès, que ce soit directement ou via un rôle.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Enfin, vous pouvez toujours interroger le dictionnaire de données pour vos propres tables, car vos droits sur vos tables ne peuvent pas être révoqués (à partir de 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
au lieu de%_TABLES
.DISTINCT
dans la requête.owner, object_name
est unique dansALL_OBJECTS
owner, object_name
n'est en aucun cas unique dans dba_objects; Les corps de package et les packages apparaissent tous les deux dans cette vue, et les tables et les index sont dans des espaces de noms différents.la source
Vous pouvez interroger
USER_TABLES
la source
Si vous vous êtes connecté en tant qu'utilisateur normal sans l'autorisation DBA, vous pouvez utiliser la commande suivante pour voir toutes les tables et vues de votre propre schéma.
la source
Essayez ceci, remplacez? avec le nom de votre schéma
la source
Si vous accédez à Oracle avec JDBC (Java), vous pouvez utiliser la classe DatabaseMetadata . Si vous accédez à Oracle avec ADO.NET, vous pouvez utiliser une approche similaire.
Si vous accédez à Oracle avec ODBC, vous pouvez utiliser la fonction SQLTables .
Sinon, si vous avez juste besoin des informations dans SQLPlus ou un client Oracle similaire, l'une des requêtes déjà mentionnées fera l'affaire. Par exemple:
la source
il affichera toutes les tables de votre schéma cat synonyme de user_catalog
la source
La requête ci-dessus vous donnera les noms de toutes les tables présentes dans cet utilisateur;
la source
(montrant tous les tableaux)
la source
SELECT table_name, owner FROM all_tables where owner = 'schema_name' order by table_name
la source
Vous pouvez exécuter directement la deuxième requête si vous connaissez le nom du propriétaire.
- Vous pouvez d'abord sélectionner ce que tous les PROPRIÉTAIRES existent:
- Ensuite, vous pouvez voir les tableaux ci-dessous par ce propriétaire:
la source
Regardez mon utilitaire simple pour afficher des informations sur le schéma de base de données. Il est basé sur: l' ingénierie inverse d'un modèle de données à l'aide du dictionnaire de données Oracle
la source
Si vous avez également besoin d'obtenir la taille de la table, ce sera pratique:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
la source
Nom de la table et du compteur de lignes pour toutes les tables sous
OWNER
schéma:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
la source