欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问

程序员文章站 2022-03-03 09:37:23
...

关键字:sql server,oracle, link server ,database link, 透明网关,ODBC,hsodbc

 

场景:在实际开发过程中,发现很多系统都是运行在不同的数据库环境上,为了实现数据互相交互,我们通常有几种做法:1 写webservice互相访问,2 通过直接配置database driver,程序代码可以直接访问数据库,3 通过数据库层面配置link server 或db link实现访问数据库。

上面三种方法各有优缺点,根据各自项目的计划和现状选择方案。我主要讲第三钟方法的优缺点,优点:可以实现代码层面无需配置database driver,代码现实保持原来风格;缺点:需要配置数据库层面link,代码实现事务操作可能会有问题。

 

前提:要实现Oracle 10g和Sql 2008R2数据库双向链接访问,必须要完成下面两个技术难点。

1 实现sql 2008R2link server,访问Oracle10g数据库

2 实现 oracle 10gdatabase link,访问sql 2008 r2数据库

 

步骤:

1 实现sql 2008R2的link server,访问Oracle10g数据库

 1.1创建oracle驱动,sqlserver访问oracle,有下图三种方法:A,C都是需要安装Oracle 客户端,相对比较麻烦;本次通过B的方法ODBC访问oracle。
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

 1.2首先要安装Instant Client Setup.exe,然后配置,请看下面链接或网上搜索http://blog.csdn.net/xzknet/article/details/2309463

 

 1.3安装完成后,请进入C:\Program Files (x86)\Oracle\Instant Client\network\admin,请看下图

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

 1.4打开tnsname.ora文件,配置oracle链接,红框内容。 
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

 1.5 配置ODBC

  A 打开ODBC
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  B进入系统DSN(注意:必须是系统DSN)
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  C 配置oracle访问,根据1.4 tnsname的设定,点TEST CONNECTION


[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  D 输入账号密码,点OK,提示链接成功。
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 
 1.6 配置Sql server link server

  A 点新建链接服务器常规,选择 ODBC驱动,
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

  B 驱动链接字符串:Driver={Microsoft ODBC for Oracle};Server=172.16.34.81;Uid=xxx;Pwd=xxx;

  C 配置安全性选项,使用上下文连接,输入oracle 数据库的账号和密码,最后确定

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  

 1.7 完成后测试链接服务器是否连通状态,提示成功说明sqlserver已经可以访问oracle数据库了。
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

 1.8 Sql server查看oracle10g数据库table

    select * from openquery(linkname,'select * from tablename');显示内容成功。

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc  

 

1.9 那么程序就可以轻松访问oracle 10g的数据了,大家都懂的!!!

 

2 实现 oracle 10gdatabase link,访问sql 2008 r2数据库

 2.1 下载安装透明网关补丁,本文是安装和oracle同一台机器,重点是监控端口配置

 

查考文档或搜索网络 http://wenku.baidu.com/link?url=pwMZ5qxjXKD-xTvueCCF_mkIjX0WlyJxwbiYCtsj38MuMJpWvVnXvixesblRhc0SPxRyRp9uupGJUkkyRlHoCzYt54d4ags2k6g0CUsq41m 

 

 2.2 Oracle 透明网关安装后,有两种方式可以访问Sql server,1 thsodbc,2 TG4MSQL,本文使用 TG4MSQL。

 

 2.3 配置ODBC访问sql server 2008R2。 

  A 进入system DSN,新建连接。

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 B 输入sqlserver配置,账号和密码,点下一步完成。 

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 C 进入测试链接界面,提示连接成功。

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 2.4 安装完成后,进入透明网关的默认路径D:\oracle\product\10.2.0\tg_1\tg4msql\admin

  A 新建ora连接文件,名称为init+sid.ora, 本文是initpmssql.ora。
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

  B 打开initpmssql.ora,配置sqlserver数据库连接 

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 2.5 配置透明网关的监听服务

  A 找到透明网关组件的安装菜单目录,打开net configuration assistant,默认需要使用xp兼容模式打开。
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 B 新建一个监听服务SQLLISTENER,端口1522,防止和原有oracle 1521端口冲突。

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 C 完成监听服务配置后,检查服务是否启动。 

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 2.6     配置透明网卡配置文件

  A 进入下面路径,找到listener.ora

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 B 打开文件,安装下图配置 
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 C 修改tnsname.ora,注意SID名称。 

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 2.7 配置原数据库配置文件

  A 进入数据库的路径

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 B 修改listener.ora文件,添加原来透明网关配置的内容,查考2.6-B,下面红色框。 

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 
[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
 

 

 C 打开TNSNAME.ORA,增加红色框内容

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 2.8 配置database link,登录pl/sql,执行下面命令。 

create PUBLIC database link PMSSQL connect to "oa" identified by "OA" using 'PMSSQL';

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 2.9 执行查询sql,可以获取sql server table内容

select * from  tablename@dblink;

[原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 

 

 2.10 接下来代码一样可以执行操作了,完成手工。

 

总结: sql server数据库链接oracle数据库会相对容易一些,只有安装数据库驱动就行。而oracle数据库链接sql server数据库相对会比较复杂,注意点在于监听配置以及TNSNAME文件配置。

 

  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 45.9 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 9.6 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 23.5 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 38.5 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 27.1 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 10.9 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 12 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 1.5 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 21.9 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 29.3 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 10.9 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 3.7 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 51 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 22.3 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 20.6 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 21.8 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 17.4 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 12.3 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 8.2 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 16.6 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 39.1 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 41.1 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 20.4 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 28 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 19.2 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 18.2 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 21.1 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 25.4 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 14 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 31.7 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 45.8 KB
  • [原创]如何现实Oracle 10g和Sql 2008R2数据库双向访问
            
    
    博客分类: database link serverdatabase link透明网关ODBChsodbc 
  • 大小: 17 KB