最近在研究数据从sql server 2000 向oracle迁移,有多种方法,但各有优点和缺点
方法一是用ms sql server自带的DTS 进行迁移,使用起来很方面,但image等类型的字段无法用dts导入,并且数据量大的情况下,会出现内存溢出的情况,一个2G内存的电脑能被活活拖死
第二种办法是用Oracle的透明网关,然后建立一个向sql server 的链接,通过该链接就可以访问sql server的数据,下面详细介绍如何在oracle服务器上建立透明网关
1 首先当然要在安装的时候就要安装好tg4msql(Oracle Transparent Gateway for ms sql server)工具,需要自定义安装,已经安装好的oracle 9i仍可以进行修复安装.
2 $ORACLE9I_HOME/tg4msql/admin下修改inittg4msql.ora文件:
HS_FDS_CONNECT_INFO="SERVER=sqlserver_hostname;DATABASE=pubs"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
3 修改listener.ora的内容,在SID_LIST_LISTENER 中添加一段:
(SID_DESC=
(SID_NAME=pubs)
(ORACLE_HOME=d:/Oracle/Ora92)
(PROGRAM=tg4msql)
)
4 重起TNSListener服务
5 修改tnsnames.ora的内容,添加一段:
pubs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = pubs)
)
(HS = OK)
)
保存
6 至此透明网关配置完成,可以在命令行提示符下进行测试连接:TNSPING pubs
如果测试为OK,则说明测试完成,如果超时,请详细检查各种ora文件,还要确保sql server 服务器开通了1521端口,免得被防火墙拦截了
下面就可以建立数据库链接了:
sql>create public database link pubs connect to sa identified by pwd using 'pubs';
sql>select * from stores@pubs;
sql>select "column1" from table1@pubs;