用友软件股份有限公司技术支持部索昊Oracle大数据迁移技术--使用RMAN迁移数据常用的oracle数据迁移方式极端的oracle数据迁移方式各种迁移方式的优缺点迁移方式优点缺点Exp/ExpdpImp/Impdp1、实施简单2、可以在不同数据库操作系统平台进行迁移1、停机时间长,不可控2、迁移后验证比较麻烦3、容易造成对象丢失,如物化视图、dblink等Rman备份恢复1、停机时间短,时间可控2、迁移后验证比较简单3、迁移后保留全部oracle参数1、不能针对某个用户进行迁移2、数据库必须开启归档模式3、只能在相同数据库操作系统平台间迁移DataGuard1、停机时间短,时间可控2、迁移后验证比较简单3、迁移后保留全部oracle参数4、可以针对某一个用户进行迁移1、迁移后数据库为readonly模式,必须修改为可读写模式2、实施相对比较复杂GoldenGate&SharePlex1、不需要停机时间2、迁移风险几乎为03、不仅仅用于数据迁移,可以灵活配置数据库的使用,如数据仓库,集中型数据收集,数据分发等数据库应用。1、需要购买相关软件,费用较高2、实施复杂Rman迁移理论时间线增量RestoreDatabase(mount)RecoverDatabase(openresetlogs)全备份集增量备份集shutdownimmediateABRman迁移理论Oracle启动过程找到spfile/pfilenomountmountopen找到controlfile找到datafile找到datafileRman数据迁移的验证SCN(SystemChangeNumber)当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。在Oracle中,SCN无处不在,如控制文件内,redolog头部,datafile头部,archivelog头部。当数据库发生变化时,SCN都会增加只有当数据库open的时候,SCN才会增加通过scn保证数据的完整性XX钢铁厂迁移案例分析—准备部分2、(新)在新数据库服务器上安装oracle软件(不建库)1、(旧)必须开启归档模式XX钢铁厂迁移案例分析—准备部分4、(旧)确定redolog文件、tempfile、控制文件等3、(旧)确定数据文件XX钢铁厂迁移案例分析--操作部分1、(旧)备份spfile2、(旧)数据库rman全备(注意备份顺序)XX钢铁厂迁移案例分析--操作部分3、将pfile以及全备份集拷贝到新数据库服务器4、(新)使用pfile打开数据库到nomount状态XX钢铁厂迁移案例分析--操作部分5、(新)开始恢复控制文件进入Rman控制台(rmantarget/)6、(新)打开数据库到mount状态XX钢铁厂迁移案例分析--操作部分如备份集在新旧主机上放置的目录是不一样的可以用下面的方式将备份集记录到控制文件中可选:(新)在新控制文件中登记Rman备份集XX钢铁厂迁移案例分析--操作部分7、(新)开始restoredatabase如果新主机目录和旧主机目录相同,直接restore•Restoredatabase;XX钢铁厂迁移案例分析--操作部分开始使用停机时间8、(旧)“必须”干净的关闭数据库!Shutdownimmediate9、(旧)传递archivelog将旧主机上“全备之后的”归档日志传输到新主机上,准备recover。传完后登记arch类似于备份集登记。XX钢铁厂迁移案例分析--操作部分在rman中登记新的archivelog:XX钢铁厂迁移案例分析--操作部分如何确定arch是全备之前产生的呢?只需要拷贝25411之后的archivelog到新服务器即可。归档日志格式:%tthreadnumber%slogsequencenumber%rresetlogIDXX钢铁厂迁移案例分析--操作部分10、(旧)传递onlineredolog日志到新主机如果新主机redolog和旧主机redolog不同目录,使用rename命令(sqlplus命令)XX钢铁厂迁移案例分析--操作部分11、(新)使用归档日志recoverdatabase(追加归档)命令:RMAN>recoverdatabase;12、(新)使用redolog日志再次recoverdatabase命令:SQL>recoverdatabseusingbackupcontrolfileuntilcancel;XX钢铁厂迁移案例分析--操作部分说明:oracle提示用户需要arch1_10_847795256.dbf但是在旧主机所有归档日志中都找不到这个归档,是因为这个日志还没有被归档,那么这些没有被归档的数据在哪里?在onlineredolog中注:oracle的归档日志结构和onlineredolog的结构是一模一样的!XX钢铁厂迁移案例分析--操作部分既然archivelog和onlineredolog结构一模一样,那么就去用onlineredolog继续恢复数据库我们不需要确定在关闭数据库那一刻那组redolog是current状态,逐个去实验即可,直到oracle提示”mediarecoverycomplete”.如下图:XX钢铁厂迁移案例分析--操作部分原来关闭数据库那一刻,第三组日志为currentredologXX钢铁厂迁移案例分析--操作部分13、(新)打开数据库命令:alterdatabaseopenresetlogs;说明:因为新数据库使用的控制文件是从旧数据库中恢复回来的,所以oracle要求使用resetlogs参数打开数据库XX钢铁厂迁移案例分析--操作部分14、(新)维护tempfile(不必占用停机时间)Tempfile文件异于oracle其他数据文件,文件中无任何数据,所以需要手工添加tempfile,然后删掉旧的tempfile指针。XX钢铁厂迁移案例分析--操作部分验证SCN,验证数据完整性之前旧数据库shutdown之前的scn=162164迁移完成新数据库开启时的scn=162165旧数据库SCN永远停止在162164新数据库SCN从162165继续运行Rman停机时间总结停机时间内都做了什么操作?步骤操作停机时间消耗1干净的关闭数据库5MIN2传递“全备之后”产生的归档日志5MIN3恢复“全备之后”产生的归档日志5MIN4传递onlineredolog10MIN5恢复onlineredolog&打开数据库5MIN