top
Loading...
Java程序使用OCI驅動連接Oracle數據庫
  
推薦:Java數據庫編程資料

摘要:配置java web應用使用OCI驅動來訪問oracle數據庫,如果在tomcat下有多個應用,且每個應用都要訪問oracle數據庫時的注意項事。Oracle的即時客戶端配置等。

公司各種產品的前端、后端差不多都是用java開發的Web應用且運行在tomcat里。根據oracle的說法,java程序連接oracle數據庫時,用oci驅動要比用thin驅動性能好些。主要的區別是使用thin驅動時,不需要安裝oracle的客戶端,而使用oci時則要安裝oracle的客戶端。

從使用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://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