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