通过cygwin sqlplus连接到远程oracle

时间:2008-11-18 17:38:44

标签: oracle cygwin sqlplus

我正在尝试使用cygwin sqlplus连接到位于myserver.mycompany.com端口1530的远程oracle安装。当我尝试

sqlplus username@myserver.mycompany.com:1530/orcl

我收到错误:

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

当我将ORACLE_HOME设置为/ cygdrive/c/oracle/product/10.2.0/client_1时,我收到了另一个错误:

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

我可以telnet到服务器的端口1530,本地安装的SQL Developer也可以连接到数据库。我做错了什么?

6 个答案:

答案 0 :(得分:3)

我不知道有一个针对Oracle的本地cygwin客户端(如果我在这里错了,请纠正我,但我也无法在Oracle的网站上找到它)。如果您将Cygwin与Windows客户端一起使用,则需要使用本机Windows路径。它不会理解您的/ cygdrive路径。

但是,我已经将Win32 Oracle客户端与cygwin一起使用并使其工作 - 相同的shell脚本可以在Cygwin,Linux和Solaris上运行。

答案 1 :(得分:3)

没有cygwin Oracle客户端。如上所述,使用设置为Windows路径的ORACLE_HOME。

对于问题的前半部分,请尝试查看TNS_NAMES env变量的设置,如果未设置,则可能需要尝试将其设置到正确的位置。通常默认为%ORACLE_HOME%/ network / admin / tnsnames.ora。 SQL Developer保留了自己的tnsnames文件副本,因此您无法回复此问题以解决问题。

答案 2 :(得分:2)

结合其他答案的详细信息(这让我有点意见,所以我将其作为单独的答案而不是评论发布):

$ORACLE_SID$TNS_ADMIN以及$PATH(可能还有其他与路径相关的 Oracle 变量)必须使用Windows路径。您的Cygwin /drives/c/…变量当然应该使用Cygwin表示法(.bashrc)。所以我已加入我的export ORACLE_HOME=c:\\Oracle\\product\\12.1.0\\dbhome_1 export TNS_ADMIN=d:\\Oracle\TNSAdmin export PATH=$PATH:$(cygpath -u $ORACLE_HOME)/BIN

tnsping

之后,我没有更多问题,例如sqlplus或{{1}}。由于上面只是一个示例,您当然必须调整路径以反映您的安装/配置:)

答案 3 :(得分:0)

NXC是对的 - 它不是我使用的cygwin客户端,而是windows sqlplus客户端。 我为ORACLE_HOMEORACLE_SID设置了windows环境变量,然后使用来自tnsnames.ora的net_service_name在cygwin bash shell中运行sqlplus。

答案 4 :(得分:0)

它对我有用的方法是删除/cygdrive/d/cygdrive/c并将其替换为d:/c:/,然后将您的sqlplus调用替换为cygwin会议将有效。 /cygdrive/DriveLetter令人困惑。

答案 5 :(得分:0)

我和你一样有错误,

您不仅应该在Windows变量中设置ORACLE_HOME

PATH也包括%ORACLE_HOME%\bin

然后你可以打开windows cmd,

尝试sqlplus username/password@your_define_tnsname

如果没问题,那么删除cygwin中的所有ORACLE PATH设置,重启cygwin,试试吧。

如果失败,首先应该让sqlplus在windows cmd中运行良好