web-dev-qa-db-fra.com

SQL * Plus ERREUR: ORA-12154: TNS: impossible de résoudre l'identificateur de connexion spécifié

J'ai installé Sql * PLUS sur un environnement cloud Oracle Linux afin d'accéder à une base de données distante. J'ai utilisé les instructions d'installation fournies comme réponse ici: https://stackoverflow.com/questions/23488394/how-to-install-sql-plus-client-in-linux

Ma chaîne de connexion est correcte, mais j'obtiens l'erreur

ERROR: ORA-12154: TNS:could not resolve the connect identifier specified

J'ai essayé de résoudre ce problème en essayant de regarder mon tnsnames.ora, Mais il n'existait pas et le chemin d'accès connecté à mon $Oracle_HOME N'avait pas les sous-dossiers "/network/admin/". Afin de résoudre ce problème, j'ai créé les deux dossiers et créé un fichier tnsnames.ora Dans le nouveau admin/ Contenant ma chaîne de connexion. Malheureusement, je reçois toujours la même erreur.

Le chemin vers mon nouveau fichier tnsnames.ora Étant: /usr/lib/Oracle/11.2/client64/network/admin/tnsnames.ora

Pour référence, ma chaîne de connexion est structurée de la manière suivante:

(DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(Host= asdasdasd.com)(PORT=1524))
    (CONNECT_DATA =
      (SID = AARCER1)
    )
  )

Et ma commande que je mets dans mon terminal est: sqlplus "userName/myPassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=asdasdasd.com)(PORT=1524))(CONNECT_DATA=(SID=AARCER1)))"

Que dois-je faire pour résoudre cette erreur?

6
beckah

Lorsque vous utilisez sqlplus userName/myPassword@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=asdasdasd.com)(PORT=1524))(CONNECT_DATA=(SID=AARCER1)))", vous n'avez pas besoin de fichier tnsnames.ora.

Votre entrée dans le fichier tnsnames.ora Devrait ressembler à ceci:

AARCER1 = (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(Host= asdasdasd.com)(PORT=1524))
    (CONNECT_DATA =
      (SID = AARCER1)
    )
  )

Ensuite, vous pouvez raccourcir votre commande à sqlplus userName/myPassword@AARCER1 - c'est le but de tnsnames.ora.

Pour utiliser tnsnames.ora, Vous devez également disposer du fichier sqlnet.ora. Là, vous avez besoin d'une entrée comme celle-ci:

NAMES.DIRECTORY_PATH = (TNSNAMES)

Cependant, la valeur par défaut est NAMES.DIRECTORY_PATH=(tnsnames, ldap, ezconnect), donc vous pouvez en fait l'ignorer.

Définissez la variable d'environnement TNS_ADMIN À l'emplacement de ces fichiers, c'est-à-dire.

export TNS_ADMIN=/usr/lib/Oracle/11.2/client64/network/admin
6

Vous pouvez également éviter le fichier tnsnames.ora en utilisant la méthode EZ Connect.

sqlplus scott/[email protected]:1524/<service name goes here>

Vous pouvez obtenir le nom de votre service en exécutant la commande lsnrctl status.

0
Stringer