2013-01-25 32 views
1

我試圖使用Oracle JDBC瘦驅動程序連接到Oracle(11.2.0.2.0)數據庫(ojdbc6.jar for 11.2.0.2.0)和下面的JDBC URL語法:如何使用帶有TNSNames的JDBC瘦驅動程序連接Oracle數據庫別名語法

jdbc:oracle:thin:@abcd 

其中 'ABCD' 在我的tnsnames.ora文件中定義如下圖所示:

abcd, abcd.world, abcd.dk.xyz.com = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVICE_NAME = abcd) 
    ) 
) 

我所提供的VM選項-Doracle.net.tns_admin=/etc/tnsnames.oraOracle® Database JDBC Developer's Guide and Reference

我收到以下錯誤,當我運行應用程序:

Listener refused the connection with the following error: 
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA 

但是當我刪除別名abcd.world和abcd.dk.xyz.com從tnsnames.ora中,我的應用程序能夠連接到數據庫。

當tnsnames.ora文件中有多個別名時,ojdbc驅動程序是否存在問題?

我的JDK版本是1.6.0_31。

感謝, VJ

+1

oracle.net.tns_admin應指向到一個目錄不進一個文件。所以它應該是'-Doracle.net.tns_admin =/etc'。另請注意,數據庫集羣可能具有多個主機名,另外還有數十個DBA可能想要設置的連接參數。 tnsnames.ora真的應該是首選的方式。 JDBC網址太「愚蠢」了。 – ibre5041

回答

-1

理想情況下,你不應該通過TNS,因爲你需要在你的機器上安裝Oracle客戶端連接。

如果你使用一個連接的URL一樣跟着你並不需要一個Oracle客戶端:

jdbc:oracle:thin:@//host:port/service_name 
+1

你是對的。我更喜歡相同的。 Oracle客戶端安裝在每個環境中。我們被要求不要依賴於主機名和端口號,因爲這些可以隨時更改,或者可以在不同的環境中有所不同。同時也要儘量減少設置必須改變的地方。 以其他語言編寫的應用程序似乎對此設置沒有任何問題。 –

+0

如果你仍然想使用TNS我會建議以下鏈接:http://stackoverflow.com/questions/4832056/java-jdbc-how-to-connect-to-oracle-using-service-name-instead-of -sid。但主機和端口不應隨時間而隨機更改。他們應該是穩定的每個環境。你必須做的一件事是從你的應用程序外部化URL,以便可以爲每個環境設置。 – tom

+0

這個鏈接實際上是更好的:http://www.razorsql.com/articles/oracle_jdbc_connect.html – tom

3

它的樣子,Oracle JDBC驅動程序不能與多個服務名稱的工作。 使用這些條目

abcd = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVICE_NAME = abcd) 
    ) 
) 
    abcd.world, abcd.dk.xyz.com = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVICE_NAME = abcd) 
    ) 
) 
0

我能成功通過的tnsnames.ora連接到Oracle通過以下方式

  1. 下載和從甲骨文網站
  2. 放提取遷徙路線
  3. 下載latests ojdbcX.jar在驅動程序中的文件目錄進入飛橋文件夾
  4. 把路徑文件夾(您在其中找到flyway cli腳本)放在路徑(es:在linux上export PATH =/home/matteo/opt/f lyway
  5. 編輯飛行用二進制的/ home /利瑪竇的/ opt /飛路/遷徙路線投入JAVA_ARGS =「 - Doracle.net.tns_admin =指向包含tnsnames.ora中的文件夾
  6. 注意:用於飛行用腳本linux有以下幾行錯誤JAVA_ARGS =「 - Djava.security.egd = file:/ dev /../ dev/urandom $ JAVA_ARGS」你需要附加$ JAVA_ARGS不被覆蓋
  7. 編輯你的文件項目文件夾命名爲你想要例如flyway.conf
  8. 試飛這條命令

    fly way -configFile = flyway。CONF信息

我收到此輸出

遷飛4.0.3通過Boxfuse

數據庫:JDBC:預言:瘦:@ PSR.LAB_CERT(甲骨文11.2)

+ --------- ------------- + + + --------------------- ---- ----- +

|版本|說明|安裝在|上狀態|

+ --------- + ------------- + --------------------- + --------- +

|沒有發現遷移|

+ --------- + ------------- + --------------------- + --------- +

相關問題