to njhart2003:
只能手工吗?没有别的办法了?手工很麻烦的

解决方案 »

  1.   

    利用DTS是一种不爽的方法,个人建议用以下两种方法即可,在处理数据同步时,可使用Oracle中的物化视图进行处理利用异构服务代理(Heterogeneous Services ODBC Agent)实现ODBC配置:
    1、设置系统DSN;
    2、建立ODBC数据源,若MySQL需要事先安装MyODBC;
    3、定义新的数据源,本例为MSSQL的数据源,名称为MSODBC;
    4、数据源用户验证;
    5、选择相应数据库;
    6、数据源相关设置,一般不用更改;
    7、连接测试; 配置文件:initMSODBC.orainit<SID_Name>.ora
    文件路径:D:\oracle\ora92\hs\admin<oracle_home_directory>\hs\admin
    文件内容:
    # This is a sample agent init file that contains the HS parameters that are
    # needed for an ODBC Agent. #
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO = MSODBC<ODBC Data Source Name>
    HS_FDS_TRACE_LEVEL = OFF跟踪开关<ON/OFF>
    跟踪文件路径:<oracle_home_directory>\hs\trace
    #
    # Environment variables required for the non-Oracle system
    #
    #set <envvar>=<value>配置文件:listener.ora
    文件路径:D:\oracle\ora92\network\admin<oracle_home_directory>\network\admin
    文件内容:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = D:\oracle\ora92)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = Fire)
          (ORACLE_HOME = D:\oracle\ora92)
          (SID_NAME = Fire)
        )
        (SID_DESC=
          (SID_NAME = MSODBC)<SID_Name>,应与tnsnames.ora文件中的<SID_Name>相对应
          (ORACLE_HOME = D:\oracle\ora92)<oracle_home_directory>
          (PROGRAM = HSODBC)<异构服务代理程序>
        )
      )配置文件:tnsnames.ora
    文件路径:D:\oracle\ora92\network\admin<oracle_home_directory>\network\admin
    文件内容:
    MSODBC = <SID_Name>,应与listener.ora文件中的<SID_Name>相对应
      (DESCRIPTION = 
        (ADDRESS = 
          (PROTOCOL=TCP)
          (HOST = RING_ASUS)<ODBC Server Name or IP Address>
          (PORT = 1521)监听端口,默认为1521
        )
        (CONNECT_DATA = 
          (SID = MSODBC)<SID_Name>
        )
        (HS = OK)
      )测试:
    1、重新启动Oracle监听服务,OracleOraHome92TNSListener;
    2、启动SQL Plus编辑器;
    3、用户验证;
    4、创建数据库链接,命令如下:
    SQL> create public database link msodbc connect to sa identified by baosight using 'msodbc';
    msodbc:数据库链接名
    sa:MSSQL数据库的用户名
    baosight:MSSQL数据库的用户密码
    'msodbc':SID_Name5、执行SQL语句:(除DDL,数据定义语言)
    SQL> select * from products@msodbc;
    products:表名
    @msodbc:数据库链接名6、丢弃数据库链接:
    SQL> drop public database link msodbc;
    msodbc:数据库链接名注意:
        如果需要多个链接,请多重复上述操作!!!
        在执行Insert、Update、Delete及View操作时,使用commit!!!另外:
        还可以利用透明网关(Transparent Gateway For MSSQL)
      

  2.   

    透明网关(Transparent Gateway For MSSQL)。配置文件:inittg4msql.ora init<SID_Name>.ora
    文件路径:D:\oracle\ora92\tg4msql\admin <oracle_home_directory>\tg4msql\admin
    文件内容:
    # This is a sample agent init file that contains the HS parameters that are
    # needed for the Transparent Gateway for SQL Server#
    # HS init parameters
    #
    HS_FDS_CONNECT_INFO="SERVER=192.168.0.247;DATABASE=pubs" SERVER=<MSSQL Server Name or IP Address>;DATABASE=<Database Name>
    另一种写法:<MSSQL Server Name>.<Database Name>
    HS_FDS_TRACE_LEVEL=OFF 跟踪开关<ON/OFF>
    跟踪文件路径:<oracle_home_directory>\tg4msql\trace
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER配置文件:listener.ora
    文件路径:D:\oracle\ora92\network\admin <oracle_home_directory>\network\admin
    文件内容:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = D:\oracle\ora92)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = Fire)
          (ORACLE_HOME = D:\oracle\ora92)
          (SID_NAME = Fire)
        )
        (SID_DESC=
          (SID_NAME = MSSQL) <SID_Name>,应与tnsnames.ora文件中的<SID_Name>相对应
          (ORACLE_HOME = D:\oracle\ora92) <oracle_home_directory>
          (PROGRAM = tg4msql) <透明网关程序>
        )
      )配置文件:tnsnames.ora
    文件路径:D:\oracle\ora92\network\admin <oracle_home_directory>\network\admin
    文件内容:
    MSSQL =  <SID_Name>,应与listener.ora文件中的<SID_Name>相对应
      (DESCRIPTION = 
        (ADDRESS = 
          (PROTOCOL=TCP)
          (HOST = RING_ASUS) <TG Server Name or IP Address>
          (PORT = 1521) 监听端口,默认为1521
        )
        (CONNECT_DATA = 
          (SID = MSSQL) <SID_Name>
        )
        (HS = OK)
      )测试同上。