从使用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%\jdbc\lib\classes12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的comman\lib目录下。
对于windows系统并使用oracle的即时客户端时(假定即时客户端解压在d盘):
1、把d:\instantclient_10_2加到PATH环境变量;
2、把d:\instantclient_10_2\classes12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的comman\lib目录下。
对于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的comman\lib目录下。
对于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的comman\lib目录下。
如果一个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)))
方法/步骤
下载instantclient并解压,然后打开文件夹找到oci,dll。
打开Navicat工具--选项。
在d出的窗口中,点击OCI,然后在右侧窗口中指定oci.dll位置。
最后添加oracle连接即可完成
这是额前两周在网上翻资料纯手工整理的,本地不安装plsql链接远程数据库,保证原稿:首先到Oracle网站下载Instant Client :
1.解压之后的文件夹叫:instantclient_11_2.可以放在本地磁盘任意目录下.例如:D:/instantclient_11_2
在D:/instantclient_11_2目录下新建目录network,在network目录下再建admin目录,在admin目录下新建文件tnsnames.ora,打开写入如下内容:
2、配置tnsnames.ora文件,
如:
MOBILE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = MOBILE)
)
)
这里根据自己的实际情况进行配置,第一个MOBILE是database名,SERVICE_NAME是服务器上数据库实例名
或
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.6.8.10 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl )
)
)
其中ORCL是远程数据库在本地的主机名,10.6.8.10是远程服务器的IP地址,orcl是远程数据库的名称。
3.添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。
通过(我的电脑--属性--高级--环境变量--新建)来新增环境变量。
(不一定有这个变量)
设置ORACLE的语言,添加环境变量(已装服务端的机器不需要配置)
命令行输入regedit进入注册表,一般在HKEY_LOCAL_MACHINE/DOFTWARE/ORACLE/HOME下添加字符串值
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
或
设置ORACLE的语言,添加环境变量:
逗NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK地,
4、下载并安装PL.SQL.Developer配置应用
配置tools->preferences->connection
Oracle Home
D:/instantclient_11_2
OCI library
D:/instantclient_11_2/oci.dll
配置完成后关闭PL/SQL ,再重启.
或者
下载并安装plsql,登录plsql
配置tools->preferences->connection
Oracle Home=E:\oraclient
OCI library=E:\oraclient\oci.dll
5.主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 数据库。
6.连接成功后有时候查询出来的数据会出现乱码的问题,这是因为本地的编码和服务器端编码不一致,这时候我们可以通过SQL语句:
select userenv('language') from dual
查询出服务器端的编码,如我自己的查询结果为
USERENV('LANGUAGE')
AMERICAN_AMERICA.ZHS16GBK
我们就需要添加一个环境变量NLS_LANG ,值为: AMERICAN_AMERICA.ZHS16GBK 然后重启PL/SQL就不会再有乱码问题了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)