oracle的jdbc连接方式:oci和thin

oci和thin是Oracle提供的两套Java访问Oracle数据库方式。

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

从相关资料可以总结出以下几点:
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是四类驱动,但它们在功能上并无差异。

从使用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://hi.baidu.com/anboqing/blog/item/5a7b49f4e36fb57ddcc4744a.html

转载于:https://www.cnblogs.com/toSeeMyDream/p/5539736.html

转:ORACLE的JDBC连接方式:OCI和THIN相关推荐

  1. Oracle 11g DRCP连接方式——基本原理

    学习Oracle是一个复杂.繁琐的过程.在浩如烟海的Oracle官方资料.新特性.MOS资料和各种Internal知识面前,我们总是觉得力不从心.不知所措.但是,这往往也就是我们不断坚持.积累和追寻的 ...

  2. oracle执行计划连接方式

    嵌套循环(Nested Loops (NL)) 假如有A.B两张表进行嵌套循环连接,那么Oracle会首先从A表中提取一条记录,然后去B表中查找相应的匹配记录,如果有的话,就把该条记录的信息推到等待返 ...

  3. java连接oracle数据库 -- jdbc连接

    a.      倒入oracle的jar包 b.      编写java文件 package com.sp; import java.sql.*; //使用jdbc连接oracle public cl ...

  4. oracle 内部表连接方式,ORACLE 表连接方式

    一表的连接 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据.连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的.如果一 ...

  5. Oracle : 使用JDBC连接ORACLE的三种URL格式

    文章目录 格式一: Oracle JDBC Thin using an SID: 格式二: Oracle JDBC Thin using a ServiceName: 格式三:Oracle JDBC ...

  6. oracle 内部表连接方式,oracle表连接方式

    ORACLE表连接方式及常见用法(二) /2010-12-22 13:30:13 /个人分类: 一 引言 数据仓库是目前已知的比较成熟和被广泛采用的解决方案,用于整合电信运营内部所有分散的原始业务数据 ...

  7. Oracle数据库---JDBC连接

    一.添加依赖 <!--oracle--> <dependency><groupId>com.oracle.database.jdbc</groupId> ...

  8. 详解oracle多种表连接方式,详解Oracle多种表连接方式

    ORACLE 多表连接与子查询 连接的类型 Oracle8i之前的表连接: 等值连接(Equijoin) 非等值连接(Non-Equijoin) 外连接(Outer join):-->左外连接- ...

  9. JDBC连接方式有哪几种

    2011-05-10 目前比较常见的JDBC驱动程序可分为以下四个种类:  (1)JDBC-ODBC桥加ODBC驱动程序  JavaSoft桥产品利用ODBC驱动程序提供JDBC访问.注意,必须将OD ...

最新文章

  1. 方法革新:8个宏基因组分析新工具 | 热心肠日报
  2. Python 测试开发从入门到高手成长之路
  3. 可执行SQL文的mybatis工具类
  4. Android屏幕方向调整的两种方式
  5. Python数据类型(列表和元组)
  6. OpenGL之深入解析坐标系
  7. Hadoop学习笔记—15.HBase框架学习(基础知识篇)
  8. MFC开发IM-第一篇
  9. 85-scala版spark2.x读取es6.x
  10. Circular microphone array 1
  11. CDOJ 1157 数列(seq) 分块+线段树
  12. Linux缺少libaio包
  13. 机器学习算法原理与实践(二)、meanshift算法图解以及在图像聚类、目标跟踪中的应用
  14. Java实现欧姆龙Fins协议(推荐用springboot)
  15. 为什么别人可以打开的网站,你却打不开?原因找到了 ,HTTP ERROR 404
  16. 超级计算机有什么特点,计算机的特点有哪些
  17. 基于vue的人机验证
  18. BurpSuite--Proxy详解
  19. POJ1287 (最小生成树) 中文版
  20. 机器人传感器网络的覆盖优化和空间负载均衡

热门文章

  1. IHttpModule接口
  2. 晨紫华(帮别人名字作诗)
  3. VS.NET 2003 安装问题
  4. Flink 完美搭档:数据存储层上的 Pravega
  5. Matlab心电信号的PQRST模拟-实验报告
  6. interactive_timeout和wait_timeout之间的区别
  7. sql对查询的一列结果进行去重
  8. Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
  9. php smarty安装,【php】smarty安装
  10. 深度学习基础2(反向传播算法)