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) 开始菜单,管理工具,数据源;
2) 选择系统DSN,点击右侧“添加”,弹出界面选择SQL Server,点击“完成”,进入下一步;
3) 给你的数据源起个名称、描述,以及填写MSSQLServer数据库IP地址;
4) 点击“下一步”,如下图所示,输入用户名及密码,点击“下一步”,查看是否需要更改默认数据库,选择好之后,继续点击“下一步”;
5) 进入下一界面,如下图所示,基本不需要更改,直接点击“完成”即可;
6) 弹出界面可以看到配置的ODBC信息,点击“测试数据源”,如果没有问题的话,则会提示“测试成功”,如果失败,则检查以上步骤是否存在错误;
到此,数据源配置完成。
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
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)
)
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,发现网上也是一堆这样的提问,解决方式各不相同。直接推到重来,最终解决了这个问题,特此备忘一下。