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?
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)
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
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
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.
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.
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>;