求,KETTLE怎么用OCI方式连接数据库ORACLE

求,KETTLE怎么用OCI方式连接数据库ORACLE,第1张

Java程序连接oracle数据库时,用oci驱动要比用thin驱动性能好些。主要的区别是使用thin驱动时,不需要安装oracle的客户端,而使用oci时则要安装oracle的客户端。

从使用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就不会再有乱码问题了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6764452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存