我正在尝试使用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 回答
我不知道有一个针对Oracle的本地cygwin客户端(纠正我,如果我在这里错了,但我也无法在Oracle的网站上找到它) . 如果您将Cygwin与Windows客户端一起使用,则需要使用本机Windows路径 . 它不会理解你的/ cygdrive路径 .
但是,我已经将Win32 Oracle客户端与cygwin一起使用并使其工作 - 相同的shell脚本可以在Cygwin,Linux和Solaris上运行 .
没有cygwin Oracle客户端 . 如上所述,使用设置为Windows路径的ORACLE_HOME .
对于问题的前半部分,请尝试查看TNS_NAMES env变量的设置,如果未设置,则可能需要尝试将其设置到正确的位置 . 通常默认为%ORACLE_HOME%/ network / admin / tnsnames.ora . SQL Developer保留了自己的tnsnames文件副本,因此您无法回复此问题以解决问题 .
结合其他答案的细节(这花了我一点点,所以我把它作为单独的答案而不是评论发布):
$ORACLE_SID
和(如果设置)$TNS_ADMIN
(可能还有其他与路径相关的 Oracle 变量)必须使用Windows路径 . 你的Cygwin$PATH
变量当然应该使用Cygwin表示法(/drives/c/…
) . 所以我已经加入了.bashrc
:在那之后,我没有更多的问题,例如
tnsping
或sqlplus
. 由于以上只是一个示例,您当然必须调整路径以反映您的安装/配置:)NXC是对的 - 它不是我使用的cygwin客户端,而是windows sqlplus客户端 . 我为
ORACLE_HOME
和ORACLE_SID
设置了windows环境变量,然后使用tnsnames.ora中的net_service_name
在cygwin bash shell中运行sqlplus .它对我有用的方法是删除
/cygdrive/d
或/cygdrive/c
并用d:/
或c:/
替换它们然后在cygwin会话中的sqlplus
调用将起作用 ./cygdrive/DriveLetter
令人困惑 .我有和你一样的错误,
你不仅应该在windows变量中设置
ORACLE_HOME
,但也
PATH
包括%ORACLE_HOME%\bin
然后你可以打开windows cmd,
试试
sqlplus username/password@your_define_tnsname
如果没关系,那么删除cygwin中的所有
ORACLE PATH
设置,重新启动cygwin,试试吧 .如果失败,首先应该让sqlplus在windows cmd中运行良好