2017-11-10 1 views
0

某些上下文:我正在設置一個環境來運行我們的Lead編寫的一些Ruby代碼以連接到某些遠程數據庫。我使用Win10並安裝了WSL。我已經安裝了SQL * Plus,docker和Ruby,並且確定我已經安裝了所有依賴的gem(實際上在這一點上我知道它並不是一個ruby問題)。我使用Docker來使用Oracle數據庫的預先構建的映像,並且我已經用數據填充了它。ORA-12541 TNS:在1個特定遠程數據庫上沒有偵聽器,但在其他數據庫上沒有偵聽器

混淆企業DB信息:

'斷了' DB(TNS沒有監聽器)

  • 用戶名:W-WORK-DEV
  • 密碼:password
  • 主機:主機1
  • Port:999
  • SID:W-WORK-DB.tech.company

'工作' DB(可以連接就好了)

  • 用戶名:C-OLD-DEV
  • 密碼:password
  • 主機:主機2
  • 端口:999
  • SID:C-OLD-DB.tech.company

Please note the names I have provided here are purely for obfuscation, they do not represent anything about age or even config. They are essentially the same, just different databases on different hosts. Also note this is a corporate company and would have a lot of base infrastructure for their internal network.

我遇到的問題是,在我正在處理的特定數據庫中,我無法連接到它。我通過VPN(我在異地工作)連接到公司內部網,並且有問題連接到WORK-DB.tech.company,但我可以連接到C-OLD-DB.tech.company。方法我試圖用連接:

  • 的Oracle SQL Developer

我已經輸入所有正確的JDBC字符串和用戶名/密碼。 甚至要求其他人嘗試連接(至少3人)。他們都可以訪問C-OLD-DB以及W-WORK-DB。當使用這種方法時,我得到The network adapter could not establish the connection

Side note: I'm fairly sure I have connected to the DB just fine in the past, though I can't be certain because I'm fairly new to this team and have only accessed it once, if that.

  • 的SQL * Plus通過WSL

我安裝的SQL * Plus,因爲我覺得在運行腳本時,紅寶石被訪問它的一些能力。我已經到了腳本能夠連接到本地docker數據庫的地步,但是當它試圖連接到遠程數據庫時,它將返回TNS: no listener。我也嘗試過使用sqlplus,並得到相同的錯誤。

Example:

  • sqlplus C-OLD-DEV/[email protected]:999/C-OLD-DB.tech.company
    • This command works and connected to the DB jsut fine.
  • sqlplus W-WORK-DEV/[email protected]:999/W-WORK-DB.tech.company
    • This command gave me TNS: no listener.

在我的研究中,我發現提到了tnsnames.ora,sqlnet.ora和listener.ora。我在公司內部網上找到了相關文件,並試圖在我自己的個人環境中使用它們,但無濟於事(sqlnet之一。ora文件實際上阻止了我能夠連接任何)我發現有關與ruby相關的config/database.yml文件的提及,但我們的代碼已經設置了數據庫信息,並且我似乎在嘗試使用與腳本相同的解決方案通過sqlplus手動連接。

以下是我在執行這些安裝時設置的一些相關環境變量。我在想,在嘗試設置我的環境時,我搞砸了一些配置,這改變了sqldeveloper或sql plus連接到該數據庫的方式。

$ echo $ORACLE_HOME: /usr/lib/oracle/12.2/client64/

$ echo $TNS_ADMIN: /usr/lib/oracle/12.2/client64/network/admin

$ echo $LD_LIBRARY_PATH: /usr/lib/oracle/12.2/client64/lib

我希望我已經提供了所有我所遇到的和已清楚解釋了我的問題是,如果您有任何問題隨時對此發表評論,所以我可以把它清除掉的信息。感謝您的幫助。

+1

我認爲如果您無法連接到您引用的端口和主機上的偵聽器,您的示例中會顯示no listener error,端口999和host1。您可以嘗試使用ping來查看是否可以連接到host1。 –

+0

但是這不會導致其他人失敗嗎?我有幾個其他人通過SQL Developer成功連接到數據庫。 – krazyito65

+0

Ping工作正常: > $ ping host1 PING host1.tech.company(ip.address)56(84)字節的數據。 來自host1.tech.company(ip.address)的64字節:icmp_seq = 1 ttl = 57 time = 27.7 ms 來自host1.tech.company(ip.address)的64字節:icmp_seq = 2 ttl = 57 time = 25.9 ms 來自host1.tech.company(ip.address)的64字節:icmp_seq = 3 ttl = 57時間= 26.7 ms 來自host1.tech.company(ip.address)的64字節:icmp_seq = 4 ttl = 57時間= 26.0 ms ^ C --- host1.tech.company ping statistics --- 27個數據包傳輸,27個接收,0%數據包丟失,時間26018ms – krazyito65

回答

1

所以我的問題最終成爲'防火牆/端口'問題。最後,我發現我連接的特定端口被阻止,但我認爲這只是在我的系統上。原來我使用的VPN是阻止該端口的問題。公司有一個主數據中心和一個次要數據中心,顯然SDC VPN阻止了我的端口。我切換到使用PDC VPN,它的工作。

0

您是否使用64位jdbc驅動程序?

+0

我怎麼能找到這個? – krazyito65

+0

此外,我認爲這是某種配置問題..我似乎能夠連接到其他數據庫就好,只是不是我需要的。 – krazyito65

相關問題