Oracle数据迁移技术与方案.doc

上传人:laozhun 文档编号:2395025 上传时间:2023-02-17 格式:DOC 页数:13 大小:55KB
返回 下载 相关 举报
Oracle数据迁移技术与方案.doc_第1页
第1页 / 共13页
Oracle数据迁移技术与方案.doc_第2页
第2页 / 共13页
Oracle数据迁移技术与方案.doc_第3页
第3页 / 共13页
Oracle数据迁移技术与方案.doc_第4页
第4页 / 共13页
Oracle数据迁移技术与方案.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Oracle数据迁移技术与方案.doc》由会员分享,可在线阅读,更多相关《Oracle数据迁移技术与方案.doc(13页珍藏版)》请在三一办公上搜索。

1、Oracle数据迁移技术与方案姓 名: 学 号: 指导老师: 系 名: 软件学院 专 业: 计算机科学与技术 班 级: 11级12班 2012年5月21日目录摘要- 1 -第1章 ORACLE数据迁移技术- 1 -1.1 数据迁移技术- 1 -1.2 数据迁移的一般步骤- 1 -1.3 Oracle数据迁移方法- 3 -第2章 ORACLE数据迁移方案- 6 -2.1使用可移动表空间- 6 -2.2数据泵导出与导入工具- 6 -2.3拖出表空间- 7 -第3章 总结- 8 -摘要在企业级应用系统中,新系统的开发,新旧系统的升级换代,以及正常的系统维护,不可避免地涉及到大量的迁移工作。而在一个以

2、数据为核心的业务系统中,数据的迁移更是无处不在。比如:在以数据仓库为架构原型的系统设计中,ETL(抽取,转换,装载)部分的实现就是一种数据迁移;对大型数据系统的分布式实施,数据迁移就是整个实施过程的主要部分。而在实践中,渐进式的数据库开发,更是涉及到大量的数据迁移和同步工作。Oracle数据库是当今世界上应用访问最为广泛的数据库之一,是关系型数据库的创作者,也是客户/服务器结构、分布式数据库和网格计算的倡导者和领导者。基于Oracle数据库平台的商品化应用软件包,已经广泛应用于国内的政府部门、电信、邮政、公安、金融、保险、能源电力、交通、科教、石化、航空航天、民航等各行各业,当这些系统进行系统

3、升级时,不可避免的要进行数据迁移,因此研究Oracle环境的数据迁移很有价值。第1章 Oracle数据迁移技术1.1 数据迁移技术 数据迁移(又称分级存储管理,hierarchical storage management,hsm)是一种将离线存储与在线存储融合的技术。它将高速、高容量的非在线存储设备作为磁盘设备的下一级设备,然后将磁盘中常用的数据按指定的策略自动迁移到磁带库(简称带库)等二级大容量存储设备上。当需要使用这些数据时,分级存储系统会自动将这些数据从下一级存储设备调回到上一级磁盘上。对于用户来说,上述数据迁移技术操作完全是透明的,只是在访问磁盘的速度上略有怠慢,而在逻辑磁盘的容量上

4、明显感觉大大提高了。通俗地讲,数据迁移技术是一种可以把大量不经常访问的数据存放在带库、盘库等离线介质上,只在盘阵上保存少量访问频率高的数据的技术。当那些磁带等介质上数据被访问时,系统自动的把这些数据回迁到盘阵中;同样,盘阵中很久未访问的数据被自动迁移到磁带介质上,从而大大降低投入和管理成本。 1.2 数据迁移的一般步骤 在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。对于中小型数据库,如Foxpro中的.dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。但对于

5、大型数据库系统,如Oracle 数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。 对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。 1.设计数据迁移方案 设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。 2.进行数据模拟迁移 根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又

6、不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。 3.测试数据模拟迁移 根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。 4.准备实施数据迁移 数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。 5.正式实施数据迁移 按照确定的数据迁移方案,正式实施数据迁移。 6.测试数据迁移效果 按照数据迁移测试方案

