暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

技术实战!Oracle RAC恢复到单机环境

原创 范伟林 2022-04-01
5385

一、环境准备

  • 目标恢复机安装好数据库软件,与源库RAC环境版本相同,并打上相同补丁或更新的补丁。

  • RAC环境全库备份已完成。

  • 本次恢复测试的版本为19c non-cdb环境。

  • 以上的步骤准备比较基础,这里不详细展开,下面对关键步骤进行详解

二、恢复步骤

1、切换环境变量

. 19c_profile

Note:在环境变量配置过程中,可以自行定义实例名

2、创建相关目录

mkdir -p /oracle/app/oracle/oradata/william
mkdir -p /oracle/app/oracle/fast_recovery_area
mkdir -p /oracle/app/oracle/admin/william/adump

Note:以上目录分别为数据目录、快速恢复区目录、审计目录;oracle用户进行创建

3、参数文件配置

vi /home/oracle/pfile_william.bak

*.audit_file_dest='/oracle/app/oracle/admin/william/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/oracle/app/oracle/oradata/william/controlfile01.ctl'
*.db_block_size=8192
*.db_name='william'
*.db_recovery_file_dest='/oracle/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=490g
*.db_unique_name='william'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers=''
family:dw_helper.instance_mode='read-only'
*.local_listener='-oraagent-dummy-'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=3000
*.pga_aggregate_limit=14g
*.pga_aggregate_target=2g
*.processes=4096
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=6g
*.sga_target=6g
*.undo_retention=14400
*.undo_tablespace='UNDOTBS1'

Note:以上参数为比较基础的参数示例;各位同学可以根据情况进行配置;介绍几个注意参数
compatible参数需要和软件版本一致
cluster_database参数需要去掉或者设置为false
instance_number和thread需要去掉
总之相关集群参数需要去掉

4、创建口令文件

orapwd file=$ORACLE_HOME/dbs/orapwwilliam password=William#2022 force=y

Note:此处口令文件也可以到主库进行拷贝,然后改名

5、启动nomount状态

create spfile from pfile='/home/oracle/pfile_william.bak';

startup nomount

Note:此处可以利用pfile启动,进行测试相关参数是否可以启动成功;若有错误修复后再重新创建spfile即可会进行覆盖。

6、恢复控制文件

连接
rman target /

还原
restore controlfile from '/backup/WILLIAM_ctl_1549598161_20220331_1100791365_tc0ppfi5_940_1_1';

挂载数据库
alter database mount;

Note:注意在RAC备份的时候,单独备份控制文件到一个备份片当中,方便辨认控制文件的备份片位置

7、注册备份信息(catalog)

catalog start with '/backup/' NOPROMPT;

Note:上面我们还原了控制文件,故需要将备份信息注册到控制文件当中;本次实验是无catalog资料库,所以需要本地注册备份信息。
当然也可以单独针对备份片进行catalog,以上是对整个目录进行catalog;注意目录不要存放过多无用的备份,避免catalog时间过长。

8、还原数据文件

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
set newname for database to '/oracle/app/oracle/oradata/william/%b';
restore database;
switch datafile all;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

Note:RAC到单机目录结构不同,需要进行数据文件位置转换;
%b表示跟源文件名字一样;
可以根据数据文件的大小分配合适的通道。

9、介质恢复

查看归档
list backup of archivelog all completed after "sysdate - 3";

恢复到可以恢复的最新scn
recover database until scn 4452715354;

Note:数据库恢复时间必须大于数据文件头的最大时间,也就是备份之前的时间点无法恢复;
最新可以恢复scn为thread中最大的scn,并且为所有thread中最小的scn,通常最新的scn会缺失另一个thread的归档号;
当然也可以不指定scn,让其一直恢复到可以恢复的最新时间点。
可以根据vdatafile、vdatafile_header视图比对数据文件是否恢复到一致性状态。

10、禁用块跟踪

alter database disable block change tracking;

Note:往往生成环境RAC环境下快跟踪文件会存放在asm磁盘组中,故下面open数据库会报错,需要将其禁用

11、处理DG保护模式

select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

alter database set standby to maximize performance;

Note:有时候我们生产环境会配置了ADG最大可用的保护模式;最大可用保护模式必须需要至少一个备库环境配置才能打开数据库,故需要检查是否为默认的最大性能保护模式。

12、resetlog打开数据库

alter database open resetlogs;

Note:此时所有数据文件的resetlog scn会进行更新,并且创建出一个新的化身。

13、处理日志组

禁用thread 2
alter database disable THREAD 2;

查看日志组
set line 300
col member for a60
select group#,member from v$logfile;
select GROUP#,THREAD#,status from v$log;

添加新的
alter database add logfile thread 1 group 1('/oracle/app/oracle/oradata/william/redo01.log') size 512m;
alter database add logfile thread 1 group 2('/oracle/app/oracle/oradata/william/redo02.log') size 512m;
alter database add logfile thread 1 group 3('/oracle/app/oracle/oradata/william/redo03.log') size 512m;

删除之前的
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database drop logfile group 8;
alter database drop logfile group 9;
alter database drop logfile group 10;
alter database drop logfile group 11;
alter database drop logfile group 12;

Note:单机环境下,需要禁用其他多余的线程号;处理一些在ASM磁盘组路径的redo log。
Note:日志组也可以mount下,利用rename的方式处理

14、处理临时表空间

set line 300
col name for a60
select a.FILE#,a.name,a.TS#,b.name from v$tempfile a, v$tablespace b where a.TS#=b.TS#;

alter tablespace temp add tempfile '/oracle/app/oracle/oradata/william/temp01.dbf' size 512m autoextend on;
alter tablespace temp add tempfile '/oracle/app/oracle/oradata/william/temp02.dbf' size 512m autoextend on;
alter tablespace william_temporary add tempfile '/oracle/app/oracle/oradata/william/william_temporary01.dbf' size 512m autoextend on;

alter tablespace temp drop tempfile 1;
alter tablespace temp drop tempfile 2;
alter tablespace temp drop tempfile 3;

Note:处理一些在asm磁盘组路径中的临时文件;当然可以配置新的临时表空间再删除旧的,此过程会更快
Note:临时表空间也可以mount下,利用rename的方式处理

15、控制文件快照配置清除

rman target /

CONFIGURE SNAPSHOT CONTROLFILE NAME clear;

Note:RAC环境控制文件快照位置通常会配置在ASM磁盘组中,这里我们需要修改在本地;默认配置为本地路径,恢复默认配置即可。

自此RAC恢复到单机已恢复完成,并且进行了相关必备的优化,你学废了吗

最后修改时间:2022-04-13 00:09:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论