Oracle的oci和thin的不同

今天,在配置开发环境的时候,出现了一个问题。
按照常规,修改了平时填写Oracle SID或者SERVICE_NAME的地方,启动Jboss
报错:java.sql.SQLException: ORA-12154: TNS:could not resolve the connect identifier specified
不能识别指定的连接标识符……

仔细检查一遍,发现问题,在配置文件里面怎么看不到在哪设置ip地址跟端口号?
找原来的项目的连接标识符,对比如下:
原来的是jdbc:oracle:thin:@172.0.0.1:1521:orcl
现在的是jdbc:oracle:oci:@land
thin变成了oci,原来的ip地址跟端口号没了

立马反映过来,下面的land就是就是配置Oracle客户端时候的连接字符串,oci连接oracle方式类似于PLSQL Developer连接oracle,land包含了IP、端口、SID信息。
修改配置文件,把填的SID改成自己定义的服务别名,搞定!


总结:
1、使用oci方式连接,需要安装Oracle客户端(网上有精简版本的,down下来,配置一下环境变量就ok)。使用thin方式就不需要。因此,个人感觉还是thin方式方便。
2、原理上分析:thin方式是纯java实现tcp/ip的通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装
3、驱动类别不同,oci是二类驱动,thin是三、四类驱动。
4、性能方面,没研究过,有待发现。

你可能感兴趣的:(oracle,sql,面试,jdbc,jboss)