ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【12c】12c RMAN新特性之UNTIL AVAILABLE REDO--自动恢复到REDO终点的步骤简化

2021-04-13 12:53:34  阅读:188  来源: 互联网

标签:AVAILABLE 24 12c app u01 mf DISK REDO ORA


【12c】12c RMAN新特性之UNTIL AVAILABLE REDO--自动恢复到REDO终点的步骤简化



在Oracle 12.2之前,当需要恢复数据库到某个时间点的时候,需要确定SCN,或者日志序列号,或者一个时间点,以便尽可能多的应用归档日志,进而尽可能多的恢复数据。从12.2开始,RMAN新增参数“UNTIL AVALIABLE REDO”,语法如下:

RMAN> RECOVER DATABASE UNTIL AVALIABLE REDO;

RMAN将会根据控制文件信息和归档日志、线日志、归档日志备份集的物理可用性,将数据库恢复到最后一个可用的归档日志。所以在进行恢复的时候,可以不需要指定SCN,或者时间或者日志序列号。需要注意的是,数据文件仍然需要在一致的情况下,数据库才能打开。

需要注意的是,这些新特性有如下的限制条件:

l  不能针对恢复数据文件或者表空间使用这个命令。

l  不能针对恢复PDB使用这个命令。

l  只能针对全库恢复使用这个命令。

 





12.2 NEW FEATURE : -RECOVER DATABASE UNTIL AVAILABLE REDO (文档 ID 2300465.1)



In this Document


Goal

Solution
 
A> Using Current Controlfile.
 B> When using backup or restored controlfile.



 
 


APPLIES TO:

Oracle Database - Enterprise Edition - Version 12.2.0.1 to 12.2.0.1 [Release 12.2]  
Information in this document applies to any platform.  

GOAL

 Goal of this Document is to explain how to use the New Feature in 12.2  Recover database until available redo.

 The New Syntax available in 12.2 is

  

RMAN> RECOVER DATABASE UNTIL AVAILABLE REDO ;  

  

Finds the last available archived redo log and online redo logs, and recovers the database to the point where a log is missing.

The database files still needs to be consistent enough to open the database.


LIMITATIONS/RESTRICTIONS

 

  1. You cannot recover a Datafile or Tablepace with this command.
  2. You cannot recover PDB using this command.
  3. You can use this command only while performing recovery of whole database.

SOLUTION

Whenever a database needs to be restored to a Point in time we  need to determine  SCN, or the Sequence or time  in order to apply as many archived logs as possible, to recover as much data as possible.
The new syntax helps reduce this work as rman would physically check for the available Archive/redo copy or backupset and do the recovery till the last available Archivelog based on information in Controlfile and physical availability of the Archivelog copy/redo log/Archive log backupsets.So you don't have to specify any until SCN ,Sequence or time.

Here is an example which explains the new feature.

In this example we will delete couple of Archivelog's after the backups are taken.

 


A> Using Current Controlfile.

Step1 :- Take a backup of the database

 

Rman> backup database plus archivelog

Starting backup at 24-AUG-17
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=56 STAMP=952838603
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_annnn_TAG20170824T052759_dswryzts_.bkp tag=TAG20170824T052759 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=5 RECID=15 STAMP=952145574
input archived log thread=1 sequence=6 RECID=16 STAMP=952145576
input archived log thread=1 sequence=7 RECID=17 STAMP=952145579
input archived log thread=1 sequence=10 RECID=39 STAMP=952146261
input archived log thread=1 sequence=11 RECID=40 STAMP=952146361
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_annnn_TAG20170824T052759_dswrz70f_.bkp tag=TAG20170824T052759 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=57 STAMP=952838697
input archived log thread=1 sequence=3 RECID=58 STAMP=952838705
input archived log thread=1 sequence=4 RECID=59 STAMP=952838715
input archived log thread=1 sequence=5 RECID=60 STAMP=952838721
input archived log thread=1 sequence=6 RECID=61 STAMP=952838751
input archived log thread=1 sequence=7 RECID=62 STAMP=952838785
input archived log thread=1 sequence=8 RECID=63 STAMP=952838861
input archived log thread=1 sequence=9 RECID=64 STAMP=952838879
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_annnn_TAG20170824T052759_dswrz861_.bkp tag=TAG20170824T052759 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=15 RECID=44 STAMP=952146606
input archived log thread=1 sequence=16 RECID=45 STAMP=952146607
input archived log thread=1 sequence=17 RECID=55 STAMP=952147123
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_annnn_TAG20170824T052759_dswrz9bz_.bkp tag=TAG20170824T052759 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-AUG-17

