Comment lister toutes les tables d'un schéma dans Oracle SQL?
Pour voir toutes les tables dans un autre schéma, vous devez avoir 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 de DBA.
Avec n'importe lequel 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 été autorisé à accéder, que ce soit directement ou par le biais d'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'
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Vous pouvez interroger USER_TABLES
select TABLE_NAME from user_tables
Si vous vous êtes connecté en tant qu'utilisateur normal sans autorisation DBA, vous pouvez utiliser la commande suivante pour afficher toutes les tables et vues de votre propre schéma.
select * from tab;
Essayez ceci, remplacez? avec votre nom de schéma
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
select * from user_tables;
(montrant toutes les tables)
Si vous accédez à Oracle avec JDBC (Java), vous pouvez utiliser DatabaseMetadata class. Si vous accédez à Oracle avec ADO.NET, vous pouvez utiliser une approche similaire.
Si vous accédez à Oracle avec ODBC, vous pouvez utiliser SQLTables function.
Sinon, si vous avez juste besoin des informations contenues dans SQLPlus ou un client Oracle similaire, l’une des requêtes déjà mentionnées suffira. Par exemple:
select TABLE_NAME from user_tables
SELECT nom_table, propriétaire FROM toutes_tables où propriétaire = 'nom_schéma', ordre par nom_table
select * from cat;
toutes les tables de votre schéma de chat seront affichées comme synonyme de user_catalog
select TABLE_NAME from user_tables;
La requête ci-dessus vous donnera les noms de toutes les tables présentes dans cet utilisateur;
Regardez mon utilitaire simple pour afficher des informations sur le schéma de base de données. Il repose sur: le reverse engineering d'un modèle de données À l'aide du dictionnaire de données Oracle
Si vous devez également 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
Nom de la table et du compteur de lignes pour toutes les tables sous le schéma OWNER
:
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
Vous pouvez exécuter directement la seconde requête si vous connaissez le nom du propriétaire.
--Vous pouvez d'abord sélectionner ce que tous les propriétaires existent:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
--Alors vous pouvez voir les tables sous ce propriétaire:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');