JDBC thin的三種連接格式:
jdbc:oracle:thin:@//<host>:<port>/<service_name>
注意:@後有 //,這是與 使用SID的主要區別。
格式是Oracle 推薦的格式,因爲對於集羣來說,每個節點的SID 是不一樣的,但是SERVICE_NAME 確可以包含所有節點
jdbc:oracle:thin:@ip:端口:實例名 [實例名是database的instance_name]
jdbc:oracle:thin:@<TNS_ALIAS_NAME>
TNS_ALIAS_NAME 的實現可以在oracle軟件(完整的DB軟件或客戶端)中用tnsnames.ora參數文件來配置,也可用如下 格式:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=hostA)(PORT= 1522))(ADDRESS=(PROTOCOL=TCP)(HOST=your host)(PORT=1521)))(LOAD_BALANCE = yes)(CONNECT_DATA= (SERVER = DEDICATED)(SERVICE_NAME=your service_name)))
強烈推薦使用第1種,不要用第二種!
第3種也可以,對使用者有一定知識要求。
thin的第三種格式實現TNS_ALIA_NAME
用tnsnames.ora的示例:
String dbUrl = "jdbc:oracle:thin:@dvd";
報錯如下:
java.sql.SQLException: Unknown host specified
該問題是因爲JVM 沒有oracle.net.tns_admin的system property。
解決方法有2種:
方法一:在啓動VM 時添加如下參數:
-Doracle.net.tns_admin=D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
方法二:在java 代碼裏添加:
System.setProperty("oracle.net.tns_admin","D:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\NETWORK\\ADMIN");
方法三:設置環境變量TNS_ADMIN ,地址爲方法一後面等號值。