Starting backup at 24-AUG-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00007 name=/u01/app/cdb/datafile/o1_mf_users_dqlzw5mf_.dbf
input datafile file number=00001 name=/u01/app/cdb/datafile/o1_mf_system_dqlz2fhb_.dbf
input datafile file number=00003 name=/u01/app/cdb/datafile/o1_mf_sysaux_dqlz2fj2_.dbf
input datafile file number=00004 name=/u01/app/cdb/datafile/o1_mf_undotbs1_dqlz2fjo_.dbf
input datafile file number=00013 name=/u01/app/cdb/datafile/o1_mf_abc_dqlz2fk4_.dbf
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dswrzc1c_.bkp tag=TAG20170824T052810 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00010 name=/u01/app/cdb/52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_sysaux_dqlzwyxk_.dbf
input datafile file number=00009 name=/u01/app/cdb/52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_system_dqlzwyyh_.dbf
input datafile file number=00011 name=/u01/app/cdb/52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_undotbs1_dqlzwyz0_.dbf
input datafile file number=00012 name=/u01/app/cdb/52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_users_dqlzwz06_.dbf
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/52A23D56DF2E3CC1E0535C08DC0A83FF/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dsws128w_.bkp tag=TAG20170824T052810 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/cdb/52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_sysaux_dqlzxqtm_.dbf
input datafile file number=00005 name=/u01/app/cdb/52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_system_dqlzxqvs_.dbf
input datafile file number=00008 name=/u01/app/cdb/52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_undotbs1_dqlzxqwc_.dbf
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/52A2312195952E57E0535C08DC0A137A/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dsws1v45_.bkp tag=TAG20170824T052810 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_ncsnf_TAG20170824T052810_dsws2o9d_.bkp tag=TAG20170824T052810 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-AUG-17

Starting backup at 24-AUG-17
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=10 RECID=65 STAMP=952838998       ===================> This is the minimum archivelog till which recovery would make database consistent to open.
channel ORA_DISK_1: starting piece 1 at 24-AUG-17
channel ORA_DISK_1: finished piece 1 at 24-AUG-17
piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_annnn_TAG20170824T052958_dsws2pw8_.bkp tag=TAG20170824T052958 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 24-AUG-17

 

So the last archivelog backed up is sequence 10 and thats the Minimum archivelog till which recovery needs to be done to open the database after restore.  

 

Step 2 :-  Do couple of Log switch and delete Couple of Archivelogs 

 

Do couple of Logswitch on the Database


SQL>Alter system switch logfile ;  ------------------>4-5 times

Archivelog the logfiles

SQL>Alter system archive log current ;


SQL> Select * from v$log ;

 

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ --------- ----------
1 1 16 209715200 512 1 NO CURRENT 5431318 24-AUG-17 1.8447E+19 0
2 1 14 209715200 512 1 YES INACTIVE 5431295 24-AUG-17 5431305 24-AUG-17 0
3 1 15 209715200 512 1 YES INACTIVE 5431305 24-AUG-17 5431318 24-AUG-17 0



Archivelog copies are present under

 

$ cd  /u01/app/cdb/archivelog/2017_08_24

o1_mf_1_8_dswryf57_.arc
o1_mf_1_9_dswryzdm_.arc
o1_mf_1_10_dsws2plq_.arc  
o1_mf_1_11_dsws3m5c_.arc 
o1_mf_1_12_dsws3rom_.arc   
o1_mf_1_13_dsws3xcf_.arc   ----------------------> We delete this using rm
o1_mf_1_14_dsws40t3_.arc   ----------------------> We delete this using rm
o1_mf_1_15_dsws496x_.arc 

 

Now we will delete archivelog sequence 13 and 14 from OS using rm command  . (Archivelog sequence 15 is still intact)


So we have All archivelogs until sequence 12 and then Archivelog sequence 15 and Current redo log having Sequence 16.

  

 




Step 3 : Restore the database from backup taken in Step 1

  

Restore the database from the backup taken from step 1

 

SQL>Shutdown immediate ;

SQL>Startup mount

 

rman target /


Rman> Restore database ;

Starting restore at 24-AUG-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2543 device type=DISK

