|
thin是一種瘦客戶端的連接方式,即采用這種連接方式不需要安裝oracle客戶端,只要求classpath中包含jdbc驅(qū)動(dòng)的jar包就行。thin就是純粹用Java寫的ORACLE數(shù)據(jù)庫訪問接口。 oci是一種胖客戶端的連接方式,即采用這種連接方式需要安裝oracle客戶端。oci是Oracle Call Interface的首字母縮寫,是ORACLE公司提供了訪問接口,就是使用Java來調(diào)用本機(jī)的Oracle客戶端,然后再訪問數(shù)據(jù)庫,優(yōu)點(diǎn)是速度 快,但是需要安裝和配置數(shù)據(jù)庫。 從相關(guān)資料可以總結(jié)出以下幾點(diǎn): 1. 從使用上來說,oci必須在客戶機(jī)上安裝oracle客戶端或才能連接,而thin就不需要,因此從使用上來講thin還是更加方便,這也是thin比較常見的原因。 2. 原理上來看,thin是純java實(shí)現(xiàn)tcp/ip的c/s通訊;而oci方式,客戶端通過native java method調(diào)用c library訪問服務(wù)端,而這個(gè)c library就是oci(oracle called interface),因此這個(gè)oci總是需要隨著oracle客戶端安裝(從oracle10.1.0開始,單獨(dú)提供OCI Instant Client,不用再完整的安裝client) 3. 它們分別是不同的驅(qū)動(dòng)類別,oci是二類驅(qū)動(dòng), thin是四類驅(qū)動(dòng),但它們在功能上并無差異。 從使用thin驅(qū)動(dòng)切換到oci驅(qū)動(dòng)在配置來說很簡單,只需把連接字符串java:oracle:thin:@hostip:1521:實(shí)例名換為java:oracle:oci@本地服務(wù)名即可。如:從 jdbc:oracle:thin:@10.1.1.2:1521:shdb 改成 jdbc:oracle:oci8:@shdb 但 這里這臺(tái)機(jī)需安裝oracle數(shù)據(jù)庫的客戶端并配置本地服務(wù)名,同時(shí)還需指定NLS_LANG環(huán)境變量,NLS_LANG環(huán)境變量是用來控制客戶端在顯示 oracle數(shù)據(jù)庫的數(shù)據(jù)時(shí)所用的字符集和本地化習(xí)慣。通常把NLS_LANG的字符集部分指定為數(shù)據(jù)庫所用的字符集則就不會(huì)存在java顯示的亂碼問題 了?! ?br>對于oracle數(shù)據(jù)庫客戶端的安裝,有二種選擇,一是老實(shí)的用oracle數(shù)據(jù)庫的安裝光盤安裝對應(yīng)版本的oracle客戶端。二是下載oracle提從的即時(shí)客戶端,即時(shí)客戶端是不用安裝的,把下載包解壓即可。 要使java web正常的通過oci驅(qū)動(dòng)訪問oracle,還需要客戶端正確的配置一下相關(guān)變量。主要如下: 對于windows系統(tǒng)并使用oracle客戶端時(shí): 1. 把%ORACLE_HOME%lib加到PATH環(huán)境變量. 2. 把%ORACLE_HOME%jdbclibclasses12.jar加到CLASSPATH環(huán)境變量里.也可以把classes12.jar拷貝到tomcat的commanlib目錄下?! ?br>對于windows系統(tǒng)并使用oracle的即時(shí)客戶端時(shí)(假定即時(shí)客戶端解壓在d盤): 1. 把d:instantclient_10_2加到PATH環(huán)境變量 2. 把d:instantclient_10_2classes12.jar加到CLASSPATH環(huán)境變量里.也可以把classes12.jar拷貝到tomcat的commanlib目錄下?! ?br> 對于Linux系統(tǒng)并使用oracle客戶端時(shí): 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系統(tǒng)并使用oracle即時(shí)客戶端時(shí): 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目錄下。 假如一個(gè)tomcat下帶了幾個(gè)應(yīng)用,且?guī)讉€(gè)應(yīng)用都要連接oracle數(shù)據(jù)庫時(shí),則要注重的時(shí),不要在每個(gè)應(yīng)用的WEB- INF/lib目錄下放入oracle的classes12.jar/zip文件。而應(yīng)該把classes12.jar/zip文件放到tomcat的 common/lib目錄下。否則會(huì)出來ojdbclib9/10庫重復(fù)加載的錯(cuò)誤?! ?br> 使用oracle即時(shí)客戶端是,本地服務(wù)名的建立可以在目錄instantclient_10_2下建立tnsnames.ora下添加連接串,如: SHDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.236)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = shdb)))即可。 |
|
|