views:

2290

answers:

3

I'm trying to use cygwin sqlplus to connect to a remote oracle installation located at myserver.mycompany.com port 1530. When I try

sqlplus [email protected]:1530/orcl

I get the error:

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

When I set ORACLE_HOME to /cygdrive/c/oracle/product/10.2.0/client_1, I get a different error:

Error 6 initializing SQL*Plus
Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

I can telnet to the server's port 1530, and the SQL Developer installed locally is also able to connect to the database. What am I doing wrong?

+2  A: 

I wasn't aware there was a native cygwin client for Oracle (correct me if I'm wrong here but I can't find any mention of it on Oracle's web site either). If you're using Cygwin with the Windows client you need to use a native windows path. It won't understand your /cygdrive path.

However, I have used Win32 Oracle clients with cygwin and made it work - the same shell scripts would work on Cygwin, Linux and Solaris.

ConcernedOfTunbridgeWells
+1  A: 

There isn't a cygwin Oracle client. As above answer, use the ORACLE_HOME set to the windows path.

For the first half of your question, try seeing what the TNS_NAMES env variable is set to, and if not set, you may need to try setting it to the correct place. Usually it defaults to %ORACLE_HOME%/network/admin/tnsnames.ora . SQL Developer keeps it's own copy of the tnsnames file, so you can't reply upon that to fix the problem.

Thomas Jones-Low
A: 

NXC is right - it wasn't a cygwin client I was using, but the windows sqlplus client. I set the windows environment variables for ORACLE_HOME and ORACLE_SID and was then able to run sqlplus in a cygwin bash shell using the net_service_name from tnsnames.ora.

MCS