详细讲解Oracle数据库的数据迁移方法

4/14/2008来源:Oracle教程人气:9716

这篇论坛文章(赛迪网技术社区)主要介绍了Oracle数据库的数据迁移方法,详细内容请大家参考下文:

随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。

在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。对于中小型数据库,如FoxPRo中的*.dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。但对于大型数据库系统,如Oracle 数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。

数据迁移的一般步骤

对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案

设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。

进行数据模拟迁移

根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。

测试数据模拟迁移

根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移

数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。

正式实施数据迁移

按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果

按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。

移植系统应用软件

将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

正式运行应用系统

在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。

实现向Oracle8i数据迁移

Oracle数据库数据迁移可以从一个版本迁移到另一个版本(即升级),也可以从一个主版本迁移到另一个主版本(即移植),例如从Oracle7迁移到Oracle8;可以从一个系统平台迁移到另一个系统平台,例如从Unix系统迁移到Windows NT系统;也可以从非Oracle数据库迁移到Oracle数据库,例如从MS SQL Server迁移到 Oracle数据库。在实现Oracle数据库数据迁移前,需要了解以下几个方面的问题:对数据库系统的要求、对 Oracle数据库DB_Block_Size的要求、对Oracle使用字符集的要求、对SQL*NET版本的要求、对操作系统平台的要求等。

Oracle数据库系统本身提供了实现Oracle数据库数据迁移的多种工具,我们还可以利用PowerBuilder的数据管道功能实现Oracle数据库数据迁移。当前Oracle数据库的较新版本是Oracle8i,以下介绍可以实现数据库数据迁移到Oracle8i的几种方法:

方法1:移植实用程序(Migration Utility)

MIG是Oracle提供的用于Oracle数据库之间数据迁移的命令行方式实用程序。使用MIG迁移Oracle7的数据到Oracle8i的一般步骤为:

设置 Oracle7数据库环境变量,包括运行注册表编辑器(regedit.exe)和控制面板,设置Oracle7主目录、字符集和可执行文件路径等,并在DOS 命令提示符下设置Oracle_sid=Oracle7_sid,并正常关闭Oracle7数据库。

运行Oracle8i的MIG应用程序,生成一个转换文件,用于数据库转换。

从Windows NT控制面板终止Oracle7数据库服务,并使用实例管理器删除Oracle7数据库服务。

设置Oracle8i数据库环境变量,包括运行注册表编辑器(regedit.exe)和控制面板,设置Oracle8i主目录、字符集和可执行文件路径等;由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命令打开数据库并且重新设置日志文件;由spool migscripts.log命令创建输出目标文件,该文件保存前面命令脚本文件的运行结果;运行u0703030.sql,当使用数据库高级复制功能选项时,运行Catrep.sql,当使用Oracle Parallel Server选项时,运行catparr.sql;由spool out命令结束结果输出,并关闭数据库和备份数据库。 ]

查看migscripts.out spool文件,确认脚本文件执行成功,如果脚本文件没有成功执行,返回到脚本文件,检查可能出现的问题。

方法2:Oracle 数据移植助理(Oracle data Migration Assistant)

Oracle数据移植助手用于将Oracle7数据库移植到 Oracle8数据库。升级Oracle8数据库较早版本到Oracle8数据库新版本。Oracle数据移植助手不用于升级较低版本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 Database 页,允许用户进行数据库备份;在Character Set页,指定移植后的数据库使用的字符集。

开始移植过程。移植过程需要的时间取决于系统内存容量、硬盘速度、CPU速度等因素。

移植完成后,可以查看Migration Report页,检查移植是否成功执行。如果移植没有成功,应当把数据库系统返回到备份的Oracle7数据库。

编辑init.ora文件,添加在Oracle8i数据库中会用到的参数。删除在移植过程中用到的旧的控制文件。

当使用数据库高级复制功能选项时,运行catrep.sql;当使用Oracle Parallel Server选项时,运行catparr.sql。

方法3:导入/导出工具(Export/Import)

当需要从一个非PC的系统平台(例如,Unix系统)迁移数据库时,导人/导出方式是一种非常有用的策略,当然相同系统平台的数据迁移导人/导出方式同样适用。采用导入/导出方式迁移Oracle7 Database on Unix到 Oracle8i Database on Windows NT数据库的一般步骤是:

以正常方式关闭Unix系统的 Oracle7数据库系统,不要立即终止或者异常终止,然后冷备份数据库。打开数据库,使用导出工具(Export Utility)进行数据库的完全导出。

在Windows NT系统安装Oracle8i数据库软件并创建启动数据库。

使用FTP,将文件传输到Windows NT计算机。必须使用FTP的binary传输模式,否则,可能造成读导出转储文件错误。

确认目标数据库在运行,并在DOS命令提示符下设置oracle_sid=Oracle8i_SID。

使用导出转储文件,执行到目标数据库完全的导人。

查看导入日志文件,确认数据库导入执行成功。

方法4:SQl*Loader工具

SQL*Loader可以将ASCII文件中的数据装入Oracle数据库。ASCII文件中的信息可以来自不同的数据源,例如其他Oracle数据库、非Oracle数据库以及电子表格等。

采用SQl*Loader工具将数据迁移到Oracle数据库的一般步骤有:

使用文本文件编辑器创建控制文件。

在DOS命令行下使用sqlldr命令装载数据文件。

验证数据是否正确装载。

方法5:SQL*PLUS COPY 命令

使用SQL*PLUS COPY命令,迁移Oracle7数据库到 Oracle8i与导人/导出方式相似,但是,此时需要两个数据库都在线,其一般步骤是:

首先安装Oracle8i数据库,并创建一个数据库作为目标数据库。

添加所需的表空间和用户到目标数据库中;安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名。

在DOS命令提示符下设置oracle_sid=Oracle7_sid。

以Internal用户账号连接SQL*PLUS。

创建一个从Oracle7数据库到Oracle8i数据库的数据库链接;使用SQL*PLUS COPY命令从Oracle7数据库复制表和表内容到Oracle8i数据库。

将视图、同义词、存储过程等添加到目标数据库。

方法6:PowerBuilder数据管道工具(Pipeline)

PowerBuilder数据管道工具是PowerBuilder提供的一个用于转换数据的智能对象,它可以在图形方式下实现不同类型数据库间的数据迁移而无需SQL 编程。PowerBuilder数据管道的操作是在图形方式下实现的,因此比较简单,其一般步骤是:

启动PowerBuilder。

点击工具栏上的“DBProfile"按钮,通过ODBC或专用接口配置源和目标数据库连接,同时连接到源和目标数据库。

单击工具栏上的“Pipeline"按钮,建一个新的数据管道,确定好源和目标数据库。

选择要传输数据的表,并根据需要选中想传输的列。

选择数据迁移方式,Create-AddTable(在目标库中建立一个新表并复制数据)、Replace-Drop/AddTable(删除旧表并复制数据)、Refresh -DeleteRows(删除表中的现有数据并复制数据)、Append-InsertRows(在现有数据基础上增加新数据)、Update-Update/InsertRows(新增数据的键值如果与现有数据某行的键值一样则覆盖现有数据,否则插入新数据)。

单击“Execute"按钮运行定义好的数据管道完成数据迁移。