Oracle连接odbc数据源
说明
oracle连接ODBC数据源有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级。两种连接方法大致一样,现将连接步骤说明如下:
检查DG4ODBC驱动是否已经安装
方法如下:
在Oracle服务器上,cmd窗口中执行命令(dg4odbc或hsodbc)
配置ODBC驱动
ODBC数据源必须在系统DSN中配置,注意ODBC数据源必须与应用程序架构位数一致,要不然会出现64 位版本和 32 位版本不匹配的问题。
64-bit ODBC 默认的位置:
C:\Windows\System32\odbcad32.exe
32-bit ODBC 默认的位置:
C:\Windows\SysWOW64\odbcad32.exe
本例ODBC数据源名称为 testodbc
配置dg4odbc(hsodbc)
在"ORACLE_HOME\hs\admin"目录下,默认存在名为"initdg4odbc.ora"/"inithsodbc.ora"的文件,复制"initdg4odbc.ora"/"inithsodbc.ora"文件,新文件名称改为"initodbc_test.ora",
【每个使用DG4ODBC的实例,都必须单独一个"init*.ora"文件,文件命名规则:init+<网关sid>+.ora】
参数说明
HS_FDS_CONNECT_INFO = ODBC数据源管理中的DSN名称【本实验为testodbc】
HS_FDS_TRACE_LEVEL = OFF 【追踪级别参数,出于性能影响一般不配置或者配置为"OFF",若遇到网关问题需要跟踪日志,则配置为"Debug",跟踪日志文件存放在"ORACLE_HOME\hs\trace"目录下】
配置网关监听
网关监听可配置的参数如下:
SID_NAME: 网关的SID
ORACLE_HOME:目录
PROGRAM:指定监听服务响应ODBC连接请求的可执行程序
参考配置:
# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = odbc_test)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = dg4odbc(或hsodbc))
)
)
重启监听服务
lsnrctl stop
lsnrctl start
配置TNS
打开 "ORACLE_HOME\network\admin\tnsnames.ora"文件
需要配置的参数如下:
connect_descriptor:填写自定义的TNS连接名称
ADDRESS:填写透明网关的IP地址和端口
SID:指定连接网关的SID
HS :指定连接的是非ORACLE数据库
odbc_test=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=127.0.0.1)
(PORT=1521)
)
(CONNECT_DATA=
(SID=odbc_test))
(HS=OK))
配置DBLINK
以sqlplus、PLSQL Developer或TOAD连接到OracleDB,执行以下DDL语句创建DBLink
在"create database link"语句中,用户名和密码,建议以双引号括起来,避免Oracle在大小写上做自动转换。一般来说,excel数据源可以不要密码,sql server需要密码。
create database link odbc_test
connect to "2222"
identified by "2222" using ' odbc_test ';