【DB筆試面試736】在Oracle中,RAC數據庫在備份恢復時有哪些步驟?

  • 2020 年 2 月 24 日
  • 筆記

題目部分

在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程序員面試筆試寶典》,作者:小麥苗