转:ORACLE的JDBC连接方式:OCI和THIN

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软工网络15个人阅读作业2——提问题

提出问题 快速通读教材《构建之法》,并参照提问模板,提出5个问题。 问题一: p83有一段话: 两人在一起合作,自然会出现不同意见,每个人都有自己的想法,在两个人平等合作的情况下,不存…

HALCON示例程序count_pellets.hdev分割豆子,基本形态学的使用

HALCON示例程序count_pellets.hdev分割豆子,基本形态学的使用 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () read_image (Image, ‘pellets’) dev_close_window () get_image_size (Image, Width, Height) dev_open_window…

绝对路径VS相对路径

绝对路径:不必赘述,就是从盘符开始写直到找到你所需要的文件为止,把所有的目录写完整即可。但是在做网站的时候绝对不推荐用绝对路径,因为不可能服务器中的路径和在做设计时候所用的电脑的路径一致,也不可能说在服务器…

四、极大似然参数估计

四、极大似然参数估计 此篇博文,玉米将和大家分享一下“张氏标定”除几何推导外的另外一大精髓:参数估计。 张教授在大作“A Flexible New Technique for Camera Calibration”中的原话如下:” The above solution is obtained through minim…

xtrabackup安装使用

2019独角兽企业重金招聘Python工程师标准>>> 【MySQL】xtrabackup安装使用 拾荒者charley 关注 2018.03.19 09:19 字数 186 阅读 17评论 0喜欢 0 前言:说到MySQL备份,主要采用的方法无非就是mysqldump/mysqldumper以及我们今天要说的热备利器…

HALCON示例程序crystal.hdev通过局部阈值处理和区域处理提取六角形晶体

HALCON示例程序crystal.hdev通过局部阈值处理和区域处理提取六角形晶体 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () dev_update_window (‘off’) read_image (Image, ‘crystal’) get_image_size (Image, Width, Height) dev_ope…

2017/3/10 morning

转载于:https://www.cnblogs.com/bgd140206325/p/6529497.html

六、张正友标定法小结

六、张正友标定法小结 这一博文,是玉米后补上的。因为觉得前面用了三篇博文来描述张氏标定法,略显散乱。在这里总结一下,使条理清晰一点。另外关于张氏标定所得参数也还有两点需要澄清。下面这个总结,其实也是在“A Flexible New …

SqlServer图形数据库初体验

SQL Server2017新增了一个新功能叫做图形数据库。图形指的拓扑图形,是一些Node表和Edge表的合集,Node对应关系数据库中的实体,比如一个人、一个岗位等,Edge表指示Node之前的关系,比如张三在经理岗位。图形表比较适合用…

HALCON示例程序dem_trees.hdev提取树

HALCON示例程序dem_trees.hdev提取树 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () read_image (Mreut, ‘mreut_y’) read_image (MreutDem, ‘mreut_dgm_2.0’) get_image_size (Mreut, Width, Height) dev_open_window (0, 0, Wid…

Oracle CASE WHEN 用法介绍

1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END --Case搜索函数 CASEWHEN sex 1 THEN 男 WHEN sex 2 THEN 女 ELSE 其他 END 2. CASE WHEN 在语句中不同位置的用法 2.1 SELECT CASE WHEN 用法 SELECT grad…

Golang 处理 Json(二):解码

golang 编码 json 还比较简单,而解析 json 则非常蛋疼。不像 PHP 一句 json_decode() 就能搞定。之前项目开发中,为了兼容不同客户端的需求,请求的 content-type 可以是 json,也可以是 www-x-urlencode。然后某天前端希望某个后端…

五、畸变矫正—让世界不在扭曲

五、畸变矫正—让世界不在扭曲 这篇博文所要讲述的内容,是标定的主要用途之一:矫正摄像机的畸变。对于图像畸变矫正的方法,张正友教授也在其大作“A Flexible New Technique forCamera Calibration”中给出。 玉米在这里先为大家介绍一下&…

第二阶段个人冲刺08

昨天做了什么? 解决新建项目时会遇到“Your android sdk is out of date or is missing templates”的问题,,实现学生交流区,只有学生和管理员有权查看,教师无权查看的功能 今天要做什么? 实现学生交流区&a…

HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷

HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () dev_open_window (0, 0, 400, 400, ‘black’, WindowHandle)通过一系列的坐标点生成多边形像素轮廓 gen_re…

java面试-Java并发编程(二)——重排序

当我们写一个单线程程序时,总以为计算机会一行行地运行代码,然而事实并非如此。 什么是重排序? 重排序指的是编译器、处理器在不改变程序执行结果的前提下,重新排列指令的执行顺序,以达到最佳的运行效率。 重排序分类 …

《MySQL必知必会》[01] 基本查询

《MySQL必知必会》(点击查看详情)1、写在前面的话这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐。之前自己学习的时候是啃的清华大学出版社的计算机系列教材《数据库系统概论》,基础也算是半罐水&am…

(七)立体标定与立体校正 【计算机视觉学习笔记--双目视觉几何框架系列】

七、立体标定与立体校正 这篇博文中,让玉米和大家一起了解一下,张氏标定是怎样过渡到立体标定的?在这里主要以双目立体视觉进行分析。对于双目立体视觉,我们有两个摄像头。它们就像人的一双眼睛一样,从不同的方向看世界…

HALCON示例程序edge_segments.hdev提取连续的边缘段

HALCON示例程序edge_segments.hdev提取连续的边缘段 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image, ‘mreut’) get_image_size (Image, Width, Height) dev_open_window_fit_image (Image, 0, 0…

让 jQuery UI draggable 适配移动端

背景: 在移动端,本人要实现对某个元素的拖动,想到使用 jQuery UI 的 draggable 功能。但是发现此插件的拖动只支持PC端,不支持移动端。 原因: 原始的 jQuery UI 里,都是mousedown、mousemove、mouseup来描述…