2008-11-18 119 views
1

我想用cygwin的sqlplus連接到位於myserver.mycompany.com端口1530當我嘗試通過Cygwin的sqlplus

sqlplus [email protected]:1530/orcl 

我得到的錯誤遠程Oracle安裝連接到遠程Oracle:

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也能夠連接到數據庫。我究竟做錯了什麼?

回答

3

我不知道有一個本地cygwin客戶端爲甲骨文(糾正我,如果我在這裏錯了,但我不能在Oracle的網站上找到任何提及它)。如果您將Cygwin與Windows客戶端一起使用,則需要使用本地Windows路徑。它不會理解你的/ cygdrive路徑。

但是,我用Cygwin使用了Win32 Oracle客戶端,並使其工作 - 相同的shell腳本可以在Cygwin,Linux和Solaris上運行。

+0

不直接相關的問題在cmd窗口,但`cygpath`實用程序可以很方便的Windows和POSIX路徑之間來回轉換。 – xdhmoore 2013-03-21 15:34:47

3

沒有一個cygwin Oracle客戶端。如上所述,使用設置爲Windows路徑的ORACLE_HOME。

對於您的問題的前半部分,請嘗試查看TNS_NAMES env變量設置爲的內容,如果未設置,則可能需要嘗試將其設置爲正確的位置。通常它默認爲%ORACLE_HOME%/ network/admin/tnsnames.ora。 SQL Developer保留它自己的tnsnames文件副本,所以你不能通過回覆來解決問題。

+0

它是TNS_ADMIN環境變量,而不是TNS_NAMES。 – talek 2016-05-03 13:50:31

0

NXC是正確的 - 它不是我正在使用的cygwin客戶端,而是windows sqlplus客戶端。 我設置了ORACLE_HOMEORACLE_SID的windows環境變量,然後能夠使用tnsnames.ora中的net_service_name在cygwin bash shell中運行sqlplus。

0

它爲我工作的方式是消除/cygdrive/d/cygdrive/c並與d:/c:/然後cygwin的會話中的sqlplus通話將工作取而代之。 /cygdrive/DriveLetter令人困惑。

1

結合從其他的答案的細節(這花了我一點點,所以我將它張貼作爲單獨的答案,而不是評論):

$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。正如上面的僅僅是一個例子,你當然必須調整路徑以反映您的安裝/配置:)

0

我有同樣的錯誤和你一樣,

你應該設置不僅ORACLE_HOME在窗口變量,

而且PATH包括%ORACLE_HOME%\bin

那麼你就可以打開的窗戶在cmd,

嘗試sqlplus username/[email protected]_define_tnsname

如果還好,然後在cygwin中刪除所有ORACLE PATH設置,重啓cygwin,試試吧。

如果失敗,應該讓sqlplus的效果很好在第一