Connectez-vous à SQL plus à partir de la ligne de commande à l'aide de la chaîne de connexion

41

Disons que j'ai une base de données Oracle. J'ai un nom d'utilisateur = x, mot de passe = y, base de données = z. De plus, je connais le port = a, le SID = b, le nom d’hôte = c.

Alors, comment dois-je me connecter correctement? J'ai utilisé beaucoup d'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)))

La soumission de ces lignes de commande me renvoie généralement des messages d'erreur tels que:

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

Merci d'avance!!

Edvinas
la source
3
En supposant que vous ayez le bon hôte / port, il me semble que l'instance n'est pas en cours d'exécution ou n'est pas enregistrée avec le programme d'écoute.
Colin 't Hart
1
avec ezconnect:sqlplus x/y@c:a/b
Dieter DHoker
1
pour mémoire, votre deuxième exemple (au moins) fonctionne pour moi si je l’entoure de guillemets. comme x @ "(DESCRIPTION = (ADRESSE = (PROTOCOL = TCP) (HÔTE = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack
Ouvrir -> services dans la fenêtre Démarrer-> oracleservicexe Cela fonctionne pour moi.
Prakash

Réponses:

75

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.

Hanspeter Oberlin
la source
2
Cela fonctionne parfaitement
Gajotres
4
quelle version? Cela ne fonctionne pas pour moi sur CentOS ERREUR: ORA-12154: TNS: impossible de résoudre l'identifiant de connexion spécifié
Edmondo1984
Numéro de port par défaut: 1521
Ivan Chau Le
4
J'ai SID au lieu de service, donc utiliser ":" au lieu de "/" a fonctionné pour moi. Nom d'utilisateur / mot de passe sqlplus @ host: port: sid
Pratik Goenka
1
sqlplus fourni v11.2.0.1.0ne supporte pas la host:portsyntaxe. Semble 11.2.0.4.0déjà soutient ...
gavenkoa
12

Le plus simple consiste à utiliser le fichier tnsnames.ora pour se connecter à la base de données. Pour cela, éditez-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)
 )
)

et alors vous pourriez vous connecter à la base de données:

sqlplus x / y @ myDb

Eliatou
la source
Pour éviter d'avoir un mot de passe sur la ligne de commande, consultez les liens dans les commentaires ici: serverfault.com/a/87038/27813
rogerdpack
7

À 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))))'
O Godoy
la source
2

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 d'utiliser 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 utiliser l'écouteur depuis l'ordinateur sur lequel vous essayez de vous connecter.

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

Leigh Riffel
la source
1

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 configurée pour le démarrage automatique (et si 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 depuis la ligne de commande.

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

set oracle_sid=ORCL

net start oracleserviceORCL

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

Karthick
la source
0

extrait de sqlplus help:

peut être sous la forme de nom de service réseau ou de connexion facile.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
utilisateur82219
la source
-2

J'ai trouvé qu'il est facile d'établir une connexion de bureau à distance et d'ouvrir l'invite de commande, puis de se connecter par:

sqlplus sys/YourPassword as sysdba

Kelly
la source
-3

Vous devriez démarrer les services de vos bases de données. Pour cela, allez dans le menu Démarrer -> Exécuter et démarrer. services.mscRecherchez ensuite les services de bases de données et démarrez-le. Après cela, ça va commencer à fonctionner.

utilisateur139417
la source
-4

Cela fonctionne pour moi sur Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Agron Daka
la source