设为首页 加入收藏

TOP

RMAN恢复RAC备份到高版本单机环境(一)
2017-03-30 14:17:17 】 浏览:5769
Tags:RMAN 恢复 RAC 备份 版本 单机 环境

最近在做一个RAC升级测试11.2.0.1升级到11.2.0.4,为保证业务能在11.2.0.4版本下正常运行,现需要将数据库还原至11.2.0.4的单机环境下,数据库大小为1.04T左右,在这里总结下步骤。


环境简介:


1.本次试验的环境为11.2.0.4的单机环境,存储为Windows NTFS文件系统,系统版本为Windows server 2008R2企业版。


2.备份来自一个双节点的RAC环境,操作系统同为Windows Server 2008R2,存储为ASM磁盘组。


3.RAC环境下文件总大小为1.04T,备份集大小为290G左右。


还原步骤:


1.将备份集拷贝至测试环境。


本次将备份集拷贝至目录'D:\backup\'下。


2.在E盘中新建oradata目录,路径为'E:\oradata'。


E盘空间大小为1.5T,用于存放本次的数据文件,新建archive目录用于存放归档日志。


3.创建实例并强制启动到nomount状态。


oradim -new -sid leo --创建了实例名为leo的windows服务
set oracle_sid=leo --设置当前窗口环境变量
rman target /
startup nomount force --强制启动到nomount状态以便进行spfile的恢复
4.RMAN中还原spfile。


在备份集中找到最小的几个文件,逐一尝试恢复spfile直到成功恢复,当然如果主库正常可以到主库服务器上进入RMAN执行list backup of spfile进行快速识别,图省事可以一个个试。


restore spfile from 'D:\backup\xxx';
startup nomount force;5.生成pfile并删除RAC相关参数。


create pfile='D:\pfileleo.txt' from spfile;
删除其中所有的RAC相关参数,同时将audit_file_dest设置为D盘oracle安装目录下的adump目录,并制定log_archive_dest_1的值为E:\archive,此外修改控制文件位置为E:\oradata\control01.ctl,E:\oradata\control02.ctl后保存。


6.使用新的pfile启动到nomount状态。


startup force pfile='D:\pfileleo.txt';7.RMAN恢复控制文件。


restore controlfile from 'D:\backup\xxx';--xxx为时间最晚的控制文件备份
alter database mount;8.RMAN注册备份集并恢复数据库。


catalog start with 'D:\backup\';--后继输入yes即可run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate channel c7 type disk;
allocate channel c8 type disk;
set newname for datafile 1 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 2 to 'E:\oradata\xxx.dbf';                   
set newname for datafile 3 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 4 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 5 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 6 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 7 to 'E:\oradata\xxx.dbf';                     
set newname for datafile 8 to 'E:\oradata\xxx.dbf';                       
...有多少个数据文件加几个set newname语句。
restore database;
switch datafile all;
}
在这里可以使用如下类似SQL在原库生成set newname的语句:


select 'set newname for datafile '||file_id||' to <new_file_dest>'||substr(file_name,xxx) as "SQL" from dba_data_files;--xxx的大小取决于文件目录的长度。
9.Recover数据库。


Restore之后接下来需要进行Recover,选择的恢复终点如下:


1)通过list archivelog all命令找到归档日志的备份,找到每个thread的sequence值最大的备份集,记录下其next scn号及sequence值,假设分别为seq1 scn1和seq2 scn2。


2)比较scn1和scn2选择其中较小的作为本次恢复终点,假设本次较小者为scn1,其对应seq1的序列号。


run {
set until sequence seq1 thread 1;
recover database;
}
10.修改所有redo文件的目录


Alter database rename file '+DATA/xxx/onlinelog/redo01.log' to 'E:\oradata\redo01.log';--有多少个redo文件执行多少次。
...11.以upgrade模式打开数据库。


shutdown immediate;
startup upgrade;
12.删除原临时文件组并新建。


create temporary tablespace TEMP1 tempfile dbfE:\temp01.b' size 2048M;
alter database default temporary tables

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇由于OCR文件损坏造成Oracle RAC不.. 下一篇Oracle expdp按分区导出生成参数..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目