J'ai téléchargé SQLPLUS d'Oracle:
http://www.Oracle.com/technetwork/topics/winx64soft-089540.html
Basic Lite et SQL * Plus
J'ai ensuite lancé SQL * Plus:
c:\Program Files\Oracle\instantclient_12_1>sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 15 15:25:36 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
et essayé de se connecter à une base de données:
connect user\password@hostname
et a reçu le message d'erreur:
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
Qu'est-ce que je rate?
J'ai couru les requêtes suggérées par Jakub, je me suis
SQL> select sys_context('USERENV','SERVICE_NAME') from dual;
SYS_CONTEXT('USERENV','SERVICE_NAME')
--------------------------------------------------------------------------------
SYS$USERS
SQL> select sys_context('USERENV','SID') from dual;
SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
877
SQL>
Vous manquez le nom du service:
SQL> connect username/password@hostname:port/SERVICENAME
MODIFIER
Si vous pouvez vous connecter à la base de données à partir d'un autre ordinateur, essayez de le lancer:
select sys_context('USERENV','SERVICE_NAME') from dual
et
select sys_context('USERENV','SID') from dual
J'ai rencontré exactement le même problème dans des circonstances identiques. Je n'ai pas le fichier tnsnames.ora et je voulais utiliser SQL * Plus avec le format d'identificateur Easy Connection en ligne de commande. J'ai résolu ce problème comme suit.
Le Guide de l'utilisateur et référence SQL * Plus® donne un exemple:
sqlplus hr @ "" sales-server: 1521/sales.us.acme.com\"
Faites attention à deux points importants:
J'ai trouvé ces bonnes questions pour détecter le nom du service via une connexion existante: 1 , 2 . Essayez cette requête par exemple:
SELECT value FROM V$SYSTEM_PARAMETER WHERE UPPER(name) = 'SERVICE_NAMES'
Juste un petit constat: vous continuez de mentionner conn usr\pass, et c'est une faute de frappe, non? Parce que ça devrait être conn usr/pass. Ou est-ce différent sur un système d'exploitation basé sur Unix?
De plus, juste pour être sûr: si vous utilisez tnsnames, votre chaîne de connexion sera différente de celle utilisée lorsque vous utiliserez la méthode de connexion avec laquelle vous avez commencé cette rubrique.
tnsnames.ora devrait être dans $ Oracle_HOME $\network\admin. C’est la maison Oracle sur la machine à laquelle vous essayez de vous connecter, donc dans votre cas, votre PC. Si vous avez plusieurs Oracle_homes et souhaitez n’utiliser qu’un seul tnsnames.ora, vous pouvez définir la variable d’environnement tns_admin (par exemple, définir TNS_ADMIN = c:\Oracle\tns) et y placer tnsnames.ora.
Votre méthode de connexion initiale (usr/[email protected]: port/nom_service) devrait toujours fonctionner. Jusqu'à présent, je pense que vous avez toutes les informations, à l'exception du numéro de port, que je suis sûr que votre DBA sera en mesure de vous donner. Si cette méthode ne fonctionne toujours pas, l'adresse IP du serveur n'est pas disponible sur votre client, il s'agit d'un problème de pare-feu (blocage d'un certain port) ou d'un autre élément non (directement) lié à Oracle ou SQL * Plus.
hth! Regards, Remco