2014-07-19 163 views
0

我正試圖在構建於java swing上的系統中執行一個簡單的桌面應用程序。 此應用程序從計算機A中存在的oracle數據庫中提取數據。如何從另一臺計算機從oracle數據庫中獲取數據

我在計算機A中完成了開發工作,並構建了它的jar並將該jar保存在另一個系統中。 我已經啓動了oracle的所有服務,並在兩個系統之間創建了一個ad hoc網絡,但我無法從另一臺計算機執行該應用程序。我GOOGLE了很多,並做了上述改變。儘管如此,我仍然遇到了TNS監聽器的錯誤。

IOException: The network adapter could not establish the connection. 

終於我想把我的代碼放在這裏。請看下面的代碼:

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection connection =  
    DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/XE" 
           ,"system" 
           ,"system" ); 

請幫我這個。

我也嘗試修改tnsnames.ora文件,但沒有幫助。任何人都可以幫助我解決這個問題。

+0

你可以ping targer服務器嗎?你可以然後t目標數據庫? – OldProgrammer

回答

0

檢查listener.ora文件 - 服務綁定的IP地址是什麼,即該文件中指定的IP地址是什麼?如果是127.0.0.1,這將解釋它爲什麼在計算機A上工作,但不是B.

如果是這種情況,您應該先停止監聽器服務,備份listener.ora,編輯listener.ora,更改IP地址計算機A(可從計算機B訪問)的適當的一個,重新啓動偵聽器,然後重試。

使用tnsping測試連接是否有效,如果您沒有TNS ping,您可以嘗試「Telnet hostname port」(例如telnet computer-A 1521),如果它返回空白屏幕並在左上方閃爍光標,服務已經結束。

+0

嗨, 我試過這個解決方案,但它沒有奏效,我打開了listener.ora文件,並做出了以下更改。 (ADDRESS =(PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT = 1521)))。 ) 仍然iam得到相同的錯誤,當我用telnet主機名1521嘗試它返回錯誤說「失敗連接」。下面是我的tnsnames.ora文件更改 XE =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE) )) –

+0

你可以在計算機A上「telnet localhost 1521」嗎? 做出更改後,是否重新啓動了偵聽器? 防火牆運行是否阻止端口1521上的入站連接,或者您需要在防火牆上添加TNS的例外? 已嘗試禁用防火牆? 如果您使用Java瘦,TNSNAMES.ORA應該不重要,因爲您直接在連接字符串中提供相關詳細信息 - 這就是瘦驅動程序不需要安裝Oracle客戶端的原因。 也許如果您發佈了以下信息,它將有所幫助 - 兩臺PC上的ipconfig輸出,listener.ora,netstat -an。 – TenG

+0

嗨我也試過這個解決方案。下面是Listener.ora文件。 (SID_NAME = CLRExtProc) SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = F:\ oraclexe \ app \ oracle \ product \ 10.2.0 \ server) (PROGRAM = extproc) (ORACLE_HOME = F:\ oraclexe \ app \ oracle \ product \ 10.2。0 =服務器) (PROGRAM = extproc))) LISTENER =(描述列表=(協議= IPC)(KEY = EXTPROC_FOR_XE))(地址=(協議= TCP)(主機= 192.168.137.220) (PORT = 1521)))) DEFAULT_SERVICE_LISTENER =(XE) –

相關問題