Oracle数据泵移植数据库的设计与实现

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

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

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

资源描述

Oracle数据泵移植数据库的设计与实现【摘要】将两个数据库以最快的方式移植到较高的Linux平台。数据采用可传输性表空间的方法进行移植,其它对象采用数据泵不同功能选项进行移植。【关键字】数据泵,数据传输近年来,由于服务器平台更新换代较快,原来在设备型号较陈旧的一些数据库平台需要移植到性能较高的其它平台,数据库移植也就有了较多需求。关于数据库移植,现已有很多方法和经验介绍,有针对全库的rman移植,也有针对个别对象的数据泵移植。笔者由于工作需要,将两个数据库以最快的方式移植到较高的Linux平台,其中数据采用可传输性表空间的方法进行移植,其它对象采用数据泵不同功能选项进行移植。一、两个数据库平台介绍源库:windows2003oracle版本:10.2.0.5.0字节顺序:little(字节顺序一致很重要,省了转换的麻烦)目标库:windows2003oracle版本:10.2.0.5.7字节顺序:little(Select*fromV$TRANSPORTABLE_PLATFORMORDERBYPLATFORM_ID;)确认字节顺序一致很重要,省了转换的麻烦,不在此赘述。数据库移植思路:根据源和目的两个表空间的特点,采用传输性表空间移植的方式,先对表空间DB01_A和DB01_B进行移植,存储过程、函数、视图、db-link连接使用数据泵分类按序移植。二、移植步骤(一)移植前的准备检查1.首先对源表空间的自包含集进行检查、清理。即需要移植的表空间不得包含依赖性的非本表空间的对象建立的关系。Execdbms_tts.transport_set_check(‘DB01_A’,TRUE,TRUE);Select*fromTRANSPORT_SET_VIOLATIONS;Execdbms_tts.transport_set_check(‘DB01_B’,TRUE,TRUE);Select*fromTRANSPORT_SET_VIOLATIONS;对DB01_A和DB01_B不符合检查标准的索引等对象删除、清理。2.源、目的库的用户要创建一致。参考源数据库在目标库建立了所有的普通用户。移植后的用户属性、权限及默认表空间待移植后重新赋权。执行expdp的用户要赋予exp_full_database的角色。3.目的库的移植元文件使用目录确认。元文件放到目标库DATA_PUMP_DIR参数指定的地方,具体确定方法为:Select*fromdba_directories;DATA_PUMP_DIR一般是默认的目录,路径过长。笔者新建一个目录,并指定其为导入/出目录。在系统跟即/目录下创建yizhi,在sqlplus里制定/yizhi为导入导出目录。createorreplacedirectorydirectory_nameas‘/yizhi’;grantread,writeondirectorydirectory_nametosystem如果使用其它普通用户导入,还需赋予创建对话的权限;Grantcreatesessiontousername;(二)正式移植1.源库关闭所有应用、连接、计划任务,关闭监听程序。在关闭监听的情况下,在sqlplus里修改数据库的属性,readonly。必须将数据库的属性修改为readonly,数据库元数据才能导出。上述举措为了保持移植数据一致性。altertablespaceDB01_Areadonly;altertablespaceDB01_Breadonly;2.导出元数据,指定可传输表空间参数TRANSPORT_TABLESPACESexpdp‘sys/xxx@db01assysdba’dumpfile=DB01_A.DMPdirectory=DATA_PUMP_DIRTRANSPORT_TABLESPACES=DB01_A;expdp‘sys/xxx@db01assysdba’dumpfile=DB01_B.DMPdirectory=DATA_PUMP_DIRTRANSPORT_TABLESPACES=DB01_B;经实战移植验证,550G的表空间DB01_A导出成80M的元文件需4分钟,80G的表空间DB01_B导出70M的元文件需3分钟。3.分类导出其它。expdpsystem/superdumpfile=view.dmpdirectory=DATA_PUMP_DIRlogfile=job.logfull=Yinclude=VIEW(要注意加full=Y)然后将参数VIEW分别改为FUCTION,DB_LINK,PROCEDURE4.传输元文件及物理数据文件。通过FTP或工具传输元文件及数据文件。这一步骤提前要安排好物理文件的存放及目的存放规划。笔者采用FTP传输工具传递,在保证网络传输速度的条件下,此传输过程的时间长短是整个数据库移植占时最长部分,也就决定了数据库移植的时间长短。5.按顺序导入表空间、视图、db_link、存储过程、JOB。这一步分类和顺序很重要,因为对象之间有相互的依赖关系。比如有的存储过程里用到db_link链接,db_link如果未先建好,就会导致存储过程导入的失败。impdpsystem/oracle01dumpfile=DB01_A.DMPdirectory=DIRECTORY_NAMETRANSPORT_DATAFILES=/Ora_da1/DB01_A.ORA,……./Ora_da1/DB01_A32.ORAimpdpsystem/oracledumpfile=DB01_B.DMPdirectory=DIRECTORY_NAMETRANSPORT_DATAFILES=/Ora_da1/DB01_B.ORA,……/Ora_da1/DB01_B7.ORA表空间导入完成,打开表空间的可读写属性(因为后续导入的对象要用到数据表的读写)altertablespaceDB01_Areadwrite;altertablespaceDB01_Breadwrite;修改数据文件的文件属主。chownoracle:oinstall数据文件列表。然后检查导入表空间的物理文件及逻辑文件状态及可用性。6.分类按序移植具体主要为存储过程,函数、视图。此步骤并不是针对用户来移植的,而是针对全部对象进行的移植。impdpsystem/superdumpfile=all.dmpdirectory=DIRECTORY_NAMEinclude=VIEW然后同上,将db_link,Function,PROCEDURE,JOB等指定为include参数值进行导入。特别需要说明的是,如果遇到导入导出报错,那就要首先确定移植顺序,也就是确定对象之间的逻辑关系。有的过程和函数会用到db_link,那就先将db_link导入,就减少了创建存储过程时失败的操作。至此,数据库所有应用对象移植完毕,可以在新创建的数据库环境空间里继续分享源数据库空间的数据及用户方案。三、采用传输性表空间的方法移植数据库的特点及总结通常采用传输性表空间的数据方法移植数据表空间的。本次采用expdp分别将数据库各数据对象移至目标平台。关键点在参数、顺序、细节的处理。数据库同步的几个关键点:1.修改用户权限。在表空间移植前,将原数据库所有用户在新目标库创建。待表空间、VIEW、function等移植后,就参照原数据库用户创建脚本将新库数据库用户权限全部更新一遍。笔者采用利用源DDL脚本的方法赋权。2.分类按序。当导入发现有错误提示时,不要担心,看一下提示便可了解逻辑关系,调整一下导入顺序,问题便迎刃而解。3.移植点和时间的把握。最初采用此方法,是因源库没有基于rman的数据库备份。待笔者执行起来发现,对象及表空间的导出时间是非常短的,当了解了整个操作步骤及过程后,整个数据库移植占时最长的就是物理数据文件传输过程,我们可以通过多种方式提高网络传输速度以缩短数据库移植用时。特别是针对只有数据表空间变化较多的数据库而言,在进行过一次测试移植后,完全可以快速顺利进行数据移植和同步。此外,还有其它两个值得注意的小问题。1.修改系统名称。发现在plsql中使用@db_link连接名时,短串的连接字符串不能使用。原来oracle默认安装的时候都会指定db_domain,修改了global_name和源库一致,以保证应用的同步。Updateglobal_namesetglobal_name=’DB01.RERESS…..COM’;Commit;2.部分远程调用的JOB报ORA-00600和ORA-04045的报错。单独编译执行效果不好,最后将数据库版本升级至10.0.5.8,问题解决。上述实现过程相对于基于rman备份的数据库移植,移植的步骤并不是简洁的,但经实际操作发现,确实比较灵活、方便和快捷的。

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

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

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

×
保存成功