Si al tratarse de conectar con sqlplus a una base de datos reciben el error ORA-12154, puede deberse a que tiene algún caracter en el password, que oracle interpreta de manera diferente.
Una forma fácil de diagnosticar esto, es cuando colocamos el password incorrecto, y recibimos el error:
ORA-01017: invalid username/password; logon denied
Pero al momento de colocar el correcto, recibimos:
ORA-12154: TNS:could not resolve the connect identifier specified
Esto se debe a que si tecleamos nuestro password correcto, este contiene caracteres que oracle interpreta de manera diferente.Si nuestro password contiene arroba "@", y tratamos de entrar a oracle, éste interpretara lo que sigue a la arroba como una instancia.
oracleserver(oracle):ORCL:oracle$ sqlplus test/Bcp@2010 SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 18 10:10:42 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. ERROR: ORA-12154: TNS:could not resolve the connect identifier specified
En este caso, oracle piensa que 2010 es el nombre de nuestra instancia, para corregirlo debemos de indicarle que la arroba es parte del password colocándolo entre comillas, y utilizando diagonal invertida para escapar las comillas.
oracleserver(oracle):ORCL:oracle$ sqlplus test/\"Bcp@2010\" SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 18 10:15:58 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine and Real Application Testing options
Otra forma es la siguiente:
oracleserver(oracle):ORCL:oracle$ sqlplus /nolog SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 18 10:21:11 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. SQL:.:(.):.> connect test/"Bcp@2010" Connected. SQL:.:(.):.>
Si no queremos mostrar el password, entonces debemos de teclearlo cuando lo solicite sqlplus, pero colocándolo entre comillas (como si fuera parte del password, pero en realidad solo le estamos indicando que el password se encuentra entre las comillas).
oracleserver(oracle):ORCL:oracle$ sqlplus test SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 18 10:24:38 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Enter password: <-- Colocar el password de la siguiente manera "Bcp@2010" (Teclear entre comillas) Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine and Real Application Testing options SQL:.:(.):.>