web-dev-qa-db-fra.com

Se connecter à SQL Plus à partir de la ligne de commande à l'aide d'une chaîne de connexion

Disons que j'ai une base de données Oracle. J'ai un nom d'utilisateur = x, un mot de passe = y, une base de données = z. Je connais également le port = a, SID = b, Hostname = c.

Alors, comment dois-je me connecter correctement? J'ai utilisé de nombreuses options comme:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=b)))

L'envoi de ces lignes de commande me renvoie généralement des messages d'erreur comme:

ORA-12560: TNS: erreur d'adaptateur de protocole
ORA-12514: TNS: l'auditeur ne connaît pas actuellement le service

Merci d'avance!!

46
Edvinas

as-tu essayé

sqlplus username/password@Host:port/service
sqlplus x/y@c:a/b

les versions modernes de sqlplus (version 11 ou plus récente) comprennent cette syntaxe et vous n'avez pas besoin d'un fichier tnsnames.ora.

83
Hanspeter Oberlin

Le plus simple est d'utiliser le fichier tnsnames.ora pour se connecter à la base de données. Pour cela, modifiez-le et ajoutez une nouvelle entrée: ce fichier réside normalement dans le répertoire $ Oracle HOME\NETWORK\ADMIN.

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

puis vous pouvez vous connecter à la base de données:

sqlplus x/y @ myDb

12
eliatou

Vers l'affiche originale ... dans la première option, vous avez manqué une parenthèse fermante

Incorrect: (Votre chaîne)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

Correct:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'
8
O. Godoy

Votre ligne sqlplus semble correcte, vérifiez les points suivants:

  1. Vous pouvez vous connecter en tant que sysdba sur le serveur de base de données lui-même.
  2. Vous pouvez vous connecter en tant qu'utilisateur que vous essayez sur le serveur de base de données lui-même.
  3. Vous pouvez envoyer une requête ping au serveur de base de données à partir de l'ordinateur à partir duquel vous essayez de vous connecter.
  4. Vous pouvez écouter l'auditeur depuis l'ordinateur à partir duquel vous essayez de vous connecter.

Si tout cela est vérifié, vous voudrez peut-être créer une nouvelle ligne de connexion pour vous assurer que vous n'avez pas de faute de frappe.

2
Leigh Riffel

Peut-être que votre base de données n'est pas en place. Si la machine a été redémarrée et que l'instance n'est pas définie sur démarrage automatique (et qu'elle n'a pas été démarrée manuellement), vous devrez peut-être démarrer le service vous-même.

Si vous avez accès à l'écran Services, vous pouvez le faire à partir de là; ou, vous pouvez le faire à partir de la ligne de commande.

Accédez à l'invite de commandes et entrez les commandes suivantes:

set Oracle_sid=ORCL

net start oracleserviceORCL

Le premier définit le SID Oracle; le second démarre réellement le service.

1
Karthick

extrait de l'aide de sqlplus:

peut prendre la forme de Net Service Name ou Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
0
user82219