首页 > Oracle > RMAN备份异机恢复 迁移数据!
2013
11-14

RMAN备份异机恢复 迁移数据!

使用RMAN用得比较多的一些场景中,异机恢复,迁移数据是比较重要的一个功能,今天就简单演示一下在11G中RMAN异机迁移的例子,需要准备2台虚拟机,一台只安装实例即可。源库和目标库所有配置设置成一致。点击我下载文档

1. 源数据库准备,在元数据库上查询出dbid,后面需要用到

2. 备份源库,并把备份的备份集传到目标库的同一个目录下

这里我们使用最近一天的备份,上传到目标库上同样的目录下

3. 目标库准备,在目标库上创建口令文件(需要和源库的文件名一致),放置数据文件的目录,创建初始化参数

创建初始化参数文件的时候,因为之前RMAN已经把源库的spfile备份了,我们可以直接在目标库恢复即可,但首先需要启动目标库到nomount状态,可以使用默认的pfile启动。在启动之前,先查看下目标库的pfile,创建好不存在的目录,修改如下路径为绝对路径

修改前:

修改后:

并创建不存在的目录:

4. 然后用pfile启动目标库到nomount状态,用RMAN恢复spfile

用传过来的备份在目标库上恢复参数文件

5. 查看恢复的pfile文件,可修改文件目录等参数,创建还没有存在的目录

6. 使用恢复的pfile在目标库上创建spfile,将目标库启动到nomount状态,因为之前是用目标库本身的pfile启动,首先将数据库shutdown,然后启动到nomount状态,此时数据库使用源库恢复过来的pfile启动,然后创建spfile,关闭数据库,用spfile启动到nomount状态

7. 恢复控制文件

8. 启动目标库到mount状态

9. restore目标数据库,这里要分2种情况,在文章开头我已说明了源库和目标库配置一样,数据文件的存放目录也一样,这里就可以直接restore数据库,如果目标库的数据文件存放路径和源库不一致的话,那这里需要做些改变

恢复目录相同的情况,直接restore数据库

然后recover 数据库

这里有一个错误,提示未知的scn号。可以在alter database mount之后,通过set until scn 或者set until time 命令设置恢复到的scn号或时间之前,就可以避免这个错误。另外在之前备份的时候,确保源库所有的日志已经归档,如果这时发现源库还有日志没有归档,在源库切换几次归档,然后把归档传到目标库

源库:

然后在目标库进行recover

只要确保数据一致,这里的recover可以忽略不管,然后用open resetlogs

方式打开数据库

 

恢复完毕,验证数据库。

在后半部分,我只演示了源库和目标库路径完全一致的情况,如果数据文件目录不一致,这里的恢复步骤有点不一样,这里大致说一下,在restore的时候,需要对数据文件进行newname,

switch datafile all说明:对于nocatalog模式下,rman备份的信息是保存在控制文件里的,包括文件的路径信息,这里的switch datafile all的作用,就是更新控制文件里的信息。

对于源库和目标库路径不一致的情况,最后还需要对数据文件,日志文件,临时表空间等进行相应的调整。所以路径设置成一样可以节省很多时间。

最后编辑:
作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL