我正在尝试使用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也可以连接到数据库。我做错了什么?
答案 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_HOME
和ORACLE_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中运行良好