2012-12-03 88 views
1

我有一個程序想連接到我們網絡上的oracle數據庫。這個程序是用java編寫的,必須使用jdbc。我們的PC設置爲使用sqlnet.ora文件來確定如何解決的順序。我們所有的PC首先檢查ldap(其中ldap文件在所有這些PC上指向ldap服務器),然後使用tnsnames.ora文件,但現在這個文件是空的,所以基本上我想使用ldap,但是通過SQLNET.ORA。任何想法的連接將看起來像url參數?jdbc使用sqlnet.ora

+0

您是否在使用Type 4(thin)JDBC驅動程序?或者Type 2(OCI)JDBC驅動程序?如果您想使用Oracle客戶端的網絡配置文件,則需要使用OCI驅動程序。 –

+0

從來沒有這樣做過,所以不確定。我們在所有用戶PC上都安裝了Oracle客戶端11x,因此認爲OCI驅動程序帶有它? – user441521

回答

2

Oracle JDBC FAQ

jdbc:oracle:oci:@<<TNS alias>> 

其中<<TNS alias>>是LDAP條目如果你通過,比如連接,你會使用,在SQL * Plus

3

JDBC Developer's Guide

的oracle.net.tns_admin系統屬性必須設置爲tnsnames.ora文件的位置,以便JDBC Thin驅動程序可以找到tnsnames.ora文件。例如:

System.setProperty("oracle.net.tns_admin", "c:\\Temp"); 
String url = "jdbc:oracle:thin:@tns_entry"; 
DriverManager.getConnection(url, ...); 

,因爲系統屬性的,Thin驅動程序能夠找到tnsnames.ora文件,從而可以解決該URL指定的TNS名稱。由於瘦客戶端通常打算在沒有的Oracle客戶端安裝下工作,因此默認情況下未啓用此功能。

據我所知,你只需要需要tnsnames.ora,即使在指定TNS名稱時使用瘦驅動程序也不需要Oracle客戶機。

如果你的程序不允許設置系統屬性,你有兩個選擇:

  1. 啓動程序java -Doracle.net.tns_admin=c:/foobar ...
  2. 時集,其中包含-Doracle.net.tns_admin=c:/foobar變量JAVA_TOOLS_OPTIONS的環境中指定。然後將由任何 Java程序被拾起automtically
+0

不能使用TNS名稱。這些PC上的TNS名稱文件是空的。首先需要使用sqlnet.ora來查看ldap文件。此外,這是通過登錄類型屏幕爲應用程序無代碼連接,所以沒有在哪裏添加屬性。 – user441521

+0

通過此程序的連接配置屏幕沒有設置該屬性的位置。 – user441521

+0

@ user441521:這些機器上是否安裝了Oracle客戶機(即時客戶機或普通客戶機)?在這種情況下,您可以使用OCI驅動程序,請參閱此處:http://docs.oracle.com/cd/E11882_01/java.112 /e16548/instclnt.htm#autoId16 –