1、Oracle 11g Gateway (ODBC)安装配置(UTF-8 中文支持)环境信息:操作系统:RHEL 6U4 64bitLANG 使用:zh_CN.UTF-8Oracle 数据库版本:Oracle 11g database 11.2.0.1.0安装目录:/home/oracle/product/ora11g服务名称(ORACLE_SID):ora11gOracle Gateway版本:Oracle 11g gateway 11.2.0.1.0安装目录:/home/gateway/product/gateway服务名称(ORACLE_SID):gatewayGbase 8t 数据库版本
2、:Gbase 8t V8.5 12.10.FC4G1AEE_1.6.3.43安装目录:/home/gbase8t/8t服务名称(INFORMIXSERER):gbase8tInformix CSDK版本:Informix CSDK 4.10.FC7安装目录:/home/gbase8t/8t连接方式:Oracle Database 通过 dblink 连接到 Gateway;Gateway 通过 CSDK 提供的 ODBC驱动(unixODBC) ,访问 Gbase 8t/Informix 数据库。组件安装1,Oracle 11g database 安装详细过程 略Oracle database
3、 使用的环境如下:ORACLE_BASE=/home/oracleORACLE_HOME=$ORACLE_BASE/product/ora11gORACLE_SID=ora11gNLS_LANG=“SIMPLIFIED CHINESE_CHINA.AL32UTF8“# NLS_LANG 需要使用 AL32UTF8 或者 UTF8PATH=$ORACLE_HOME/bin:$PATHexport ORACLE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH安装时选上中文支持,数据库的字符集使用 AL32UTF8。数据库安装时,如果 LANG=zh_CN.UTF
4、-8 时,界面有乱码,可使用LANG=en_US.UTF-8 来安装。另一种方式是将中文字体 zysong.ttf 放到操作系统的/usr/share/fonts/zh_CN/TrueType/目录下。2,Gbase 8t database 安装详细过程 略3,Informix CSDK 安装详细过程 略Gbase 8t database 和 Informix CSDK 使用的环境如下:INFORMIXDIR=/home/gbase8t/8tINFORMIXSERVER=gbase8tONCONFIG=onconfig.8tPATH=$INFORMIXDIR/bin:$PATHexport I
5、NFORMIXDIR INFORMIXSERVER ONCONFIG PATHDB_LOCALE=zh_CN.utf8CLIENT_LOCALE=zh_CN.utf8SERVER_LOCALE=zh_CN.utf8export DB_LOCALE CLIENT_LOCALE SERVER_LOCALELD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/cliexport LD_LIBRARY_PATH4,Oracle gateway 安装详细过程a. 创建 gateway 用户,并设置密码rootrhe
6、l64 # useradd -g oinstall -G dba -d /home/gateway -m -s /bin/bash gatewayrootrhel64 # passwd gatewayb. 设置用户环境变量:ORACLE_BASE=/home/gatewayORACLE_HOME=$ORACLE_BASE/product/gatewayORACLE_SID=gatewayNLS_LANG=“SIMPLIFIED CHINESE_CHINA.AL32UTF8“PATH=$ORACLE_HOME/bin:$PATHexport ORACLE_BASE ORACLE_HOME ORA
7、CLE_SID NLS_LANG PATH# LD_LIBRARY_PATH 必须要设置INFORMIXDIR=/home/gbase8t/8tLD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/cli:$ORACLE_HOME/libexport INFORMIXDIR LD_LIBRARY_PATHc. 解压缩 gateway 安装包,然后在窗口模式下执行安装gatewayrhel64 soft$ unzip linux.x64_11gR2_gateways.zipgatewayrhel64 sof
8、t$ cd gateways开始安装./runInstaller增加产品语言支持,选上 简体中文,服务名使用 gateway安装组件选上:Oracle Database Gateway for InformixOracle Database Gateway for ODBC注:仅使用 ODBC 时,不需要安装 Oracle Database Gateway for Informix若选了 Gateway for Informix,会要求指定 Informix 服务器信息开始安装组件如果 gateway 与 oracle database 安装在同一个服务器上,可以不用再执行root.sh组件安
9、装完成后,自动调用 netca,创建 LISTENER如果 gateway 和 oracle database 在同一台服务器,需要指定不同的 LISTENER 端口,这里指定为 1522完成网络配置后,整个安装过程完成。Gateway for ODBC 配置1, odbc.ini 配置将 CSDK 中的 odbc.ini 复制到 gateway 配置目录下gatewayrhel64 admin$ pwd/home/gateway/product/gateway/hs/admingatewayrhel64 admin$ cp /home/gbase8t/8t/etc/odbc.ini ./内容
10、按实际的修改为;-; IBM INFORMIX ODBC Sample File; File: odbc.ini;-ODBC Data SourcesInfdrv1=IBM INFORMIX ODBC DRIVERInfdrv1Driver=/home/gbase8t/8t/lib/cli/iclit09b.soDescription=IBM INFORMIX ODBC DRIVERDatabase=testdb;LogonID=informix;pwd=informixServername=gbase8tCursorBehavior=0CLIENT_LOCALE=zh_CN.utf8DB_L
11、OCALE=zh_CN.utf8TRANSLATIONDLL=/home/gbase8t/8t/lib/esql/igo4a304.soODBCUNICODE=UTF-8 # 用于支持 UNICODE;uncomment the below line for UNICODE connection;UNICODE=UCS-4; Trace file Section;Trace=0TraceFile=/tmp/odbctrace.outInstallDir=/home/gbase8t/8tTRACEDLL=idmrs09a.so2, 修改配置参数 initdg4odbc.ora (init + O
12、RACLE_SID.ora)gatewayrhel64 admin$ vi initdg4odbc.ora 配置参数的内容# This is a sample agent init file that contains the HS parameters that are# needed for the Database Gateway for ODBC# HS init parameters#HS_FDS_CONNECT_INFO = Infdrv1 # 与 odbc.ini 中的 DSN 相同HS_FDS_TRACE_LEVEL = OFF # 如果出现问题,可以改成 debug,进行检查
13、HS_FDS_SHAREABLE_NAME = /home/gbase8t/8t/lib/cli/iclit09b.so# 使用的 INFORMIX ODBC 驱动# ODBC specific environment variables#set ODBCINI=/home/gateway/product/gateway/hs/admin/odbc.ini#指定 ODBCINI 的位置# Environment variables required for the non-Oracle system#以下为附加的环境变量,用于非 oracle 数据库set INFORMIXDIR=/home/
14、gbase8t/8tset INFORMIXSERVER=gbase8tset DB_LOCALE=zh_CN.utf8set CLIENT_LOCALE=zh_CN.utf8可以使用 isql 测试 unixODBC 的连接测试正常,表示通过 unixODBC 连接到数据库是正常的3, 修改 gateway 侦听 listener.ora在 gateway 上关闭当前侦听,复制$ORACLE_HOME/hs/admin/listener.ora.sample 中的内容复制到 gateway 下的$ORACLE_HOME /network/admin/listener.ora 中。gatewa
15、yrhel64 admin$ lsnrctl stop gatewayrhel64 admin$ vi listener.ora 配置文件 listener.ora 内容# listener.ora Network Configuration File: /home/gateway/product/gateway/network/admin/listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOS
16、T = 192.168.80.200)(PORT = 1522)ADR_BASE_LISTENER = /home/gateway# 以上是安装 gateway 时,netca 自动创建,指定的端口号# 以下内容来源于 $ORACLE_HOME/hs/admin/listener.ora.sampleSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=dg4odbc)(ORACLE_HOME=/home/gateway/product/gateway)(PROGRAM=dg4odbc)完成后,重新启动侦听gatewayrhel64 admin$ ls
17、nrctl startLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 31-7 月 -2016 13:45:47Copyright (c) 1991, 2009, Oracle. All rights reserved.启动/home/gateway/product/gateway/bin/tnslsnr: 请稍候.TNSLSNR for Linux: Version 11.2.0.1.0 - Production系统参数文件为/home/gateway/product/gateway/network/admin/listener.o
18、ra写入/home/gateway/diag/tnslsnr/rhel64/listener/alert/log.xml 的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.80.200)(PORT=1522)正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.80.200)(PORT=1522)LISTENER 的 STATUS-别名 LISTENER版本 TNSLSNR for Linux: Version 11.2.0.1.0 - Production启动日期 3
19、1-7 月 -2016 13:45:47正常运行时间 0 天 0 小时 0 分 0 秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数文件 /home/gateway/product/gateway/network/admin/listener.ora监听程序日志文件 /home/gateway/diag/tnslsnr/rhel64/listener/alert/log.xml监听端点概要.(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.80.200)(PORT=1522)服务摘要服
20、务 “dg4odbc“ 包含 1 个实例。实例 “dg4odbc“, 状态 UNKNOWN, 包含此服务的 1 个处理程序.命令执行成功4, 修改 oracle database 上的 tnsnames.ora将 gateway 上的 $ORACLE_HOME/hs/admin/tnsname.ora.sample 中的内容复制到 oracle database 上的$ORACLE_HOME/network/admin/tnsname.ora 中注:gateway 的 $ORACLE_HOME 是/home/gateway/product/gatewayoracle database 的$OR
21、ACLE_HOME 是/home/oracle/product/ora11goraclerhel64 admin$ vi tnsnames.ora 配置文件 tnsnames.ora 内容:# tnsnames.ora Network Configuration File: /home/oracle/product/ora11g/network/admin/tnsnames.ora# Generated by Oracle configuration tools.ORA11G =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8
22、0.200)(PORT = 1521)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ora11g)# 以下内容来源于 gateway 下$ORACLE_HOME/hs/admin/listener.ora.sampledg4odbc =(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.80.200)(PORT=1522)(CONNECT_DATA=(SID=dg4odbc)(HS=OK)5, 在 oracle database 上创建到 gateway odbc 的 dblinkoracl
23、erhel64 $ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期日 7 月 31 14:04:38 2016Copyright (c) 1982, 2009, Oracle. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing
24、 optionsSQL create public database link odbc8t connect to “informix“ identified by “informix“ using dg4odbc;# 注:注意引号的使用,用户密码需要用双引号,gateway 实例名用单引号# odbc8t 为 dblink 的名称# dg4odbc 是 gateway 的实例名称,与 tnsnames.ora 中的名称对应数据库链接已创建。SQL select * from “tab1“odbc8t;# 注:查询 8t/informix 表时,表名需要用双引号col1-测试使用中文test0
25、01test002test1111oracle dblink insert 中文行唐县鸿森汽车销售运输有限公司已选择 7 行。SQL insert into “tab1“odbc8t values (天津南大通用数据技术股份有限公司 );已创建 1 行。SQL select * from “tab1“odbc8t;col1-测试使用中文test001test002test1111oracle dblink insert 中文行唐县鸿森汽车销售运输有限公司天津南大通用数据技术股份有限公司已选择 8 行。关于 gateway for odbc 自动提交:通过 dblink odbc 访问远程的 g
26、base 8t/informix 方式,update/insert 等操作并不会自动提交,需要显式提交。如果需要自动提交,需要在 initdg4odbc.ora 中指定HS_TRANSACTION_MODEL = SINGLE_SITE_AUTOCOMMIT更多的参数配置,参考 Oracle Database Gateway for ODBC Users Guide关于 gateway for informix:从测试的情况看,gateway for informix 其实也是使用了 odbc 方式访问informix,但这种方式使用了第三方的 odbc 驱动,配置上也 Gbase 8t/Informix提供的 odbc 驱动上有差异,也无明确的文档说明。可能的话,还是直接gateway for odbc,通过调用 csdk 中的 odbc 驱动,可以比较容易的配置。