oracle thin和oci 区别
前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。
Features of?Oracle?JDBC Drivers:
1.JDBC Oci 此驅(qū)動(dòng)類似于傳統(tǒng)的ODBC 驅(qū)動(dòng)。因?yàn)樗枰狾racle Call Interface and Net8,所以它需要在運(yùn)行使用此驅(qū)動(dòng)的Java程序的機(jī)器上安裝客戶端軟件
?
2.JDBC Thin 這種驅(qū)動(dòng)一般用在運(yùn)行在WEB瀏覽器中的JAVA程序。它不是通過(guò)OCI or Net8,而是通過(guò)Java?sockets進(jìn)行通信 ,因此不需要在使用JDBC Thin的客戶端機(jī)器上安裝客戶端軟件
?
連接Oracle數(shù)據(jù)庫(kù)提供了兩中方式OCI方式和thin方式,OCI方式是通過(guò)本地動(dòng)態(tài)連接庫(kù)和Oracle進(jìn)行套接字通訊,速度和安全性比較好,thin方式是通過(guò)遠(yuǎn)程訪問(wèn)Oracle。一般情況,OIC方式用于服務(wù)器端開(kāi)發(fā)的數(shù)據(jù)庫(kù)連接方式而thin方式可用于applet等需要遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)的方式。
?
-----------------------------------------------------------
根據(jù)oracle的說(shuō)法,java程序連接oracle數(shù)據(jù)庫(kù)時(shí),用oci驅(qū)動(dòng)要比用thin驅(qū)動(dòng)性能好些。主要的區(qū)別是使用thin驅(qū)動(dòng)時(shí),不需要安裝oracle的客戶端,而使用oci時(shí)則要安裝oracle的客戶端。
從使用thin驅(qū)動(dòng)切換到oci驅(qū)動(dòng)在配置來(lái)說(shuō)很簡(jiǎn)單,只需把連接字符串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ù)庫(kù)的客戶端并配置本地服務(wù)名,同時(shí)還需指定NLS_LANG環(huán)境變量,NLS_LANG環(huán)境變量是用來(lái)控制客戶端在顯示oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)時(shí)所用的字符集和本地化習(xí)慣。通常把NLS_LANG的字符集部分指定為數(shù)據(jù)庫(kù)所用的字符集則就不會(huì)存在java顯示的亂碼問(wèn)題了。
對(duì)于oracle數(shù)據(jù)庫(kù)客戶端的安裝,有二種選擇,一是老實(shí)的用oracle數(shù)據(jù)庫(kù)的安裝光盤安裝對(duì)應(yīng)版本的oracle客戶端。二是下載oracle提從的即時(shí)客戶端,即時(shí)客戶端是不用安裝的,把下載包解壓即可。
要使java web正常的通過(guò)oci驅(qū)動(dòng)訪問(wèn)oracle,還需要客戶端正確的配置一下相關(guān)變量。主要如下:
對(duì)于windows系統(tǒng)并使用oracle客戶端時(shí):
1. 把%ORACLE_HOME%\lib加到PATH環(huán)境變量.
2. 把%ORACLE_HOME%\jdbc\lib\classes12.jar加到CLASSPATH環(huán)境變量里.也可以把classes12.jar拷貝到tomcat的comman\lib目錄下。
對(duì)于windows系統(tǒng)并使用oracle的即時(shí)客戶端時(shí)(假定即時(shí)客戶端解壓在d盤):
1. 把d:\instantclient_10_2加到PATH環(huán)境變量
2. 把d:\instantclient_10_2\classes12.jar加到CLASSPATH環(huán)境變量里.也可以把classes12.jar拷貝到tomcat的comman\lib目錄下。
對(duì)于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的comman\lib目錄下。
對(duì)于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的comman\lib目錄下。
如果一個(gè)tomcat下帶了幾個(gè)應(yīng)用,且?guī)讉€(gè)應(yīng)用都要連接oracle數(shù)據(jù)庫(kù)時(shí),則要注意的時(shí),不要在每個(gè)應(yīng)用的WEB-INF/lib目錄下放入 oracle的classes12.jar/zip文件。而應(yīng)該把classes12.jar/zip文件放到tomcat的common/lib目錄下。否則會(huì)出來(lái)ojdbclib9/10庫(kù)重復(fù)加載的錯(cuò)誤。
使用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)
??????)
)
總結(jié):
- 從使用上來(lái)說(shuō),oci必須在客戶機(jī)上安裝oracle客戶端或才能連接,而thin就不需要,因此從使用上來(lái)講thin還是更加方便,這也是thin比較常見(jiàn)的原因。
- 原理上來(lái)看,thin是純java實(shí)現(xiàn)tcp/ip的c/s通訊;而oci方式,客戶端通過(guò)native java method調(diào)用c library訪問(wèn)服務(wù)端,而這個(gè)c library就是oci(oracle called interface),因此這個(gè)oci總是需要隨著oracle客戶端安裝(從oracle10.1.0開(kāi)始,單獨(dú)提供OCI Instant Client,不用再完整的安裝client)
- 它們分別是不同的驅(qū)動(dòng)類別,oci是二類驅(qū)動(dòng), thin是四類驅(qū)動(dòng),但它們?cè)诠δ苌喜o(wú)差異。
?
另外1)從使用上來(lái)說(shuō),oci必須在客戶機(jī)上安裝oracle客戶端或才能連接,而thin就不需要,因此從使用上來(lái)講thin還是更加方便,這也是thin比較常見(jiàn)的原因。?
2)原理上來(lái)看,thin是純java實(shí)現(xiàn)tcp/ip的c/s通訊;而oci方式,客戶端通過(guò)native java method調(diào)用c library訪問(wèn)服務(wù)端,而這個(gè)c library就是oci(oracle called interface),因此這個(gè)oci總是需要隨著oracle客戶端安裝(從oracle10.1.0開(kāi)始,單獨(dú)提供OCI Instant Client,不用再完整的安裝client)
3)它們分別是不同的驅(qū)動(dòng)類別,oci是二類驅(qū)動(dòng), thin是四類驅(qū)動(dòng),但它們?cè)诠δ苌喜o(wú)差異。
4)雖然很多人說(shuō)oci的速度快于thin,但找了半天沒(méi)有找到相關(guān)的測(cè)試報(bào)告。
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的oracle thin和oci 区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS无法运行调试
- 下一篇: centos6.5 安装 kong 网关