Java程序连接oracle数据库时用oci驱动要比用thin驱动性能好些主要的区别是使用thin驱动时不需要安装oracle的客户端而使用oci时则要安装oracle的客户端
从使用thin驱动切换到oci驱动在配置来说很简单只需把连接字符串javaoraclethin@hostip实例名换为javaoracleoci@本地服务名即可如
从
jdbcoraclethin@shdb
改成
jdbcoracleoci@shdb
但这里这台机需安装oracle数据库的客户端并配置本地服务名同时还需指定 NLS_LANG环境变量NLS_LANG环境变量是用来控制客户端在显示oracle数据库的数据时所用的字符集和本地化习惯通常把 NLS_LANG的字符集部分指定为数据库所用的字符集则就不会存在java显示的乱码问题了
对于oracle数据库客户端的安装有二种选择一是老实的用oracle数据库的安装光盘安装对应版本的oracle客户端二是下载oracle提从的即时客户端即时客户端是不用安装的把下载包解压即可
要使java web正常的通过oci驱动访问oracle还需要客户端正确的配置一下相关变量主要如下
对于windows系统并使用oracle客户端时
把%ORACLE_HOME%\lib加到PATH环境变量
把%ORACLE_HOME%\jdbc\lib\classesjar加到CLASSPATH环境变量里也可以把classesjar拷贝到tomcat的comman\lib目录下
对于windows系统并使用oracle的即时客户端时(假定即时客户端解压在d盘)
把d\instantclient__加到PATH环境变量
把d\instantclient__\classesjar加到CLASSPATH环境变量里也可以把classesjar拷贝到tomcat的comman\lib目录下
对于linux系统并使用oracle客户端时
在使用tomcat的用户主目录下的bash_profile文件中加入
exprot ORACLE_HOME=/u/app/oracle/product/
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
把classesjar拷贝到tomcat的comman\lib目录下
对于linux系统并使用oracle即时客户端时
在使用tomcat的用户主目录下的bash_profile文件中加入
exprot ORACLE_HOME=/instantclient__
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
把instantclient__目录下的classesjar拷贝到tomcat的comman\lib目录下
如果一个tomcat下带了几个应用且几个应用都要连接oracle数据库时则要注意的时不要在每个应用的WEBINF/lib目录下放入 oracle的classesjar/zip文件而应该把classesjar/zip文件放到tomcat的common/lib目录下否则会出来ojdbclib/库重复加载的错误
使用oracle即时客户端是本地服务名的建立可以在目录instantclient__下建立tnsnamesora下添加连接串如
SHDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = )))
(CONNECT_DATA =(SERVICE_NAME = shdb)))