web-dev-qa-db-fra.com

Comment répertorier toutes les tables d'un schéma dans Oracle SQL?

Comment lister toutes les tables d'un schéma dans Oracle SQL?

132
benstpierre

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'
190
Adam Musch
SELECT table_name  from all_tables where owner = 'YOURSCHEMA';
62
Tom

Vous pouvez interroger USER_TABLES

select TABLE_NAME from user_tables
12
Sathyajith Bhat

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;
4
chan

Essayez ceci, remplacez? avec votre nom de schéma

select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
 WHERE TABLE_SCHEMA =?
  AND TABLE_TYPE = 'BASE TABLE'
3
SQLMenace
select * from user_tables;

(montrant toutes les tables)

2
yash

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
2
Pablo Santa Cruz

SELECT nom_table, propriétaire FROM toutes_tables où propriétaire = 'nom_schéma', ordre par nom_table

1
Sreeju
select * from cat;

toutes les tables de votre schéma de chat seront affichées comme synonyme de user_catalog 

1
Arsalan Sheikh
select TABLE_NAME from user_tables;

La requête ci-dessus vous donnera les noms de toutes les tables présentes dans cet utilisateur;

1
A A Nayak

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

0
Michał Niklas

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

0
Vijay Kumar

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'

0
SergioLeone

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%');
0
Kermit the Frog