Oracle与SQL Server之间的数据迁移

网络整理 - 07-26

很多时间,要在异构数据库之间进行数据迁移或抽取,如果在SQL中提取ORACLE的数据,可以通过ODBC、OLEDB等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。

在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、SQL用Datetime等。

一 关于ORACLE的透明网关配置

ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它是透明网关程序啦,同时在主目录中还有tgrmsql的一个目录,ORACLE_HOME\tg4msql\admin目录中的inittg4msql.ora就是需要进行配置才能在ORACLE中连接SQL。

1 如何配置透明网关呢?打开inittg4msql.ora:

    # HS init parameters

  

xzh代表SQL服务名,pubs代表要访问的SQL数据库。

    HS_FDS_CONNECT_INFO="SERVER=xzh;DATABASE=pubs"    HS_FDS_TRACE_LEVEL=OFF    HS_FDS_RECOVERY_ACCOUNT=RECOVER    HS_FDS_RECOVERY_PWD=RECOVER

  

2 监听的配置oracle_home\network\admin\Listiner.ora

    LISTENER =     (DESCRIPTION_LIST =      (DESCRIPTION =       (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1521))       )       (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1527))       )      )     )    SID_LIST_LISTENER =     (SID_LIST =      (SID_DESC =       (GLOBAL_DBNAME = xzh.world)       (ORACLE_HOME = D:\oracle\ora92)       (SID_NAME = xzh)      )      (SID_DESC =         (GLOBAL_DBNAME = tg4msql)         (PROGRAM = tg4msql)         (SID_NAME = tg4msql)        (ORACLE_HOME = D:\oracle\ora92)      )     )

  

加亮代码是要在监听文件中新加部分,GLOBAL_DBNAME、SID_NAME可以任意,PROGRM必须指向tg4msql。

3 本地服务文件的配置oracle_home\network\admin\TnsNames.ora

    XZH =     (DESCRIPTION =      (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1521))      )      (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = xzh.world)      )     )    TG4MSQL =     (DESCRIPTION =      (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1527))      )      (CONNECT_DATA =       (SID = tg4msql)      )      (HS = OK)     )