oracle数据库迁移版本兼容问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

在关于不同版本的数据库迁移目的在不同版本的数据库之间进行导入和导出的时候存在的兼容性问题。应用范围本文用于实现在oracle7,oracle8,oracle8i,oracle9i,oracle10g和oracle11g数据库上进行的导入/导出功能,也就是说将数据从版本为X的数据库中导出,然后再数据导入到版本为Y的数据库中去。同时也提供了在执行导入/导出功能时,相关的一些版本的使用情况和在进行数据导出的时候需要进行哪些的准备工作。在不同版本的数据库进行导入和导出的兼容性问题兼容性概要1.用具有导出功能的数据库将数据导出2.用具有导入功能的目标数据库将数据导入3.Exportdatadump生成的dump文件和由原来的导出工具生成的dump文件不兼容4.oracle7的导出工具不支持从oracle9i以及更高的版本导出数据客户端介绍1.导出/导入客户端使用oracle的导出/导入功能我们可以在不同的数据库间进行数据对象的迁移,即使他们所使用的硬件平台和软件配置不一样。Oracle的导出工具从数据库中提取对象定义以及表数据,把他们存储在一个oracle的二进制导出转存文件里这个文件一般放在磁盘或者磁带当中。我们也可以使用FTP或者物理传输(如果是磁带的话)把这个文件传到另外一个站点中去。导出转存文件在网络中传输时必须以二进制的形式存在。如果导出文件是以字符模式(ASCII)形式传输的话当进行文件导入的时候就会引起错误,这些错误结果可能是IMP-9或者IMP-10紧接在错误IMP-0后。Oracle的导入工具从导出转存文件中读取数据定义以及表数据然后把这些信息插入到目标数据库中去。2.导入/导出数据泵从oracle10g的第一个版本(10.1.1.x)开始,ORACLE引入了导出数据泵(expdp)和导入数据泵(impdp)功能。由导出数据泵创建的导出泵文件只能被导入数据泵所读取,由原来的导出功能创建的导出泵文件是不能被导入数据泵的客户端所读取的。数据字典视图1.catexp.sql脚本在使用导出/导入功能之前,数据字典必须具备有导出/导入功能所需要的视图。我们可以通过运行以下的脚本来实现:——unix:SQLconnect/assysdbaSQL@$ORACLE_HOME/rdbms/admin/catexp.sql——windows:SQLconnect/assysdbaSQL@%ORACLE_HOME%\rdbms\admin\catexp.sql脚本CATEXP.SQL必须由用户SYS来执行,这个脚本也可以被脚本CATALOG.SQL自动调用。CATEXP.SQL和CATALOG.SQL这两个脚本在数据库中只需要执行一次,通常在运行导出/导入之前我们没有必要再执行这些脚本了(如果需要的视图不正确会出现错误EXP-24或者IMP-23)。脚本CATEXP.SQL执行完成的是以下的任务:l创建数据字典需要的导出/导入视图l创建角色EXP_FULL_DATABASE和IMP_FULL_DATABASEl分配合适的权限给角色EXP_FULL_DATABASE和IMP_FULL_DATABASEl把EXP_FULL_DATABASE和IMP_FULL_DATABASE分配给角色DBA2.脚本catexp7.sql当使用Oracle7导出客户端从oracle8/8i数据库创建oracle7导出文件,用户SYS必须在oracle8/8i上运行CATEXP7.SQL:——unix:SQLconnect/assysdbaSQL@$ORACLE_HOME/rdbms/admin/catexp7.sql——windows:SQLconnect/assysdbaSQL@%ORACLE_HOME%\rdbms\admin\catexp7.sql这个脚本创建的导出视图使得oracle8/8i的导出看起来和oracle7的一样,这就意味着在这些视图里是不会看到oracle8/8i特定的对象,这样的导出文件在oracle7中可以正常的导入。脚本CATEXP.SQL和CATEXP7.SQL只需要被执行一次。CATEXP.SQL创建在Oracle8/8i/10g/11g导出客户端需要使用的exu8%视图,CATEXP7.SQL创建在Oracle7导出端需要使用的exu7%视图。如果这两个脚本已经被SYS执行过了,我们就不需要再执行一次。以上提到的方法也同样适用于从Oracle7数据库中创建一个Oracle6导出文件,我们只需要使用SYS用户在Oracle7数据库中运行CATEXP6.SQL脚本就可以了。需要注意的是:Oracle不支持使用Oracle7导出客户端对Oracle9i数据库进行导出:在向后兼容时,我只支持向后兼容一个版本,这说明了我们同样也不能使用Oracle8导出客户端对Oracle10数据库进行导出(现在只支持使用Oracle8i8.1.7或者更高版本的导出客户端对oracle10g数据库进行导出和使用Oracle9i9.2.0导出端对oracle11g数据库导出)使用全库导出/导入进行数据库迁移1.关于直接升级的约束如果我们使用全库导出/导入的方法将数据库升级到Oracle9i,oracle10g,或者oracle11g,有一个关于直接升级的约束,当然这只是在我们将FULL模式(FULL=Y)底下导出的exportdumpfile在FULL模式的数据库里导入时候才有的。需要注意的是:从技术角度上一个导入端是可以将由oracle5.1.22及其更高版本的数据库导出的exportdumpfiles进行导入,所谓的升级约束是指在升级手册上说明的可能升级路径。支持从一个主要版本的最终版(oracle8i8.1.7)直接迁移到另外一个主要版本(oracle9i9.2.0)是因为8.1.7是8i的最后一个版本。7.3.4是oracle7的最后一个版本8.0.6是oracle8的最后一个版本8.1.7是oracle8i的最后一个版本9.2.0是oracle9i的最后一个版本10.2.0是oracle10g的最后一个版本2.迁移到oracle9i版本2(9.2.0.x.0)当源数据库是以下的情况我们可以使用全库导出/导入进行直接的迁移Migrationpossiblefrom…tooracle9iRelease2(9.2.0.x.0);Oracle7:7.3.4(7.3.4.5.0recommended)Oracle8:8.0.6(8.0.6.3.0recommended)Oracle8iRelease3:8.1.7.4.0Oracle9iRelease1:9.0.1.4.0(9.0.1.5.0foriASinfrastructure)3.迁移到Oracle10g版本1(10.1.0.x.0)当源数据库是以下的情况我们可以使用全库导出/导入进行直接的迁移4.迁移到Oracle10g版本2(10.2.0.x.0)当源数据库是以下的情况我们可以使用全库导出/导入进行直接的迁移Migrationpossiblefrom…tooracle9iRelease2(9.2.0.x.0);Oracle7:7.3.4(7.3.4.5.0recommended)Oracle8:8.0.6(8.0.6.3.0recommended)Oracle8iRelease3:8.1.7.4.0Oracle9iRelease1:9.0.1.4.0(9.0.1.5.0foriASinfrastructure)Migrationpossiblefrom…tooracle10gRelease1(10.1.0.x.0);Oracle8:8.0.6(8.0.6.3.0recommended)Oracle8iRelease3:8.1.7.4.0Oracle9iRelease1:9.0.1.4.0(9.0.1.5.0forIasinfrastructure)Oracle9iRelease2:9.2.0.4.0(9.2.0.8.0recommended)Migrationpossiblefrom…tooracle10gRelease2(10.2.0.x.0);Oracle8iRelease3:8.1.7.4.0Oracle9iRelease1:9.0.1.4.0(9.0.1.5.0forIasinfrastructure)Oracle9iRelease2:9.2.0.4.0(9.2.0.8.0recommended)Oracle10gRelease1:10.1.0.2.0(10.1.0.5.0recommended)Oracle9iRelease2:9.2.0.4.0(9.2.0.8.0recommended)5.迁移到Oracle11gRelease1(11.1.0.x.0)当源数据库是以下的情况我们可以使用全库导出/导入进行直接的迁移6.范例1.从8.1.7.4.0迁移到9.2.0.8.0—使用8.1.7.4.0导出客户端运行全库导出—使用9.2.0.8.0导入客户端运行全库导入2.从8.0.5.0.0迁移到10.2.0.4.0—升级8.0.5.0.0数据库到8.0.6.0.0(推荐用8.0.6.3.0)—迁移8.0.6.x数据库到9.2.0.4.0(推荐用9.2.0.8.0)—使用9.2.0.x导出客户端运行全库导出—使用10.2.0.4.0导入客户端运行全库导入或者我们使用8.0.5.0.0导出客户端做一个全库的导出,在10g数据库里预先定义好用户.然后用10.1.0.2导入客户端进行schema级的导入。注意:不支持用8.0.5.0.0的导出客户端做全库的导出,然后用10.1.0.2做全库的导入。3.从9.2.0.1迁移到11.1.0.6.0—运行9.2.0.4.0的补丁包(推荐用9.2.0.8.0)—使用9.2.0.8.0的导出客户端做一个全库导出—使用11.1.0.6.0的导入客户端做一个全库导入导入导出工具的兼容性1.导出工具提示:当把exportdumpfile导入到一个更高版本的数据库中去(比如:把oracle8i的导入到oracle9i),我们使用的导出工具的版本和源数据库的版本一样(在这个例子里等于oracle8i)如果使用更高版Migrationpossiblefrom…tooracle10gRelease1(11.1.0.x.0);Oracle9iRelease2:9.2.0.4.0(9.2.0.8.0recommended)Oracle10gRelease1:10.1.0.2.0(10.1.0.5.0recommended)Oracle10gRelease2:10.2.0.1.0(9.2.0.8.0recommended)导出端的兼容:通常导出端的版本和源数据,目的数据库中版本低的一个一样本的导出工具,导出会发生错误。举个例子:你用9.0.1的导出工具从8.1.7版本的数据库导出会出现下面的错误:l当你要把exportdumpfile导入到一个更低版本的数据库中去(比如:把oracle9i的导入到oracle8i),导出工具的版本应该和目的数据库的版本一样(在这个例子里是使用oracle8i)。l当你从oracle7的数据库中创建oracle6的导出文件,SYS用户要先在oracle7的数据库上执CATEXP6.SQL脚本。这个脚本创建的导出视图,让我们感觉就在oracle6数据库上进行导出l同理当你从oracle8的数据库中创建oracle7的导出文件,SYS用户要先在oracle7的数据库上执行CATEXP7.SQL脚本。这个脚本创建的导出视图,让我们感觉就在oracle7数据库上进行导出l当你从oracle9i的数据库中创建oracle8/8i的导出文件时,不需要在oracle9i数据库上去运行oracle8i版本的catexp.sql脚本。你只需要在oracle9i上执行8iexpexecutable。需要知道的是:在oracle9i的几

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功