题目部分
在Oracle中,RAC数据库在备份恢复时有哪些步骤?
♣
答案部分
RAC数据库的备份和恢复与单实例的数据库的备份和恢复基本上没有区别,其恢复过程基本上就是先恢复spfile,再还原控制文件,最后做数据库文件的RESTORE和RECOVER。需要注意的是,在RAC中,归档文件需要放在共享存储上,需要让集群的所有节点都可以访问的到。
RAC数据库的备份可以使用如下的脚本:
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/home/oracle/rman_back/full_%n_%T_%t_%s_%p.bak';
sql 'alter system archive log current';
backup archivelog all format '/home/oracle/rman_back/arch_%d_%T_%s_%p.bak' delete input;
backup current controlfile format '/home/oracle/rman_back/ctl_%d_%T_%s_%p.bak';
release channel c1;
release channel c2;
}
RAC数据库的恢复过程中常用的命令如下所示:
ORACLE_SID=LHRRAC1
startup nomount;
restore spfile to '+DATA/lhrrac1/spfilelhrrac1.ora' from '/home/oracle/rman_back/full_LHRRAC1x_20180711_981219654_4_1.bak';
startup nomount force;
restore controlfile from '/home/oracle/rman_back/ctl_LHRRAC1_20180711_7_1.bak';
set line 9999 pagesize 9999
col FILE_NAME format a60
select 'datafile' file_type, file#,name FILE_NAME,status,enabled from v$datafile
union all
select 'tempfile',file#,name FILE_NAME,status,enabled from v$tempfile
union all
select 'logfile',group# file#,member FILE_NAME,status,'' from v$logfile
union all
select 'controlfile', to_number('') ,name FILE_NAME,status,'' from v$controlfile;
alter database mount;
restore database;
list backupset of archivelog all;
RUN
{
set until sequence 10 thread 1;
set until sequence 7 thread 2;
recover database;
}
alter database open resetlogs;
最后在节点2执行startup操作。
& 说明:
有关RAC添加和删除节点的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-1682237/。
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