7、测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。 7.移植系统应用软件 将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。 8.正式运行应用系统 在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。 1.3 Oracle数据迁移方法 Oracle数据库系统本身提供了实现Oracle数据库数据迁移的多种工具,我们还可以利用PowerBuilder的数据管道功能实现Oracle数据库数据迁移。,以下介绍可以实现数据库数据迁移的几种方法:移植实用程序(Migration Utility)

8、,Oracle 数据移植助理(Oracle data Migration Assistant),导入/导出工具(Export/Import),SQlLoader工具,SQLPLUS COPY 命令,PowerBuilder数据管道工具(Pipeline)。1:移植实用程序(Migration Utility) MIG是Oracle提供的用于Oracle数据库之间数据迁移的命令行方式实用程序。使用MIG迁移Oracle7的数据到Oracle8i的一般步骤为: 设置 Oracle7数据库环境变量,包括运行注册表编辑器(regedit.exe)和控制面板,设置Oracle7主目录、字符集和可执行文件

9、路径等,并在DOS 命令提示符下设置Oracle_sid=Oracle7_sid,并正常关闭Oracle7数据库。 运行Oracle8i的MIG应用程序,生成一个转换文件,用于数据库转换。 从Windows NT控制面板终止Oracle7数据库服务,并使用实例管理器删除Oracle7数据库服务。设置Oracle8i数据库环境变量,包括运行注册表编辑器(regedit.exe)和控制面板,设置Oracle8i主目录、字符集和可执行文件路径等;由oradim 命令使用Oracle7_sid和init.ora文件创建Oracle8i服务;重新命名数据库控制文件;编辑init.ora文件,设置comp

10、atible为8.1.5.0.0;删除init.ora文件中不再使用的参数;在DOS命令提示符下设置Oracle_Sid=Oracle8_sid。 实现数据迁移,以内部用户账号连接服务器管理器;以非登录方式启动Oracle8i数据库;由alter database covert命令生成新的控制文件,并把文件头转换为Oracle8i数据库文件格式;由alter database open resetlog命令打开数据库并且重新设置日志文件;由spool migscripts.log命令创建输出目标文件,该文件保存前面命令脚本文件的运行结果;运行u0703030.sql,当使用数据库高级复制功能选

11、项时,运行Catrep.sql,当使用Oracle Parallel Server选项时,运行catparr.sql;由spool out命令结束结果输出,并关闭数据库和备份数据库。查看migscripts.out spool文件,确认脚本文件执行成功,如果脚本文件没有成功执行,返回到脚本文件,检查可能出现的问题。 2:Oracle 数据移植助理(Oracle data Migration Assistant) Oracle数据移植助手用于将Oracle7数据库移植到 Oracle8数据库。升级Oracle8数据库较早版本到Oracle8数据库新版本。Oracle数据移植助手不用于升级较低版本

12、Oracle7数据库到较高版本Oracle7数据库。使用Oracle数据移植助手迁移Oracle7数据库数据到Oracle8i的一般步骤是: 关闭Oracle7数据库,终止所有Oracle数据库服务;编辑init.ora文件,设置compatible为8.1.5.0.0;删除init.ora文件中不再使用的参数。 运行Oracle数据移植助手,在Database Instance页,选择移植的数据库实例,输人internal用户账号密码,并提供init.ora文件位置;在Moving the Database页,指定数据库移植的新位置;如果用户还没有进行备份,在Backup the Datab

13、ase 页,允许用户进行数据库备份;在Character Set页,指定移植后的数据库使用的字符集。 开始移植过程。移植过程需要的时间取决于系统内存容量、硬盘速度、CPU速度等因素。 移植完成后,可以查看Migration Report页,检查移植是否成功执行。如果移植没有成功,应当把数据库系统返回到备份的Oracle7数据库。 编辑init.ora文件,添加在Oracle8i数据库中会用到的参数。删除在移植过程中用到的旧的控制文件。 当使用数据库高级复制功能选项时,运行catrep.sql;当使用Oracle Parallel Server选项时,运行catparr.sql。 3:导入/导出

