web-dev-qa-db-fra.com

Vérification du sid Oracle et du nom de la base de données

Je veux vérifier SID et le nom de la base de données actuelle.

J'utilise la requête suivante pour vérifier Oracle SID

select instance from v$thread;

mais la table ou la vue n’existe pas, l’erreur vient.

J'utilise la requête suivante pour vérifier le nom de la base de données actuelle

select name from v$database;

mais la table ou la vue n’existe pas, l’erreur vient.

Une idée pour les deux problèmes ci-dessus?

99
Adnan

Je présume que select user from dual; devrait vous donner l’utilisateur actuel

et select sys_context('userenv','instance_name') from dual; le nom de l'instance

Je crois que vous pouvez obtenir SID sous la forme SELECT sys_context('USERENV', 'SID') FROM DUAL; (impossible de vérifier ceci maintenant)

131
V4Vendetta

Si, comme moi, votre objectif est de faire en sorte que la base de données hôte et le SID génèrent une URL JDBC Oracle, comme suit:

jdbc:Oracle:thin:@<server_Host>:1521:<instance_name>

les commandes suivantes aideront:

Commande de requête Oracle pour vérifier le SID (ou le nom de l'instance):

select sys_context('userenv','instance_name') from dual; 

Commande de requête Oracle pour vérifier le nom de la base de données (ou l'hôte du serveur):

select sys_context('userenv', 'server_Host') from dual;

Att. Sergio Marcelo

52

Juste pour être complet, vous pouvez également utiliser ORA_DATABASE_NAME.

Il convient de noter que toutes les méthodes ne donnent pas le même résultat:

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM
46
Patrick Marchand

Les vues V $ sont principalement des vues dynamiques de métriques système. Ils sont utilisés pour le réglage des performances, la surveillance de session, etc. L'accès est donc limité aux utilisateurs DBA par défaut. C'est pourquoi vous obtenez ORA-00942.

Le moyen le plus simple de trouver le nom de la base de données est le suivant:

select * from global_name;

Cette vue est accordée à PUBLIC, donc tout le monde peut l'interroger.

19
APC

Tapez sur l'invite de commande sqlplus

SQL> select * from global_name;

alors u sera voir le résultat sur invite de commande

SQL ORCL.REGRESS.RDBMS.DEV.US.Oracle.COM

Ici, le premier "ORCL" est le nom de la base de données, il peut s’agir de votre système "XE" et d’autres informations fournies sur le temps de téléchargement Oracle.

4
anant kumar

Comme il a été mentionné ci-dessus,

select global_name from global_name;

est le chemin à parcourir.

Vous ne pouviez pas interroger v $ database/v $ instance/v $ thread car votre utilisateur ne dispose pas des autorisations requises. Vous pouvez leur accorder (via un compte DBA) avec:

grant select on v$database to <username here>;
2
Phil