好贷网好贷款

求组----sql2000数据库迁移的问题! 50oraclelogan]

发布时间:2016-12-3 23:55:30 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"求组----sql2000数据库迁移的问题! 50oraclelogan]",主要涉及到求组----sql2000数据库迁移的问题! 50oraclelogan]方面的内容,对于求组----sql2000数据库迁移的问题! 50oraclelogan]感兴趣的同学可以参考一下。

我是java web开发的,面试的是oracle开发管理,结果今天进去之后,经理让我做 一个java项目的sql2000的迁移,从老数据库迁移到新数据库,这半个月要迁移3张表,然后以后会迁移整个数据库的表。 我对数据库管理一窍不通,就对oracle开发研究过,oralce管理不懂,结果今天让我做sql2000的迁移,我都不知道怎么办呢?大伙给点意见啊,就剩下50分了,等有分了,再加100分吧! 对了,还有一个,项目让我先做一个迁移流程图,我都不知道怎么做呢,没有一个思路,大家帮我想想办法吧,谢谢了! 谢谢了!

在线等!

数据库迁移就包括两种,一种就是数据库脚本,一种就是数据库中的数据. 脚本迁移,可能就要了解源,目标的结构. 这个最好写一个规范文档. 至于数据迁移,那么就可以用数据库本身的功能: 复制+订阅 或者 存储过程+job (但建议用程序+数据库方法,程序不停调度,某一家公司的数据就是这么同步的.)

第一章 数据迁移基础 在信息共享日益普遍的情况下,各行各业都在进行着企业信息化建设,为了节约信息建设的费用,大都从现有的系统进行扩充或升级,ERP之路任重而道远,一般情况下,企业往往有大量的重要数据要迁移到新系统中去。 数据迁移是一项繁锁而又单调的工作,面对各种各样的基础数据,定制开发数据迁移工具往往费时费力,切不通用,那么到底什么工具能够胜任我们的工作呢?MS DTS可以将各种各样的数据源导入到各种各样的数据库,易学易用,在异构数据转换过程中,LOB(TXTT、IMAGE)字段的转换是容易失败的地方。   图1.1 字段合并 MS DTS在数据转换方面简单易学,功能强大,不仅可以使用VBSCRIPT与JSCRIPT脚本进行数据合并、分解、转换、汇总,还可以用PACKAGE的方式将转换过程存储在服务器上,通过代理服务多次/定时/调度地执行。   图1.2 异构数据   图1.3 脚本编写 MSDTS承袭了MS的易学易用的优良传统,对使用者的要求很低,经过短时间培训,一般文员都可以使用MS DTS导入导出数据啦。   图1.4 调度计划 第二章 异构数据迁移 很多时间,要在异构数据库之间进行数据迁移或抽取,如果在MS SQL SERVER中提取ORACLE的数据,可以通过ODBC、OLEDB等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。 在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、MS SQLSERVER的日期类型用DateTime等。在Excel导入到MS SQLSERVER或ORACLE时,还要注意数字串的字段往往被目的数据库隐式转换成数字型的字段。 一 关于ORACLE的透明网关配置(FOR MS SQL SERVER) ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它就是透明网关程序,同时在主目录中还有tgrmsql的这个目录,ORACLE_HOME$\tg4msql\admin目录中的inittg4msql.ora文件,必须手工进行配置才能在ORACLE中连接MS SQL SERVER。   图2.1 tg4msql  1 如何配置透明网关呢?打开inittg4msql.ora: # # HS init parameters # xzh代表MS SQLSERVER服务名,pubs代表要访问的MS SQLSERVER数据库 # 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 =MySQL)         (PROGRAM = tg4msql)         (SID_NAME = MySQL)        (ORACLE_HOME = D:\oracle\ora92)     )   ) 加亮部分代码是要在监听文件中手工添加,GLOBAL_DBNAME、SID_NAME可以任意指定,PROGRM必须指向tg4msql 如图2.1所示。 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 =MySQL)     )     (HS = OK)   ) 上例中MS SQL SERVER的本地服务名指定为TG4MSQL,可以任意写,SID必须是Listiner.ora中指定的那个SID_NAME,PORT也必须是监听中指定的PORT,主机等都要符合一致。到此为止,我们把透明网关大致已经配置好啦,如果要访问MS SQL SERVER数据库,还要在ORACLE中创建数据库链才行。 4 在MS SQLSERVER中创建登录帐号xzh口令xzh,授权使之可以访问PUBS数据库。 SQL>CREATE  DATABASE  LINK  FROM_SQL  CONNECT TO xzh IDENTIFIED BY xzh USING ‘TG4MSQL’ USING ‘TG4MSQL’中的 ‘TG4MSQL’是tnsnames.ora中配置好的指定MS SQL SERVER服务器的可以被ORACLE访问的本地服务名,FROM_SQL是我们以后要引用的数据库链名,切记MS SQL SERVER中的登录帐号(xzh/xzh)必须符合ORACLE的帐号规范,如果用(xzh/0000)就会在创建数据库链路时失败。 SQL>SELECT * FROM [email protected]_SQL 如果有数据返回,表示我们访问SQL数据库的通道已经建成,请大胆使用吧,但对远程异构数据库不充许进行DDL操作。 SQL>CREATE TABLE [email protected] FROM all_users; ERROR 位于第 1 行: ORA-02021: 不允许对远程数据库进行 DDL 操作  

