oracle从rac恢复单机,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盘中安装有Oracle11.2.0.4版本的数据库,安装了默认的orcl实例,实例处于关闭状态。

本次将备份集拷贝至目录'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 '||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 tablespace TEMP1;

drop tablespace TEMP;

13.重新以upgrade模式打开数据库并执行升级脚本。

shutdown immediate;

startup upgrade;

sqlplus / as sysdba

>@?/rbdms/admin/catupgrd.sql

14.升级完毕后重启数据库。

shutdown immediate;

startup

注意升级完毕后可能会出现账号密码不正确的情况,手动修改吧。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值