Oracle11g通过ODBC连接MSSQLServer备忘

时间:2024-03-31 14:18:19

Oracle11g通过ODBC连接MSSQLServer备忘

1、        环境说明

1)        Oracle及MSSQLServer服务器操作系统均为Windows Server 2008 r2 Enterprise;

2)        Oracle版本为Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production;

3)        MSSQLServer版本为mssqlserver2008;

 

2、        建立数据源

 

1)        开始菜单,管理工具,数据源;

 Oracle11g通过ODBC连接MSSQLServer备忘

2)        选择系统DSN,点击右侧“添加”,弹出界面选择SQL Server,点击“完成”,进入下一步;

Oracle11g通过ODBC连接MSSQLServer备忘

Oracle11g通过ODBC连接MSSQLServer备忘

 

 

3)        给你的数据源起个名称、描述,以及填写MSSQLServer数据库IP地址;

Oracle11g通过ODBC连接MSSQLServer备忘

 

 

4)        点击“下一步”,如下图所示,输入用户名及密码,点击“下一步”,查看是否需要更改默认数据库,选择好之后,继续点击“下一步”;

Oracle11g通过ODBC连接MSSQLServer备忘

Oracle11g通过ODBC连接MSSQLServer备忘

 

 

5)        进入下一界面,如下图所示,基本不需要更改,直接点击“完成”即可;

Oracle11g通过ODBC连接MSSQLServer备忘

Oracle11g通过ODBC连接MSSQLServer备忘

 

 

6)        弹出界面可以看到配置的ODBC信息,点击“测试数据源”,如果没有问题的话,则会提示“测试成功”,如果失败,则检查以上步骤是否存在错误;

Oracle11g通过ODBC连接MSSQLServer备忘

 

到此,数据源配置完成。

3、        Oracle数据库配置调整

1)        配置initdg4odbc.ora文件,另存一份文件,命名为initdg4.ora,比如这里我们命名为initdg4mssql.ora;

路径为:\app\Administrator\product\11.2.0\dbhome_1\hs\admin

编辑此文件,内容如下:

HS_FDS_CONNECT_INFO = MSSQLServer—配置成数据源名称

HS_FDS_TRACE_LEVEL = 0

Oracle11g通过ODBC连接MSSQLServer备忘

 

2)        监听文件调整:文件路径\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

在SID_LIST_LISTENER新增一段

(SID_DESC =

     (SID_NAME = dg4mssql)—配置成initdg4mssql.ora文件init后面的字串

     (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)

     (PROGRAM = dg4odbc)

   )

3)        TNS新增连接串文件路径\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

配置为:

mssql =

 (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.120)(PORT = 1521))

   (CONNECT_DATA =

     (SID = dg4mssql)

   )

   (HS = OK)

 )

 

 Oracle11g通过ODBC连接MSSQLServer备忘

 

4、        测试连接

1)        创建dblink

create public database link mssql connect to user identified by "password" using 'mssql';

2)        查询MSSQLServer开放的表或试图

select * from [email protected]

可以查询到,则说明完成配置。

 

 

       备忘:好久没有跨异构数据库做数据交互了,MSSQLServer访问Oracle还是相对简单一点,做过好几次都没有出过问题,这次Oracle访问MSSQLServer竟然出现问题了,以前配置几次也没有问题。主要的还是,顺利的配置下来,成功了遇到的问题就少。这次开始的时候我是想通过透明网关来做,之前也是这么做过一次,可是这次配置完透明网关之后,监听总是会出问题。查了一下,原来网上一直都有人遇到这样的问题。找了一些网上的方案,按照步骤一步一步操作,发现还是不行。索性就放弃了这一方式,改用ODBC数据源的方式,毕竟个人对数据源配置更为熟悉,也认为更加简单。

        第一次配置的时候,仍然是报错的,ora-28545,发现网上也是一堆这样的提问,解决方式各不相同。直接推到重来,最终解决了这个问题,特此备忘一下。