14、工具(Export/Import) 当需要从一个非PC的系统平台(例如,Unix系统)迁移数据库时,导人导出方式是一种非常有用的策略,当然相同系统平台的数据迁移导人导出方式同样适用。采用导入导出方式迁移Oracle7 Database on Unix到 Oracle8i Database on Windows NT数据库的一般步骤是: 以正常方式关闭Unix系统的 Oracle7数据库系统,不要立即终止或者异常终止,然后冷备份数据库。打开数据库,使用导出工具(Export Utility)进行数据库的完全导出。 在Windows NT系统安装Oracle8i数据库软件并创建启动数据库。 使用F

15、TP,将文件传输到Windows NT计算机。必须使用FTP的binary传输模式,否则,可能造成读导出转储文件错误。 确认目标数据库在运行,并在DOS命令提示符下设置oracle_sid=Oracle8i_SID。 使用导出转储文件,执行到目标数据库完全的导人。 查看导入日志文件,确认数据库导入执行成功。 4:SQlLoader工具 SQLLoader可以将ASCII文件中的数据装入Oracle数据库。ASCII文件中的信息可以来自不同的数据源,例如其他Oracle数据库、非Oracle数据库以及电子表格等。 采用SQlLoader工具将数据迁移到Oracle数据库的一般步骤有: 使用文本文

16、件编辑器创建控制文件。 在DOS命令行下使用sqlldr命令装载数据文件。 验证数据是否正确装载。 5:SQLPLUS COPY 命令 使用SQLPLUS COPY命令,迁移Oracle7数据库到 Oracle8i与导人导出方式相似,但是,此时需要两个数据库都在线,其一般步骤是: 首先安装Oracle8i数据库,并创建一个数据库作为目标数据库。 添加所需的表空间和用户到目标数据库中;安装所需的SQLNet2或者Net8软件,并配置用于连接数据库的别名。 在DOS命令提示符下设置oracle_sid=Oracle7_sid。 以Internal用户账号连接SQLPLUS。 创建一个从Oracle

17、7数据库到Oracle8i数据库的数据库链接;使用SQLPLUS COPY命令从Oracle7数据库复制表和表内容到Oracle8i数据库。 将视图、同义词、存储过程等添加到目标数据库。 6:PowerBuilder数据管道工具(Pipeline) PowerBuilder数据管道工具是PowerBuilder提供的一个用于转换数据的智能对象,它可以在图形方式下实现不同类型数据库间的数据迁移而无需SQL 编程。PowerBuilder数据管道的操作是在图形方式下实现的,因此比较简单,其一般步骤是: 启动PowerBuilder。 点击工具栏上的“DBProfile按钮,通过ODBC或专用接口配

18、置源和目标数据库连接,同时连接到源和目标数据库。 单击工具栏上的“Pipeline按钮,建一个新的数据管道,确定好源和目标数据库。 选择要传输数据的表,并根据需要选中想传输的列。 选择数据迁移方式,CreateAddTable(在目标库中建立一个新表并复制数据)、ReplaceDrop/AddTable(删除旧表并复制数据)、Refresh DeleteRows(删除表中的现有数据并复制数据)、AppendInsertRows(在现有数据基础上增加新数据)、UpdateUpdate/InsertRows(新增数据的键值如果与现有数据某行的键值一样则覆盖现有数据,否则插入新数据)。 单击“Exe

19、cute按钮运行定义好的数据管道完成数据迁移。第2章 Oracle数据迁移方案为了有效地实现数据集市的方法,数据专家必须能将数据快速、有效地放入数据集市中。如何用数据仓库中的数据快速刷新数据集市中的数据,而这些数据集市又运行在各个结构不同的平台上。以下是Oracle数据迁移技术的几种方案。2.1使用可移动表空间把整个表空间移动到目标系统的最快速方法是用FTP(文件传输协议)或rcp(远程复制)来简单地转移表空间的基本文件。但是,仅仅复制Oracle数据文件还不够,目标数据库必须识别出并导入文件以及相应的表空间,最终用户才能使用表空间数据。使用可移动表空间包括复制表空间文件和使它们中的数据在目标

