데이터 베이스 MySQL 튜토리얼 java访问oracle的jdbc连接方式:oci和thin

java访问oracle的jdbc连接方式:oci和thin

Jun 07, 2016 pm 03:27 PM
java jdbc oracle 방법 입장 연결하다

http://hi.baidu.com/anboqing/blog/item/5a7b49f4e36fb57ddcc4744a.html 最近在学习使用java语言连接oracle数据库,特意查询了jdbc的两种连接方式 oci 和 thin 是 Oracle 提供的两套 Java 访问 Oracle 数据库方式。 thin 是一种瘦客户端的连接方式,即采用

http://hi.baidu.com/anboqing/blog/item/5a7b49f4e36fb57ddcc4744a.html

 

最近在学习使用java语言连接oracle数据库,特意查询了jdbc的两种连接方式

 

 

    ocithinOracle提供的两套Java访问Oracle数据库方式。

    thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。thin就是纯粹用Java写的ORACLE数据库访问接口。
oci
是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。ociOracle Call Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度快,但是需要安装和配置数据库。

     从相关资料可以总结出以下几点:
1.
从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。 
2.
原理上来看,thin是纯java实现tcp/ipc/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拷贝到tomcatcommanlib目录下。  
对于windows系统并使用oracle的即时客户端时(假定即时客户端解压在d):  
1.
d:instantclient_10_2加到PATH环境变量  
2.
d:instantclient_10_2classes12.jar加到CLASSPATH环境变量里.也可以把classes12.jar拷贝到tomcatcommanlib目录下。  


对于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拷贝到tomcatcommanlib目录下。

  
对于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拷贝到tomcatcommanlib目录下。

  
假如一个tomcat下带了几个应用,且几个应用都要连接oracle数据库时,则要注重的时,不要在每个应用的WEB- INF/lib目录下放入oracleclasses12.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)))即可。

 

 

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

자바의 완전수 자바의 완전수 Aug 30, 2024 pm 04:28 PM

자바의 완전수

Java의 난수 생성기 Java의 난수 생성기 Aug 30, 2024 pm 04:27 PM

Java의 난수 생성기

자바의 웨카 자바의 웨카 Aug 30, 2024 pm 04:28 PM

자바의 웨카

Java의 스미스 번호 Java의 스미스 번호 Aug 30, 2024 pm 04:28 PM

Java의 스미스 번호

Java Spring 인터뷰 질문 Java Spring 인터뷰 질문 Aug 30, 2024 pm 04:29 PM

Java Spring 인터뷰 질문

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까? Feb 07, 2025 pm 12:09 PM

Java 8 Stream foreach에서 나누거나 돌아 오시겠습니까?

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드 Oct 11, 2024 pm 06:30 PM

Java Made Simple: 초보자를 위한 프로그래밍 능력 가이드

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍 Oct 13, 2024 pm 01:32 PM

미래를 창조하세요: 완전 초보자를 위한 Java 프로그래밍

See all articles