skipping datafile 5; already restored to file /u01/app/cdb52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_system_dqlzxqvs_.dbf
skipping datafile 6; already restored to file /u01/app/cdb52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_sysaux_dqlzxqtm_.dbf
skipping datafile 8; already restored to file /u01/app/cdb52A2312195952E57E0535C08DC0A137A/datafile/o1_mf_undotbs1_dqlzxqwc_.dbf
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/cdbdatafile/o1_mf_system_dqlz2fhb_.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/cdbdatafile/o1_mf_sysaux_dqlz2fj2_.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/cdbdatafile/o1_mf_undotbs1_dqlz2fjo_.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/app/cdbdatafile/o1_mf_users_dqlzw5mf_.dbf
channel ORA_DISK_1: restoring datafile 00013 to /u01/app/cdbdatafile/o1_mf_abc_dqlz2fk4_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/cdb/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dswrzc1c_.bkp
channel ORA_DISK_1: piece handle=/u01/app/cdbbackupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dswrzc1c_.bkp tag=TAG20170824T052810
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/cdb52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_system_dqlzwyyh_.dbf
channel ORA_DISK_1: restoring datafile 00010 to /u01/app/cdb52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_sysaux_dqlzwyxk_.dbf
channel ORA_DISK_1: restoring datafile 00011 to /u01/app/cdb52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_undotbs1_dqlzwyz0_.dbf
channel ORA_DISK_1: restoring datafile 00012 to /u01/app/cdb52A23D56DF2E3CC1E0535C08DC0A83FF/datafile/o1_mf_users_dqlzwz06_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/cdb/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dsws128w_.bkp
channel ORA_DISK_1: piece handle=/u01/app/cdb/backupset/2017_08_24/o1_mf_nnndf_TAG20170824T052810_dsws128w_.bkp tag=TAG20170824T052810
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 24-AUG-17

  

 

Step 4:- Use the new syntax


Rman> List copy of archivelog all ;

 

List of Archived Log Copies for database with db_unique_name CDB
=====================================================================

67 1 12 A 24-AUG-17
Name: /u01/app/cdb/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_12_dsws3rom_./u01/app/cdb

68 1 13 A 24-AUG-17
Name: /u01/app/cdb/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_13_dsws3xcf_./u01/app/cdb ===========> Shown Available as it was deleted from OS level and not Rman

69 1 14 A 24-AUG-17
Name: /u01/app/cdb/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_14_dsws40t3_./u01/app/cdb ===========> Shown Available as it was deleted from OS level and not Rman

70 1 15 A 24-AUG-17
Name: /u01/app/cdb/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_15_dsws496x_./u01/app/cdb



RMAN> Recover database until available redo ;

Starting recover at 24-AUG-17
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 10 is already on disk as file /u01/app/cdb/archivelog/2017_08_24/o1_mf_1_10_dsws2plq_.arc
archived log for thread 1 with sequence 11 is already on disk as file /u01/app/cdb/archivelog/2017_08_24/o1_mf_1_11_dsws3m5c_.arc
archived log for thread 1 with sequence 12 is already on disk as file /u01/app/cdb/archivelog/2017_08_24/o1_mf_1_12_dsws3rom_.arc
archived log for thread 1 with sequence 14 is already on disk as file /u01/app/cdb/onlinelog/o1_mf_2_ds7ofpsb_.log
archived log for thread 1 with sequence 15 is already on disk as file /u01/app/cdb/archivelog/2017_08_24/o1_mf_1_15_dsws496x_.arc
archived log for thread 1 with sequence 16 is already on disk as file /u01/app/cdb/onlinelog/o1_mf_1_ds7ofmw0_.log
archived log file name=/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_10_dsws2plq_.arc thread=1 sequence=10
archived log file name=/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_11_dsws3m5c_.arc thread=1 sequence=11
archived log file name=/u01/app/cdb/archivelog/2017_08_24/o1_mf_1_12_dsws3rom_.arc thread=1 sequence=12
warning: attempt media recovery until thread 1, sequence 13    -----------------------------> Recover done  Until sequence 13 (so applies last sequence 12)
Finished recover at 24-AUG-17

 

 

Here you can see the new syntax check which archivelogs are Physically available. In this case sequence 13 and sequence 14 were missing from OS level so it does a Recovery until Sequence 13 ;

RMAN> alter database open resetlogs;

using target database control file instead of recovery catalog
Statement processed

RMAN>

 

 

  

 

 

 

B> When using backup or restored controlfile.



The only change is Once the controlfile is restored and database is mounted ensure you Catalog all the backuppieces that are required so restored controlfile is aware about the backuppiece's.

You can use Catalog start with  or Catalog backuppiece '<path and name>' command.

 

The steps to restore  database and recovery are same as Step A.

    

标签:AVAILABLE,24,12c,app,u01,mf,DISK,REDO,ORA
来源: https://blog.51cto.com/lhrbest/2703009

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有