如题,对实时性要求不是很高,大家有什么好的意见和想法不妨赐教小弟一下,或者有什么成型的产品也可以介绍一下实现思路,拜托了~~

解决方案 »

  1.   

    oracle和sql server建立Dblink
    通过job进行同步EXEC sp_addlinkedserver 
    'oradb', 
    'Oracle', 
    'MSDAORA',
    '用于 Oracle 数据库的 SQL*Net 别名'exec sp_addlinkedsrvlogin 'oradb','false',null,'oracleUser','oraclePassWord'
    select * from oracledb..oracleuser.tablename --注意大小写
      

  2.   

    在Oracle数据库中连接异种数据源
    一共有三种方法:1、 透明网关(Transparent Gateways)
    2、 通用连接(Generic Connectivity)之ODBC连接
    3、 通用连接(Generic Connectivity)之OLE DB连接
    现在利用第二种方法使Oracle与SQL Server直连。1. 安装HS部件。 缺省情况下,HS服务是和Oracle 8.1.7一起安装的,你可以查询SYS用户下是否存在HS_BASE_CAPS视图,以确认HS部件是否安装,如果没有可以用相关的安装盘进行安装。 2. 配置ODBC系统连接字。 在控制面板选择“Data Sources (ODBC)”,在“系统DNS”内配置ODBC for SQL Server连接(DNS名称 eg:111)
    3. 配置tnsnames.ora,它位于ORACLE_HOME\NETWORK\ADMIN。 在这个文件中增加如下代码: hgdb(要访问的SQL SERSER 的数据库名) = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME(本机IP也可))(PORT = 1521))) (CONNECT_DATA = (SID = hgdb) (要访问的SQL SERSER 的数据库名,要和Listener里配置的sid相同) (HS=OK) (打开HS服务选项 ) 
    4. 配置listener.ora,它位于ORACLE_HOME\NETWORK\ADMIN。 在这个文件中增加如下代码: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = hgdb) (要访问的SQL SERSER 的数据库名,与tnsname名称相对应 )(ORACLE_HOME = C:\oracle\ora90) (PROGRAM = hsodbc)(要使用的HS服务程序,如果使用OLE DB,程序名为hsole  ) 
    5. 重新启动Oracle listener。 6. 新增位于ORACLE_HOME\HS\ADMIN内文件,这里是inithgdb。 两行代码:   HS_FDS_CONNECT_INFO = 111(ODBC 中DNS名称)  HS_FDS_TRACE_LEVEL = 0 7,  设置数据库参数global_names=false。设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。
    global_names=true则要求, 多少有些不方便。oracle9i和oracle8i都可以在DBA用户下用SQL命令改变global_names参数alter system set global_names=false;
    8. 用管理员用户登录SQL PLUS,创建DATABASE LINK。 create database link hgdb connect to sa identified by sa using ‘hgdb’; 
    9. 测试连接。如: SQL> select * from rolldown@hgdb;
    到此我们已经完成了使用ODBC连接SQL SERVER的配置工作。