你的位置:首页 > 数据库

[数据库]Oracle连接odbc数据源


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 ';

完成