據我所知,使用jdbc鏈接上oracle有兩種方法:java
一、 使用thin鏈接數據庫
因爲thin驅動都是純Java代碼,而且使用TCP/IP技術經過java的Socket鏈接上Oracle數據庫,因此thin驅動是與平臺無關的,你無需安裝Oracle客戶端,只須要下載一個thin驅動的jar包,而且將環境變量中的CLASS_PATH變量中加入thin驅動的路徑就能夠了。Thin驅動雖然與平臺無關,也無需安裝Oracle客戶端,可是有一個致命的缺陷就是性能通常,達不到如OCI方式的企業級的要求。另外,若是一個oracle數據庫對應一臺主機,可使用thin鏈接;若是一個oracle數據庫對應四五臺主機(集羣服務器),使用thin時,須要把tnsnames.ora文件中的相關數據庫的整個鏈接字符串都拷貝下來,如此才能鏈接上oracle集羣數據庫。而這種方法也是和數位同事討論並Google了大量資料後才發現的。以前我一直覺得thin不支持集羣數據庫的方式。服務器
而後就是設置鏈接字符串了。這個是固定的寫法,以下所示:併發
Class.forName("oracle.jdbc.driver.OracleDriver");oracle
Connection conn =DriverManager.getConnection ("jdbc:oracle:thin:@10.87.134.107:1521:ora9","sms" , "zzsms");性能
在上面的鏈接字符串中,若是不是集羣數據庫就在@後直接輸入數據庫IP地址便可;若是是集羣數據庫,則須要在@後輸入tnsnames.ora文件中有關該數據庫的全部描述內容(一般是=後邊的全部的內容)。ci
二、 使用oci鏈接(Oracle Call Interface)文檔
使用OCI鏈接數據庫是企業級的作法,適應於單個數據庫和集羣數據庫,性能優越,尤爲是鏈接池功能大大提升了應用程序的性能和併發量。惟一的缺點是,若想使用OCI必需要安裝Oracle客戶端。字符串
安裝完Oracle客戶端後,裏面有個jdbc的文件夾,該文件夾下就包含了OCI驅動和THIN驅動。因此是不須要去網上下載的。這個驅動在jdbc/lib文件夾下,主要有classes12.jar、nls_charset12.jar等等。其中以12結尾的驅動包適應於jdk1.1以上的版本。以11結尾的適應於jdk1.1如下的版本。文件名中含有classes的jar包就是驅動程序,文件名中含有nls的jar包是與國際化有關的類。get
找到文件後,就須要把class和nls的jar包的絕對路徑加入CLASS_PATH環境變量,不然會報ClassNotFound的異常。
設置環境變量後,就能夠直接使用OCI驅動了,不要被「驅動」兩個字嚇壞了,(驅動就是一個可執行文件和一個鏈接字符串)。很簡單,無非是鏈接字符串的問題。標準的鏈接字符串以下所示:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:oci:@xxzc","duansiyuan", "oracle_password");
只要這兩行,就能夠保證鏈接到數據庫,而這個數據庫無論是單個數據庫仍是集羣數據庫。其中xxzc就是數據庫名,duansiyuan就是用戶名,oralce_password就是密碼。這種方式和C#中的方式比較相似。
須要注意的問題:
一、oracle_home/jdbc文件夾下有大量的樣板代碼和幫助文檔,裏面對如何安裝和使用jdbc都有詳細的說明,請引發高度重視並耐心閱讀。裏面有不少知識僅經過本身反覆的實踐是沒法獲取的。
二、若是想要高性能,請使用OCI鏈接,若是不想裝Oracle客戶端,請使用thin鏈接。