web-dev-qa-db-fra.com

Compter le nombre de tables dans Oracle

Comme MySQL a "SHOW TABLES", comment comptez-vous les tables dans Oracle DB. Un peu de recherche m'a donné cette requête:

select owner, count(*) from dba_tables

Donc, comme MySQL a une commande standard, Oracle en a-t-elle une?

20
SuperMan

Oui, bien sûr, votre requête fonctionnera, il suffit de la modifier un peu. Regardez ici pour la réfrence: http://download.Oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091

Lance ça:

SELECT TABLE_NAME FROM DBA_TABLES;

pour obtenir la liste des tableaux.

et lancez ceci:

SELECT Count(*) FROM DBA_TABLES;

pour obtenir le nombre de tables.

20
Shekhar_Pro

essayer:

SELECT COUNT(*) FROM USER_TABLES;

Eh bien, je n'ai pas Oracle sur ma machine, je lance mysql (OP commentaire)

au moment de la rédaction, ce site était idéal pour les tests sur une variété de types de bases de données.

37
akf

Sélectionnez count (*) FROM all_tables where owner = 'schema_name'

8
Rakesh Anand

Ces documents décrivent les vues du dictionnaire de données:

all_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_4473.htm#REFRN26286

user_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091

dba_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_4155.htm#i1627762

Vous pouvez exécuter des requêtes sur ces vues pour compter ce dont vous avez besoin.

Pour ajouter quelque chose de plus à la réponse de @Anurag Thakre:

Utilisez cette requête qui vous donnera le nombre réel de comptes à l'égard des propriétaires

SELECT COUNT(*),tablespace_name  FROM USER_TABLES group by tablespace_name;

Ou par les propriétaires de table:

SELECT COUNT(*), owner  FROM ALL_TABLES group by owner;

L'espace disque logique lui-même n'identifie pas un propriétaire d'objet unique. Plusieurs utilisateurs peuvent créer des objets dans le même espace de table et un seul utilisateur peut créer des objets dans différents espaces de table. Il est courant de séparer les tables et les index dans différents espaces de table.

3
Iľja

Veuillez trouver ci-dessous - c'est le plus simple que j'utilise:

select owner, count(*) from dba_tables group by owner;
2
Ajay

Si vous souhaitez une liste de propriétaires et le nombre de tables par propriétaire, essayez:

    SELECT distinct owner, count(table_name) FROM dba_tables GROUP BY owner;
2
David W

Si vous voulez connaître le nombre de tables qui appartiennent à un certain schéma/utilisateur, vous pouvez également utiliser SQL similaire à celui-ci:

SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';
1
jovan
REM setting current_schema is required as the 2nd query depends on the current user referred in the session

ALTER SESSION SET CURRENT_SCHEMA=TABLE_OWNER;

SELECT table_name,
         TO_NUMBER (
            EXTRACTVALUE (
               xmltype (
                  DBMS_XMLGEN.getxml ('select count(*) c from ' || table_name)),
               '/ROWSET/ROW/C'))
            COUNT
    FROM dba_tables
   WHERE owner = 'TABLE_OWNER'
ORDER BY COUNT DESC;
0
Girish