20、数据库中可用。 要移动表空间,使用Oracle数据库10g中的数据泵导出(Data Pump Export)工具。数据泵是Oracle的新一代数据转移工具,它替换了早期的Oracle Export (EXP)和Import (IMP)工具。这些老的工具使用正则SQL来提取和插入数据,而数据泵则与它们不同,它使用能绕过SQL缓冲区的专用API,从而使操作过程速度变得极快。此外,数据泵可以提取特定的对象,如特定的存储过程或特定表空间的表集合。 数据泵的导出和导入可以由作业控制,数据库管理员可以随时暂停、重启或终止这些作业。2.2数据泵导出与导入工具选择可移动表空间的限制之一是在转移文件时源表空间必

21、须是只读模式。在现实世界中,并不总是能满足这一要求。例如,在OLTP数据库中,可能对表要经常进行读写操作。 使用Oracle数据库10g中的数据泵实用工具来转移表空间。对这种方法进行的测试包括移动TS1和TS2表空间内容的以下步骤: (1)创建一个目录对象来存放转储的文件。CREATE DIRECTORY dump_dir AS /u01/dumps;(2)用数据泵导出工具导出数据。 expdp lora/lora123 TABLESPACES=/(ts1,ts2/) DUMPFILE=ts1_ts2.dmp DIRECTORY=dump_dir这一步创建一个包含TS1和TS2表空间内容的文件

22、/u01/dumps/ ts1_ts2.dmp。 (3)将文件ts1_ts2.dmp转移到远程系统中,放在目录/u01/dumps下(用文件传输的方法如FTP或rcp)。 (4)在目标数据库中创建一个目录对象。CREATE DIRECTORY dump_dir AS /u01/dumps;(5)使用数据泵导入工具将该文件导入到该数据库中。 impdp lora/lora123 DIRECTORY=dump_dir DUMPFILE=ts1_ts2.dmp如果表空间内的数据量相对较小,则Lora可以只用一条命令执行上面的所有步骤: impdp lora/lora123 DIRECTORY=dum

23、p_dir NETWORK_LINK=srcdb TABLESPACES=/(ts1,ts2/) 这条命令使用数据泵导入工具将通过数据库链接srcdb(在以前的章节中已讨论过)检索到的数据加载到表中。但是,由于网络带宽通常是受到限制的,因此这种方法可能比使用导出/传输/导入周期方法要慢一些。 如果只需将特定的表或表集合进行转移,那么可以在expdp命令中使用TABLES=子句来只下载特定的表或表集合。2.3拖出表空间使用Oracle数据库10g中的新工具,它简化了可移动表空间的移动方法,因此只涉及执行一个打包过程。在这种方法中,用户利用所提供的DBMS_STREAMS_TABLESPACE_A

24、DM包从源系统中拖?quot;表空间。这个包使用数据泵转移表空间并将数据文件转换成目标系统的格式。 它还自动执行任何所需的字节顺序变换。 下面给出在最简单的情况下使用这种方法的过程-涉及单个简单表空间(更复杂的情况在下一节介绍)。 如果一个表空间只有一个数据文件,则这个表空间称为简单表空间。DBMS_STREAMS_TABLESPACE_ADM包中PULL_SIMPLE_TABLESPACE过程的使用方法: (1)在存放数据文件的目录所在的(远程)数据仓库数据库中创建一个目录对象。CREATE DIRECTORY dbf_dir AS /u01/oradata/dw;(2)设置远程数据库中的表

