2016-05-16 30 views
0

任務將Java代碼連接到Oracle 11.2數據庫,並且無法將其連接到具有的TMS監聽器已禁用。該代碼預計將在與數據庫相同的機器上運行,所以我的理解是可能的連接無法使用JDBCto Oracle DB禁用偵聽器

當給出正確的用戶和密碼時,SQLPlus可以在本地連接。

我不會添加所有我嘗試過的代碼,但看起來很像這樣(現在):How to connect JDBC to tns oracle。在這一點上,我只是猜測連接字符串,沒有運氣。

雖然,我不確定它是否恰當,但下面是tnsnames.ora結構。

XE = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

EXTPROC_CONNECTION_DATA = ... 
ORACLR_CONNECTION_DATA = ... 

[編輯]忘了提,有現有的.NET代碼,能夠進行連接。不是.NET開發人員,但這是我認爲是相關的代碼。

Dim oConn As New OracleConnection 

oConn.ConnectionString = String.Format("User id={0};Password={1};", "***", "***") 
oConn.Open() 
oConn.Close() 

回答

0

根據定義,tns連接是需要偵聽器的網絡連接。客戶端和db無關緊要,它仍然使用tns(網絡)協議。

1

當偵聽器關閉時,仍然可以通過共享內存(IPC)連接到數據庫。但是它的選項不受瘦(純Java)JDBC驅動程序的支持。

所以你選擇是:僅在本地主機127.0.0.1

  • 啓動監聽器。所以它不能從外部訪問
  • 使用JDBC OCI驅動程序,但是這個不容易設置。

    XE= 
    (DESCRIPTION = 
        (ADDRESS_LIST = 
        (ADDRESS = (PROTOCOL = IPC)(Key = IPCKEY)) 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 
    ) 
        (CONNECT_DATA = (SID = XE)) 
    ) 
    
+0

監聽器是不是一種選擇,去嘗試OCI路線。我可以在這裏找到最好的文檔:https://docs.oracle.com/cd/B28359_01/java.111/b31224/instclnt.htm#CHDIHGEF。你能建議其他可能有用的資源嗎? –

+0

我不明白爲什麼監聽器不是一個選項,但共享內存這些天不被廣泛使用。這是來自*古代*的東西。 – ibre5041

+0

我沒有擁有數據庫,並且出於安全原因,所做的團隊難以改變。得到我的東西是,sqlplus可以很好地連接,並且我認爲(也許不正確)它是用Java編寫的。 –