首页 文章

通过cygwin sqlplus连接到远程oracle

提问于
浏览
1

我正在尝试使用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

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

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

  • 3

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

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

  • 0

    结合其他答案的细节(这花了我一点点,所以我把它作为单独的答案而不是评论发布):

    $ORACLE_SID 和(如果设置) $TNS_ADMIN (可能还有其他与路径相关的 Oracle 变量)必须使用Windows路径 . 你的Cygwin $PATH 变量当然应该使用Cygwin表示法( /drives/c/… ) . 所以我已经加入了 .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
    

    在那之后,我没有更多的问题,例如 tnspingsqlplus . 由于以上只是一个示例,您当然必须调整路径以反映您的安装/配置:)

  • 3

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

  • 2

    它对我有用的方法是删除 /cygdrive/d/cygdrive/c 并用 d:/c:/ 替换它们然后在cygwin会话中的 sqlplus 调用将起作用 . /cygdrive/DriveLetter 令人困惑 .

  • 0

    我有和你一样的错误,

    你不仅应该在windows变量中设置 ORACLE_HOME

    但也 PATH 包括 %ORACLE_HOME%\bin

    然后你可以打开windows cmd,

    试试 sqlplus username/password@your_define_tnsname

    如果没关系,那么删除cygwin中的所有 ORACLE PATH 设置,重新启动cygwin,试试吧 .

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

相关问题