为什么要把oracle的表搞到sql server上呢??

解决方案 »

  1.   

    因为可能要对这些表进行进一步的处理,期望对这些表的操作不会影响到a和a上的应用。
    也就是说,a扮演了数据源的角色,它对b和b上的应用一无所知。
      

  2.   

    我也有这方面的问题MYSQL->Oracle
    最后没办法只好写个程序解决了
      

  3.   

    1、安装 Microsoft Data Access Components (MDAC)SDK ODBC driver
    2、建立 SQL SERVER 数据源
    test连接上我的test数据库
    3、配置tnsnames.ora. (ORACLE_HOME\NETWORK\ADMIN)
       test=
          (DESCRIPTION=
            (ADDRESS=
               (PROTOCOL=tcp)
               (HOST=<IP地址>)
               (PORT=1521)
            )
            (CONNECT_DATA=
               (SID=test)
            )
            (HS=)
          )
    4、配置listener.ora. (ORACLE_HOME\NETWORK\ADMIN)
       (SID_DESC=
          (SID_NAME=test)
          (ORACLE_HOME=c:\Oracle\iSuites)
          (PROGRAM=hsodbc)
       )
    5、重启ORACLE监听.
       CMD
       LSNRCTL STOP
       LSNRCTL START
       LSNRCTL STATUS
    6、添加网关配置文件. (ORACLE_HOME\HS\ADMIN)
       文件名为:inittest.ora
       文件内容:
       #
       # HS init parameters
       #
       HS_FDS_CONNECT_INFO = test
       HS_FDS_TRACE_LEVEL = 0
       #
       # Environment variables required for the non-Oracle system
       #
       #set <envvar>=<value>
    7、进入ORACLE SQL*PLUS,建立数据库链.
      CREATE DATABASE LINK TOSQL USING 'test';然后通过建立触发器。
      

  4.   

    LGQDUCKY(飘):
    不大了解您的意思...
      

  5.   

    我的思路:1、建立一个和L20031231相同结构的表用于同步,假定命名为L_TRANS
    2、每次建立L20031231表时生成一个after insert触发器,把存取纪录到L表时同时存入L_TRANS
    3、定时把L_TRANS表中的纪录传送到SQL SERVER数据库,可以通过定宽的文本文件传输,传输完成以后清空L_TRANS表优点:
    每次同步的数据量少,缩短同步时间,否则的话就必须每次读取整个大表,操作费时;简化数据传输的跟踪和维护
    缺点:
    为了保证每次传输之后TRUNCATE L_TRANS表之间没有新的数据写入,必须在开始传输以前锁定L_TRANS表(LOCK TABLE L_TRANS IN EXCLUSIVE MODE),这样就造成了在传输过程中系统对L_TRANS表和L20031231的写操作被禁止,在应用程序中必须考虑到这一点。其他建议:
    处理象L20031231这样每天增长很快的大表,个人认为用分区表比分成多个表更容易管理。比如建议一个叫做L的表,每天生成一个新的分区(事实上可以预先定义很多分区)来存储每天的数据,那样就只能一次性定义触发器而不需要每天生成。而且就统计角度来说也方便很多。当然这样必然牵涉到应用程序的修改,是否采用要看楼主自己的判断。