一、环境准备
-
目标恢复机安装好数据库软件,与源库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恢复到单机已恢复完成,并且进行了相关必备的优化,你学废了吗