《2022年Oracle数据迁移专业技术与专业技术方案.docx》由会员分享,可在线阅读,更多相关《2022年Oracle数据迁移专业技术与专业技术方案.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle 数据迁移技术与方案姓名:学号:指导老师:系专班名: 软件学院业: 运算机科学与技术级: 11 级 12 班2021 年 5 月 21 日目录摘要 - 1 -第 1 章 ORACLE 数据迁移技术 - 1 -1.1 数据迁移技术 - 1 -1.2 数据迁移的一般步骤- 1 -1.3 ORACLE 数据迁移方法 - 3 -第 2 章 ORACLE 数据迁移方案 - 6 -2.1 使用可移动表空间 - 6 -2.2 数据泵导出与导入工具- 7 -2.3 拖出表空间 - 7 -第 3 章总结 - 9 -摘要在企业级应用系统中 , 新系统的开发 , 新旧系统的升级换代 , 以及正常的系统保
2、护 , 不行防止地涉及到大量的迁移工作;而在一个以数据为核心的业务系统中, 数据的迁移更是无处不在;比如:在以数据仓库为架构原型的系统设计中,ETL 抽取, 转换, 装载 部分的实现就是一种数据迁移;对大型数据系统的分布式实施, 数据迁移就是整个实施过程的主要部分;而在实践中 , 渐进式的数据库开发 , 更是涉及到大量的数据迁移和同步工作; Oracle 数据库是当今世界上应用拜访最为广泛的数据库之一, 是关系型数据库的创作者 , 也是客户 / 服务器结构、分布式数据库和网格运算的提倡者和领导者;基于Oracle 数据库平台的商品化应用软件包 , 已经广泛应用于国内的政府部门、电信、邮政、公安
3、、金融、保险、能源电力、交通、科教、石化、航空航天、民航等各行各业,当这些系统进行系统升级时 , 不行防止的要进行数据迁移 , 因此争论 Oracle 环境的数据迁移很有价值;第 1 章 Oracle 数据迁移技术1.1 数据迁移技术数据迁移 又称分级储备治理, hierarchical storage managemen,t hsm是一种将离线储备与在线储备融合的技术;它将高速、高容量的非在线储备设备作为磁盘设备的下一级设备,然后将磁盘中常用的数据按指定的策略自动迁移到磁带库(简称带库)等二级大容量储备设备上;当需要使用这些数据时,分级储备系统会自动将这些数据从下一级储备设备调回到上一级磁盘
4、上;对于用户来说,上述数据迁移技术操作完全是透亮的,只是在拜访磁盘的速度上略有怠慢,而在规律磁盘的容量上明显感觉大大提高 了;通俗地讲,数据迁移技术是一种可以把大量不常常拜访的数据存放在带库、盘库等离线介质上,只在盘阵上储存少量拜访频率高的数据的技术;当那些磁带等介质上数据被拜访时,系统自动的把这些数据回迁到盘阵中;同样,盘阵中很久未拜访的数据被自动迁移到磁带介质上,从而大大降低投入和治理成本;1.2 数据迁移的一般步骤在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移;对于
5、中小型数据库,如Foxpro 中的 .dbf ,这种迁移特别简洁,一般只需通过简洁的Copy就能完成;但对于大型数据库系统,如Oracle数据库,数据迁移就不那么简洁了,它需要利用肯定的技术和体会,有步骤按方案地完成;对数据库治理人员来说,数据库数据迁移极具挑战性,一旦措施不当,宝贵的数据资源将面临丢失的危急,要胜利地实现数据库数据平滑迁移,需要周密方案和充分预备,并依据肯定的步骤来完成;1. 设计数据迁移方案设计数据迁移方案主要包括以下几个方面工作:争论与数据迁移相关的资料,或在网站上查询相关内容、评估和挑选数据迁移的软硬件平台、挑选数据迁移方法、挑选数据备份和复原策略、设计数据迁移和测试方
6、案等;2. 进行数据模拟迁移依据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的成效;数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按复原策略进行复原测试;3. 测试数据模拟迁移依据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一样性测试、应用软件执行功能测试、性能测试、数据备份和复原测试等;4. 预备实施数据迁移数据模拟迁移测试胜利后,在正式实施数据迁移前仍需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等;5. 正式实施
7、数据迁移依据确定的数据迁移方案,正式实施数据迁移;6. 测试数据迁移成效依据数据迁移测试方案测试数据迁移成效,并对数据迁移后的数据库参数和性能进行调整,使之满意数据迁移后实际应用系统的需要;7. 移植系统应用软件将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行;8. 正式运行应用系统在正式实施数据迁移胜利并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用;1.3 Oracle数据迁移方法Oracle 数据库系统本身供应了实现 Oracle 数据库数据迁移的多种工具,我们仍可以利用 PowerBuilder的数据管道功能实现 Oracle数据库数据迁移;
8、,以下介绍可以 实现数据库数据迁移的几种方法:移植有用程序(Migration Utility), Oracle数据 移 植 助 理 OracledataMigrationAssistant, 导 入 /导 出 工 具( Export/Import), SQl Loader 工具, SQLPLUS COPY命令, PowerBuilder数据管道工具( Pipeline);1:移植有用程序( Migration Utility )MIG是 Oracle 供应的用于 Oracle 数据库之间数据迁移的命令行方式有用程序;使用 MIG迁移 Oracle7 的数据到 Oracle8i 的一般步骤为:
9、设置 Oracle7 数据库环境变量,包括运行注册表编辑器( regedit.exe )和掌握面板,设置 Oracle7 主目录、字符集和可执行文件路径等,并在 DOS命令提示符下设置Oracle_sid=Oracle7_sid ,并正常关闭 Oracle7 数据库;运行 Oracle8i 的 MIG应用程序,生成一个转换文件,用于数据库转换;从 Windows NT掌握面板终止 Oracle7 数据库服务 , 并使用实例治理器删除 Oracle7数据库服务;设置 Oracle8i数据库环境变量,包括运行注册表编辑器(regedit.exe)和掌握面板,设置 Oracle8i主目录、字符集和可
10、执行文件路径等;由oradim命令使用Oracle7_sid和 init.ora文件创建 Oracle8i服务;重新命名数据库掌握文件;编辑init.ora文件,设置 compatible为 8.1.5.0.0;删除 init.ora文件中不再使用的参数;在 DOS命令提示符下设置 Oracle_Sid=Oracle8_sid;实现数据迁移,以内部用户账号连接服务器治理器;以非登录方式启动Oracle8i 数据库;由alter database covert命令生成新的掌握文件,并把文件头转换为Oracle8i数据库文件格式;由 alter database open resetlog命令打开
11、数据库并且重新设置日志文件;由 spool migscripts.log命令创建输出目标文件,该文件储存前面命令脚本文件的运行结果;运行u0703030.sql ,当使用数据库高级复制功能选项时,运行 Catrep.sql,当使用 Oracle Parallel Server选项时,运行 catparr.sql;由spool out命令终止结果输出,并关闭数据库和备份数据库;查看 migscripts.out spool文件,确认脚本文件执行胜利,假如脚本文件没有胜利执行,返回到脚本文件,检查可能显现的问题;2: Oracle数据移植助理 Oracle data Migration Assis
12、tantOracle 数据移植助手用于将 Oracle7 数据库移植到 Oracle8 数据库;升级Oracle8 数据库较早版本到 Oracle8 数据库新版本; Oracle 数据移植助手不用于升级较低版本 Oracle7 数据库到较高版本 Oracle7 数据库;使用 Oracle 数据移植助手迁移Oracle7 数据库数据到 Oracle8i 的一般步骤是:关闭 Oracle7 数据库,终止全部 Oracle 数据库服务;编辑 init.ora 文件,设置compatible为 8.1.5.0.0;删除 init.ora文件中不再使用的参数;运行 Oracle 数据移植助手,在 Dat
13、abase Instance页,挑选移植的数据库实例, 输人 internal用户账号密码,并供应init.ora文件位置;在 Moving the Database 页,指定数据库移植的新位置;假如用户仍没有进行备份, 在 Backup the Database 页,答应用户进行数据库备份;在Character Set页,指定移植后的数据库使用的字符集;开头移植过程;移植过程需要的时间取决于系统内存容量、硬盘速度、CPU速度等因素;移植完成后,可以查看 Migration Report页,检查移植是否胜利执行;假如移植没有胜利,应当把数据库系统返回到备份的Oracle7 数据库;编辑 ini
14、t.ora文件,添加在 Oracle8i数据库中会用到的参数;删除在移植过程中用到的旧的掌握文件;当使用数据库高级复制功能选项时,运行catrep.sql;当使用 Oracle ParallelServer 选项时,运行 catparr.sql;3:导入 / 导出工具( Export/Import)当需要从一个非 PC的系统平台(例如, Unix 系统)迁移数据库时,导人导出方式是一种特别有用的策略,当然相同系统平台的数据迁移导人导出方式同样适用;采纳导入导出方式迁移 Oracle7 Database on Unix到 Oracle8i Database on Windows NT数据库的一般
15、步骤是:以正常方式关闭 Unix 系统的 Oracle7数据库系统,不要立刻终止或者反常终止, 然后冷备份数据库;打开数据库,使用导出工具(Export Utility)进行数据库的完全导出;在 Windows NT系统安装 Oracle8i数据库软件并创建启动数据库;使用 FTP,将文件传输到 Windows NT运算机;必需使用 FTP的 binary传输模式, 否就,可能造成读导出转储文件错误;确认目标数据库在运行,并在 DOS命令提示符下设置 oracle_sid=Oracle8i_SID;使用导出转储文件,执行到目标数据库完全的导人;查看导入日志文件,确认数据库导入执行胜利; 4:
16、SQlLoader 工具SQLLoader 可以将 ASCII 文件中的数据装入Oracle 数据库; ASCII 文件中的信息可以来自不同的数据源,例如其他Oracle数据库、非 Oracle数据库以及电子表格等;采纳 SQlLoader 工具将数据迁移到 Oracle 数据库的一般步骤有:使用文本文件编辑器创建掌握文件;在 DOS命令行下使用 sqlldr命令装载数据文件;验证数据是否正确装载;5: SQLPLUS COPY命令使用 SQLPLUS COPY命令,迁移 Oracle7 数据库到 Oracle8i与导人导出方式相像,但是,此时需要两个数据库都在线,其一般步骤是:第一安装 Or
17、acle8i数据库,并创建一个数据库作为目标数据库;添加所需的表空间和用户到目标数据库中;安装所需的SQL Net2 或者 Net8 软件,并配置用于连接数据库的别名;在 DOS命令提示符下设置 oracle_sid=Oracle7_sid;以 Internal用户账号连接 SQLPLUS;创建一个从 Oracle7数据库到 Oracle8i数据库的数据库链接;使用SQLPLUS COPY命令从 Oracle7 数据库复制表和表内容到 Oracle8i数据库;将视图、同义词、储备过程等添加到目标数据库;6: PowerBuilder数据管道工具( Pipeline)PowerBuilder数据
18、管道工具是 PowerBuilder供应的一个用于转换数据的智能对象,它可以在图形方式下实现不同类型数据库间的数据迁移而无需SQL 编程;PowerBuilder数据管道的操作是在图形方式下实现的,因此比较简洁,其一般步骤是:启动 PowerBuilder ;点击工具栏上的“ DBProfile按钮,通过 ODBC或专用接口配置源和目标数据库连接,同时连接到源和目标数据库;单击工具栏上的“ Pipeline按钮,建一个新的数据管道,确定好源和目标数据库;挑选要传输数据的表,并依据需要选中想传输的列;挑选数据迁移方式,Create AddTable (在目标库中建立一个新表并复制数据)、 Rep
19、lace Drop/AddTable (删除旧表并复制数据)、Refresh DeleteRows(删除表中的现有数据并复制数据)、AppendInsertRows (在现有数据基础上增加新数据)、 UpdateUpdate/InsertRows (新增数据的键值假如与现有数据某行的键值一样就掩盖现有数据,否就插入新数据);单击“ Execute 按钮运行定义好的数据管道完成数据迁移;第 2 章 Oracle 数据迁移方案为了有效地实现数据集市的方法,数据专家必需能将数据快速、有效地放入数据集市中;如何用数据仓库中的数据快速刷新数据集市中的数据,而这些数据集市又运行在各个结构不同的平台上;以下
20、是 Oracle 数据迁移技术的几种方案;2.1 使用可移动表空间把整个表空间移动到目标系统的最快速方法是用FTP(文件传输协议)或 rcp(远程复制)来简洁地转移表空间的基本文件;但是,仅仅复制Oracle 数据文件仍不够, 目标数据库必需识别出并导入文件以及相应的表空间,最终用户才能使用表空间数据;使用可移动表空间包括复制表空间文件和使它们中的数据在目标数据库中可用;要移动表空间,使用 Oracle 数据库 10g 中的数据泵导出( Data Pump Export)工具;数据泵是Oracle 的新一代数据转移工具,它替换了早期的Oracle Export EXP和Import IMP 工
21、具;这些老的工具使用正就SQL 来提取和插入数据,而数据泵就与它们不同,它使用能绕过 SQL 缓冲区的专用 API,从而使操作过程速度变得极快;此外, 数据泵可以提取特定的对象,如特定的储备过程或特定表空间的表集合;数据泵的导出和导入可以由作业掌握,数据库治理员可以随时暂停、重启或终止这些作业;2.2 数据泵导出与导入工具挑选可移动表空间的限制之一是在转移文件时源表空间必需是只读模式;在现实世界中,并不总是能满意这一要求;例如,在OLTP 数据库中,可能对表要常常进行读写操作;使用 Oracle 数据库 10g 中的数据泵有用工具来转移表空间;对这种方法进行的测试包括移动 TS1 和 TS2
22、表空间内容的以下步骤:(1) 创建一个目录对象来存放转储的文件; CREATE DIRECTORY dump_dir AS /u01/dumps;2用数据泵导出工具导出数据;expdplora/lora123TABLESPACES=/ts1,ts2/DUMPFILE=ts1_ts2.dmp DIRECTORY=dump_dir这一步创建一个包含 TS1 和 TS2 表空间内容的文件 /u01/dumps/ ts1_ts2.dmp;(3) 将文件 ts1_ts2.dmp 转移到远程系统中,放在目录 /u01/dumps下(用文件传输的方法如 FTP 或 rcp);(4) 在目标数据库中创建一个目
23、录对象;CREATE DIRECTORY dump_dirAS /u01/dumps;(5) 使用数据泵导入工具将该文件导入到该数据库中;impdp lora/lora123 DIRECTORY=dump_dir DUMPFILE=ts1_ts2.dmp假如表空间内的数据量相对较小,就Lora 可以只用一条命令执行上面的全部步骤:impdplora/lora123DIRECTORY=dump_dirNETWORK_LINK=srcdbTABLESPACES=/ts1,ts2/这条命令使用数据泵导入工具将通过数据库链接srcdb(在以前的章节中已争论过)检索到的数据加载到表中;但是,由于网络带宽
24、通常是受到限制的,因此这种方法可能比使用导出 /传输/导入周期方法要慢一些;假如 只需将特 定的 表 或表集合 进行 转移 , 那 么可 以在 expdp 命 令中 使用TABLES= 子句来只下载特定的表或表集合;2.3 拖出表空间使用 Oracle 数据库 10g 中的新工具,它简化了可移动表空间的移动方法,因此只涉 及 执 行 一 个 打 包 过 程 ; 在 这 种 方 法 中 , 用 户 利 用 所 提 供 的DBMS_STREAMS_TABLESPACE_ADM包从源系统中 拖.quot;表空间;这个包使用数据泵转移表空间并将数据文件转换成目标系统的格式;它仍自动执行任何所需的字节次
25、序变换;下面给出在最简洁的情形下使用这种方法的过程-涉及单个简洁表空间(更复杂的情形在下一节介绍);假如一个表空间只有一个数据文件,就这个表空间称为简洁表空间; DBMS_STREAMS_TABLESPACE_ADM包中 PULL_SIMPLE_TABLESPACE 过程的使用方法:(1) )在存放数据文件的目录所在的(远程)数据仓库数据库中创建一个目录对象;CREATE DIRECTORY dbf_dir AS /u01/oradata/dw;(2) 设置远程数据库中的表空间 TS1 为只读;ALTER TABLESPACE TS1 READ ONLY ;剩下的一些步骤在本地(数据集市)数据
26、库中完成;(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 tablespace_name= TS1, database_link= dwdb, directory_object= DBF_
27、DIR, conversion_extension = linux;END;该操作在后台完成了很多步骤:设置源表空间为只读;用数据泵导出工具进行一次表空间的元数据转储;用DBMS_FILE_TRANSFER 包移动数据文件和转储的文件; 把源表空间复原到其最初的读写状态;使用数据泵导入工具将表空间插入到本地数据库中;由于源数据库运行在Linux 上,而目标数据库运行在Solaris 上,因此这一操作第一复制原始数据文件( Linux 的文件格式),然后将它转换到目标平台上(Solaris) 的文件格式;复制过程保持最初被转移的文件,而创建一个新文件用于转换;新文件与最初的文件同名,但具有 CO
28、NVERSION_EXTENSION参数指定的 linux 扩展名;在目标数据库中创建的表空间为只读表空间;该操作仍在与数据文件相同的目录下创建一个名为ts1_01.plg 的日志文件;假如执行该过程返回错误信息,就检查该文件的内容可能有助于找到错误的缘由;拖出多个表空间上面的例子针对的是单个简洁表空间的情形;但假如想移动一组表空间,或者一些表空间的数据文件多于一个,该怎么办呢?在这种情形下,她可以使用同一个包中的另一个过程 PULL_TABLESPACES;代码清单 2 给出的例子说明 Lora 如何转移两个表空间 TS7 和 TS8,而不管它们有多少个数据文件;该过程要求以 VARCHAR
29、2 数据类型给出表空间名和目录名;代码清单2 中第 2 行到第 5 行展现出了这些变量的声明,第10 行到第 13 行展现出这些变量被赋值给相应的表空间名和目录名;由于定义了两个目录,因此第一个文件在第一个目录中创建,下一个文件在其次个目录中创建,第三个文件再次在第一个目录中创建,如此等等;这些操作通过数据泵作业来执行,作业名在第17 行指定;假如需要的话,源系统字节次序的数据文件会自动转换为目标系统的字节次序;在目标数据库中创建的新文件获得 linux 扩展名,如第 21 行代码所示;处理过程记录在由目录对象LOG_DIR 指定的目录中的 ts7_ts8.log日志文件中(第 14 行);这
30、种方法的优点显而易见;从一个系统把一个表空间转移到另一个系统所需的所有操作任务都封装在一个程序单元中,并且细节对用户完全透亮;甚至把文件从源系统转移到目标系统的工作也在这个过程中通过所供应的DBMS_FILE_TRANSFER 包来完成;用户简洁地用表空间名调用该过程,表空间就会在本地数据库中被刷新;他们不必操劳底层的细节(如操作系统),由于文件转移过程自动转换文件;这种方法有什么不好的地方吗?它的主要缺点就是将各个功能封装在一个单一的过程内,这可能会掩盖某一步产生的错误,使问题的诊断变得很复杂;手工转移一个表空间的方法要求各条命令都是透亮的,因而其好处是用户能够看到每一步操作的结果;第 3
31、章 总结只有当数据实际被写入时,占据了磁盘上的空间,自动精简配置才可以帮忙保留储备空间;不是容量第一次被应用或用户设置有用就有作用的,当应用或用户不需要磁盘空间时,自动精简配置可以排除铺张;但是,很多数据迁移工具在一个目标系统内写入“从 block 0到最终一个 block ”,而不管那一块是使用过的,铺张掉了用户设置的自动精简配置的好处;在打算写入前,文件系统有用程序或基于主机容量治理“足够智能来判定是否block被拜访”这样可以帮忙遏制这个问题; Block-level的迁移技术对于保留数据安全问题是很有成效的,但是对于自动精简配置却不是很有成效;在迁移数据后,可能会引起服务器崩溃;在储备阵列上迁移数据也要求从服务器上下载之前供应商的软件,把新的供应商的软件上传上去;这不仅要求时间,假如没有完全卸载旧的软件,它会和其他应用发生冲突,从而引发不稳固;