91 votes

Comment afficher les bases de données dans Oracle 11g en utilisant SQL*Plus

Avec l'aide de cette commande show databases; Je peux voir les bases de données dans MySQL .

Comment afficher les bases de données disponibles dans Oracle ?

108voto

Shan Points 221

SELECT NAME FROM v$database; montre le nom de la base de données dans oracle

2 votes

Je pense que c'est ce que la question demandait. Ou du moins, c'est ce à quoi je pense quand j'entends "base de données"... par opposition à schéma (ou utilisateur).

3 votes

Ceci devrait être la réponse

0 votes

Si, par exemple, vous utilisez Oracle Database Express Edition, cela donne quelque chose comme XE c'est-à-dire le nom unique qui identifie de manière unique votre instance/base de données (est-il appelé SID ?). De l'autre côté, le nom de MySQL show databases imprime ce que MySQL appelle la base de données aka schema (à peu près ce que vous obtenez avec SELECT USERNAME FROM DBA_USERS dans Oracle).

67voto

dpbradley Points 7496

Vous pouvez considérer une "base de données" MySQL comme un schéma/utilisateur dans Oracle. Si vous disposez des privilèges nécessaires, vous pouvez interroger la base de données MySQL. DBA_USERS pour voir la liste des schémas :

SELECT * FROM DBA_USERS;

22 votes

Certaines bases de données oracle ont beaucoup d'utilisateurs sans objets. Pour ceux-ci, une alternative est SELECT DISTINCT OWNER FROM ALL_OBJECTS ;

1 votes

+Si vous n'êtes pas un utilisateur privilégié et que vous lancez cette requête, vous ne verrez que les propriétaires pour lesquels vous avez un privilège sur au moins un de leurs objets.

5 votes

La requête à DBA_USERS donne un "ORA-00942 : table or view does not exist", peut-être un problème de permission ? La requête en commentaire "SELECT DISTINCT OWNER FROM ALL_OBJECTS ;" fonctionne avec les mêmes informations d'accès. db 11g

35voto

Thomas Bratt Points 10738

Oracle ne dispose pas d'un modèle de base de données simple comme MySQL ou MS SQL Server. Je trouve que la chose la plus proche est d'interroger les tablespaces et les utilisateurs correspondants dans ces tablespaces.

Par exemple, j'ai un tablespace DEV_DB qui contient toutes mes bases de données réelles :

SQL> SELECT TABLESPACE_NAME FROM USER_TABLESPACES;

Résultant en :

SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
DEV_DB

Il est également possible d'interroger les utilisateurs dans tous les tablespaces :

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS;

Ou dans un tablespace spécifique (en utilisant mon tablespace DEV_DB comme exemple) :

SQL> select USERNAME, DEFAULT_TABLESPACE from DBA_USERS where DEFAULT_TABLESPACE = 'DEV_DB';

ROLES DEV_DB
DATAWARE DEV_DB
DATAMART DEV_DB
STAGING DEV_DB

13voto

Jonathan Points 6611

Vous pourriez peut-être utiliser cette vue, mais je n'en suis pas sûr.

select * from v$database;

Mais je pense qu'il ne vous montrera que des informations sur la base de données actuelle.

Une autre option, si la base de données tourne sous Linux... serait quelque chose comme ceci :

SQL>!grep SID $TNS_ADMIN/tnsnames.ora | grep -v PLSExtProc

0 votes

La première ne fonctionne pas dans 11g : "ORA-00942 : table or view does not exist".

2 votes

Bonjour @a1an. Sans aucun doute, v$database existe dans 11g. Vérifiez si vous exécutez la requête avec des droits suffisants. Vous trouverez ici la documentation sur v$database pour oracle 11g. docs.oracle.com/cd/B28359_01/server.111/b28320/… Algo, ici vous avez un post avec un exemple sur l'utilisation de v%database dans oracle 11g. neeraj-dba.blogspot.com.es/2011/10/ Bonne chance !

2 votes

Probablement juste un problème de permissions, l'exécuter en tant que sysdba fonctionne.

1voto

BongSey Points 31

Je ne suis pas très clair à ce sujet mais typiquement un serveur a une base de données (avec plusieurs utilisateurs), si vous créez plusieurs bases de données, cela signifie que vous créez aussi plusieurs instances, listeners, .... Vous pouvez donc vérifier votre LISTENER pour l'identifier.

Dans mes tests, j'ai créé 2 bases de données ( dbtest y dbtest_1 ) donc quand j'ai vérifié mon statut de LISTENER il est apparu comme ceci :

lsnrctl status

....

STATUT de l'ÉCOUTEUR

.....

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.20.20)(PORT=1521))))

Résumé des services...

Le service "dbtest" a 1 instance(s).

L'instance "dbtest", statut READY, a 1 handler(s) pour ce service...

Le service "dbtest1XDB" a 1 instance(s).

L'instance "dbtest1", statut READY, a 1 handler(s) pour ce service...

Le service "dbtest_1" a 1 instance(s).

L'instance "dbtest1", statut READY, a 1 handler(s) pour ce service... La commande s'est terminée avec succès

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X