ORACLE的JDBC鏈接方式:OCI和THIN

oracle的jdbc鏈接方式:oci和thin

   oci和thin是Oracle提供的兩套Java訪問Oracle數據庫方式。java

   thin是一種瘦客戶端的鏈接方式,即採用這種鏈接方式不須要安裝oracle客戶端,只要求classpath中包含jdbc驅動的jar包就行。thin就是純粹用Java寫的ORACLE數據庫訪問接口。
oci是一種胖客戶端的鏈接方式,即採用這種鏈接方式須要安裝oracle客戶端。oci是Oracle Call Interface的首字母縮寫,是ORACLE公司提供了訪問接口,就是使用Java來調用本機的Oracle客戶端,而後再訪問數據庫,優勢是速度 快,可是須要安裝和配置數據庫。linux

    從相關資料能夠總結出如下幾點:
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是四類驅動,但它們在功能上並沒有差別。web

   從使用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目錄下。windows


對於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


假如一個tomcat下帶了幾個應用,且幾個應用都要鏈接oracle數據庫時,則要注重的時,不要在每一個應用的WEB- INF/lib目錄下放入oracle的classes12.jar/zip文件。而應該把classes12.jar/zip文件放到tomcat的 common/lib目錄下。不然會出來ojdbclib9/10庫重複加載的錯誤。  bash

   使用oracle即時客戶端是,本地服務名的創建能夠在目錄instantclient_10_2下創建tnsnames.ora下添加鏈接串,如:  oracle

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

相關文章
相關標籤/搜索