二 MS SQL SERVER访问ORACLE的方法 1 通过行集函数OPENDATASOURCE   SELECT  *  FROM OPENDATASOURCE( 'MSDAORA',     'Data Source=xzh.oracle;User ID=POS;Password=POS')..POS.A0325 MSDAORA是OLEDB FOR ORACLE的驱动,初始化字符串中必须提供要访问的ORACLE本地服务名、用户名、口令。然后引用表中数据时要以服务器..用户名.表名的格式。注意一定是四部分组成,用户名与表名一定要大写,服务器与用户名之间是两个点号。 SELECT * INTO PUBS.DBO.A0325 FROM  OPENDATASOURCE( 'MSDAORA',          'Data Source=UITE;User ID=POS;Password=POS' )..POS.A0325 说明:将ORACLE服务器UITE中POS模式的A0325导入到MS SQLSERVER的PUBS数据库,注意A0325在这条语气执行时被创建,如果A0325已经存在PUBS数据库中,可以使用INSERT INTO的语法导入数据 INSERT INTO PUBS.DBO.A0325 FROM  OPENDATASOURCE( 'MSDAORA',          'Data Source=UITE;User ID=POS;Password=POS' )..POS.A0325  2 通过MS SQLSERVER的链接服务器访问ORACLE的数据    --在查询分析器中查看已经存在的链接服务器    SELECT*FROM SYSSERVERS    --添加链接服务器ORCL到MS SQL SERVER,也可以在企业管理器中创建    EXEC SP_ADDLINKEDSERVER    @server = 'ORCL',                    --ORCL是SQL中链接服务器名称    @srvproduct = 'Oracle',        --Oracle        固定的                @provider = 'MSDAORA',             --MSDAORA   固定的    @datasrc = 'UITE'                    --DataSrc      本地服务名        EXEC SP_DROPSERVER ‘ORCL’       --删除链接服务器     在这里声明一下,如果现在就访问ORACLE肯定不能,因为没有提供登录ORACLE的用户名/口令 EXEC SP_ADDLINKEDSRVLOGIN 'ORCL', false, 'sa', 'POS', 'POS' SA是MS SQLSERVER的登录帐号,POS/POS是ORACLE的登录帐号。 SELECT * FROM ORCL..POS.A0325 FROM后面必须是四部分组成。为什么执行后报错呢,本人一直在寻找解决办法,最后发现通过T-SQL语句没法解决,只有打开MS SQLSERVER的企业管理器。   图2.2 配置ORACLE的远程帐号   图2.3设置远程登录帐号 SELECT * FROM ORCL..POS.A0325    通过图2.2、2.3以后,在查询分析器执行时,立即从ORACLE的ORCL服务器上POS模式的A0325表中查到数据,注意在图2.3步操作过程中,必须在安全性页面选中“用此安全上下文进行”的复选项,然后在“远程登录/使用密码”所对应的文本中输入ORCL服务器上有登录权限的帐号。 SELECT * FROM OPENQUERY(ORCL, 'SELECT * FROM POS.A0325') 3 使用MS SQL SERVER的OPENROWSET函数 SELECT A.* FROM OPENROWSET('MSDAORA',    'UITE';'POS';'POS', POS.A0325) AS A ORDER BY A.ID 说明:有些地方使用行集函数要用别名才能引用,请大家注意。 4使用ODBC的方式 SELECT A.* FROM OPENROWSET('MSDASQL','ORCL_ODBC';'POS';'POS',    POS.A0325) AS  A  ORDER BY A.ID 说明:ORCL_ODBC是访问ORACLE 服务器UITE的ODBC数据源,以上所有代码在SQL QUERY ANALYZE 中通过。关于MS SQL SERVER访问ORACLE有四种方式,其中通过ODBC与链接服务器的方式做起来难度较大,对于初学者会复杂一些,使用OLE DB FOR ORACLE的驱动时,有OPENDATASOURCE与OPENROWSET函数可以使用,都很方便,笔记喜欢使用后者,交待一下,在数据存取方面,OLE DB效率较ODBC为佳。

--这个是在sql里面查询oracle的数据,按照这些方法,你可以使用SQL的导入导出功能将数据导到oracle里面. SQL和ORACLE之间的数据查询 配置透明网关的步骤 前一段花了些时间配置 TRANSPARENT GATEWAY 现在把心得贴出来与大家共享 我的OS是WIN2000   ORACLE 9.0 SQLSERVER2000 HOSTNAME : SVR1 都使用 tcp/ip 默认端口 1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)    安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql 2: 配置 LISTENER.ORA     (SID_DESC =       (GLOBAL_DBNAME = tg4sql) # 可自己命名       (PROGRAM = tg4msql)       (SID_NAME = sql2000)  # SID 自己命名       (ORACLE_HOME = D:\oracle\ora90)     ) 3: 在 oracle_home\ora90\tg4msql\admin    建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000    因此文件名为:initsql2000.ora    其中内容为:    HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名    HS_FDS_TRACE_LEVEL=OFF    HS_FDS_RECOVERY_ACCOUNT=RECOVER    HS_FDS_RECOVERY_PWD=RECOVER 4: 重启 DATABASE AND LISTENER 5: 配置 tnsnames.ora tg_sql =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))      )      (CONNECT_DATA =        (SID = sql2000)      )      (HS=OK)    )  6: 建立 DATABASE LINK CREATE PUBLIC DATABASE LINK DB_SQL CONNECT TO SA IDENTIFIED BY PASSWORD USING 'tg_sql' 7: 完成,测试   select * from [email protected]_sql 8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,   如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,   如果为 FALSE, 不必使用全称,当出现    “ORA-02019:为找到远程数据库的连接说明”   时,请使用全称,如:   select * from [email protected]_sql.US.ORACLE.COM

不好意思,我没有说清楚,这个是从sql2000迁移到sql2000数据库。 该怎么弄呢?

上一篇:用一个什么语句可以改变MSSQL表的所有者为DBO 20xiaochun023]
下一篇:如何在windows下做mysql的群集? 20分,无满意结帖,结帖人abc11365381]

相关文章

相关评论