轉:oracle的jdbc串連方式:oci和thin

來源:互聯網
上載者:User
oracle的jdbc串連方式:oci和thin

    oci和thin是Oracle提供的兩套Java訪問Oracle資料庫方式。

    thin是一種瘦用戶端的串連方式,即採用這種串連方式不需要安裝oracle用戶端,只要求classpath中包含jdbc驅動的jar包就行。thin就是純粹用Java寫的ORACLE資料庫提供者。
oci是一種胖用戶端的串連方式,即採用這種串連方式需要安裝oracle用戶端。oci是Oracle Call Interface的首字母縮寫,是ORACLE公司提供了提供者,就是使用Java來調用原生Oracle用戶端,然後再訪問資料庫,優點是速度 快,但是需要安裝和設定資料庫。

     從相關資料可以總結出以下幾點:
1. 從使用上來說,oci必須在客戶機上安裝oracle用戶端或才能串連,而thin就不需要,因此從使用上來講thin還是更加方便,這也是thin比較常見的原因。 
2. 原理上來看,thin是純java實現tcp/ip的c/s通訊;而oci方式,用戶端通過native java method調用c library訪問服務端,而這個c library就是oci(oracle called interface),因此這個oci總是需要隨著oracle用戶端安裝(從oracle10.1.0開始,單獨提供OCI Instant Client,不用再完整的安裝client) 
3. 它們分別是不同的驅動類別,oci是二類驅動, thin是四類驅動,但它們在功能上並無差異。

    從使用thin驅動切換到oci驅動在配置來說很簡單,只需把連接字串java:oracle:thin:@hostip:1521:執行個體名換為java:oracle:oci@本地服務名即可。如:從  
jdbc:oracle:thin:@10.1.1.2:1521:shdb  
改成  
jdbc:oracle:oci8:@shdb  
但 這裡這台機需安裝oracle資料庫的用戶端並配置本地服務名,同時還需指定NLS_LANG環境變數,NLS_LANG環境變數是用來控制用戶端在顯示 oracle資料庫的資料時所用的字元集和本地化習慣。通常把NLS_LANG的字元集部分指定為資料庫所用的字元集則就不會存在java顯示的亂碼問題 了。  
對於oracle資料庫用戶端的安裝,有二種選擇,一是老實的用oracle資料庫的安裝光碟片安裝對應版本的oracle用戶端。二是下載oracle提從的即時用戶端,即時用戶端是不用安裝的,把下載包解壓即可。  
要使java web正常的通過oci驅動訪問oracle,還需要用戶端正確的配置一下相關變數。主要如下:  
對於windows系統並使用oracle用戶端時:  
1. 把%ORACLE_HOME%lib加到PATH環境變數.  
2. 把%ORACLE_HOME%jdbclibclasses12.jar加到CLASSPATH環境變數裡.也可以把classes12.jar拷貝到tomcat的commanlib目錄下。  
對於windows系統並使用oracle的即時用戶端時(假定即時用戶端解壓在d盤):  
1. 把d:instantclient_10_2加到PATH環境變數  
2. 把d:instantclient_10_2classes12.jar加到CLASSPATH環境變數裡.也可以把classes12.jar拷貝到tomcat的commanlib目錄下。  

對於Linux系統並使用oracle用戶端時:  
1. 在使用tomcat的使用者主目錄下的.bash_profile檔案中加入  
exprot ORACLE_HOME=/u01/app/oracle/prodUCt/9.2.0.4  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib  
2. 把classes12.jar拷貝到tomcat的commanlib目錄下。

  
對於linux系統並使用oracle即時用戶端時:  
1. 在使用tomcat的使用者主目錄下的.bash_profile檔案中加入  
exprot ORACLE_HOME=/instantclient_10_2  
export LD_LIBRARY_PATH=$ORACLE_HOME/lib  
2. 把instantclient_10_2目錄下的classes12.jar拷貝到tomcat的commanlib目錄下。

  
假如一個tomcat下帶了幾個應用,且幾個應用都要串連oracle資料庫時,則要注重的時,不要在每個應用的WEB- INF/lib目錄下放入oracle的classes12.jar/zip檔案。而應該把classes12.jar/zip檔案放到tomcat的 common/lib目錄下。否則會出來ojdbclib9/10庫重複載入的錯誤。  

    使用oracle即時用戶端是,本地服務名的建立可以在目錄instantclient_10_2下建立tnsnames.ora下添加串連串,如:  

SHDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.236)(PORT = 1521)))  (CONNECT_DATA =(SERVICE_NAME = shdb)))即可。

來自: http://hi.baidu.com/anboqing/blog/item/5a7b49f4e36fb57ddcc4744a.html
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.