阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

RMAN恢复RAC备份到高版本单机环境

133次阅读
没有评论

共计 2925 个字符,预计需要花费 8 分钟才能阅读完成。

最近在做一个 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 <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 tablespace TEMP1;
drop tablespace TEMP;
13. 重新以 upgrade 模式打开数据库并执行升级脚本。

shutdown immediate;
startup upgrade;
sqlplus / as sysdba
>@?/rbdms/admin/catupgrd.sql
14. 升级完毕后重启数据库。

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

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/142091.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2925字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中