[英]connecting to remote oracle via 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
我可以te.net到服務器的1530端口,本地安裝的SQL Developer也可以連接數據庫。 我究竟做錯了什么?
我不知道有Oracle的本地cygwin客戶端(如果我在這里錯了,請改正我的名字,但我在Oracle網站上也找不到任何提及)。 如果將Cygwin與Windows客戶端一起使用,則需要使用本機Windows路徑。 它不會理解您的/ cygdrive路徑。
但是,我已將Win32 Oracle客戶端與cygwin一起使用並使其工作-相同的shell腳本將在Cygwin,Linux和Solaris上工作。
沒有cygwin Oracle客戶端。 如上答案,使用ORACLE_HOME設置為Windows路徑。
對於問題的前半部分,請嘗試查看TNS_NAMES env變量設置為什么,如果未設置,則可能需要嘗試將其設置到正確的位置。 通常,它默認為%ORACLE_HOME%/ network / admin / tnsnames.ora。 SQL Developer保留它自己的tnsnames文件副本,因此您無法對此進行回復以解決問題。
結合其他答案的細節(花了我一些時間,所以我將其作為單獨的答案而不是評論發布):
$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
在那之后,我不再有其他問題,例如調用tnsping
或sqlplus
。 上面只是一個示例,您當然必須調整路徑以反映您的安裝/配置:)
它對我/cygdrive/d
的方法是刪除/cygdrive/d
或/cygdrive/c
並用d:/
或c:/
替換它們,然后在cygwin會話中執行sqlplus
調用。 /cygdrive/DriveLetter
令人困惑。
NXC是正確的-它不是我使用的cygwin客戶端,但是Windows sqlplus客戶端。 我為ORACLE_HOME
和ORACLE_SID
設置了Windows環境變量,然后能夠使用tnsnames.ora中的net_service_name
在cygwin bash shell中運行sqlplus。
我也有和你一樣的錯誤
您不僅應在Windows變量中設置ORACLE_HOME
,
而且PATH
包含%ORACLE_HOME%\\bin
然后您可以打開Windows cmd,
嘗試sqlplus username/password@your_define_tnsname
如果可以,請刪除cygwin中的所有ORACLE PATH
設置,重新啟動cygwin,然后嘗試進行設置。
如果失敗,首先應該讓sqlplus在Windows cmd中正常工作
我配置了 TNS_ADMIN 變量並且它在 Win Environ 中正常工作
export TNS_ADMIN=$(cygpath -m $TNS_ADMIN)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.