25、空间TS1为只读。ALTER TABLESPACE TS1 READ ONLY;剩下的一些步骤在本地(数据集市)数据库中完成。 (3)创建一个连接到远程(数据仓库)数据库(在Lora的例子中是dwdb)的数据库链接。CREATE DATABASE LINK dwdb USING dwdb;(4)创建一个数据文件将被转移到其中的目录对象。CREATE DIRECTORY dbf_dir AS /u01/oradata/mart;(5)从远程数据库中拖出表空间。BEGIN DBMS_STREAMS_TABLESPACE_ADM .PULL_SIMPLE_TABLESPACE ( tablespac

26、e_name = TS1, database_link = dwdb, directory_object = DBF_DIR, conversion_extension = linux);END;该操作在后台完成了许多步骤:设置源表空间为只读;用数据泵导出工具进行一次表空间的元数据转储;用DBMS_FILE_TRANSFER包移动数据文件和转储的文件;把源表空间恢复到其最初的读写状态;使用数据泵导入工具将表空间插入到本地数据库中。由于源数据库运行在Linux上,而目标数据库运行在Solaris上,因此这一操作首先复制原始数据文件(Linux的文件格式),然后将它转换到目标平台上(Solaris

27、)的文件格式。复制过程保持最初被转移的文件,而创建一个新文件用于转换。新文件与最初的文件同名,但具有CONVERSION_EXTENSION参数指定的linux扩展名。在目标数据库中创建的表空间为只读表空间。 该操作还在与数据文件相同的目录下创建一个名为ts1_01.plg的日志文件。如果执行该过程返回错误信息,则检查该文件的内容可能有助于找到错误的原因。 拖出多个表空间上面的例子针对的是单个简单表空间的情况。但如果想移动一组表空间,或者一些表空间的数据文件多于一个,该怎么办呢?在这种情况下,她可以使用同一个包中的另一个过程PULL_TABLESPACES。代码清单2给出的例子说明Lora如何

28、转移两个表空间TS7和TS8,而不管它们有多少个数据文件。 该过程要求以VARCHAR2数据类型给出表空间名和目录名。代码清单2中第2行到第5行展示出了这些变量的声明,第10行到第13行展示出这些变量被赋值给相应的表空间名和目录名。 由于定义了两个目录,因此第一个文件在第一个目录中创建,下一个文件在第二个目录中创建,第三个文件再次在第一个目录中创建,如此等等。这些操作通过数据泵作业来执行,作业名在第17行指定。如果需要的话,源系统字节顺序的数据文件会自动转换为目标系统的字节顺序。在目标数据库中创建的新文件获得linux扩展名,如第21行代码所示。处理过程记录在由目录对象LOG_DIR指定的目录

29、中的ts7_ts8.log日志文件中(第14行)。 这种方法的优点显而易见。从一个系统把一个表空间转移到另一个系统所需的所有操作任务都封装在一个程序单元中,并且细节对用户完全透明。甚至把文件从源系统转移到目标系统的工作也在这个过程中通过所提供的DBMS_FILE_TRANSFER包来完成。用户简单地用表空间名调用该过程,表空间就会在本地数据库中被刷新。他们不必操心底层的细节(如操作系统),因为文件转移过程自动转换文件。这种方法有什么不好的地方吗?它的主要缺点就是将各个功能封装在一个单一的过程内,这可能会掩盖某一步产生的错误,使问题的诊断变得很复杂。手工转移一个表空间的方法要求各条命令都是透明的

30、,因而其好处是用户能够看到每一步操作的结果。第3章 总结只有当数据实际被写入时,占据了磁盘上的空间,自动精简配置才可以帮助保留存储空间。不是容量第一次被应用或用户设置实用就有作用的,当应用或用户不需要磁盘空间时,自动精简配置可以消除浪费。但是,很多数据迁移工具在一个目标系统内写入“从block 0到最后一个block”,而不管那一块是使用过的,浪费掉了用户设置的自动精简配置的好处。在决定写入前,文件系统实用程序或基于主机容量管理“足够智能来判断是否block被访问”这样可以帮助遏制这个问题。Block-level的迁移技术对于保留数据安全问题是很有效果的,但是对于自动精简配置却不是很有效果。在迁移数据后,可能会引起服务器崩溃。在存储阵列上迁移数据也要求从服务器上下载之前供应商的软件,把新的供应商的软件上传上去。这不仅要求时间,如果没有完全卸载旧的软件,它会和其他应用发生冲突,从而引发不稳定。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号