zoukankan      html  css  js  c++  java
  • 如何通过rman的增量备份恢复dataguard中standby端的数据

    很多正在使用dataguard的客户,都会遇到一个棘手的问题: 在备份端与主库同步的过程中由于网络原因或磁盘问题导致一个或多个归档日志丢失,进而dataguard同步无法继续。很多客户都选择了重新全库恢复,并重新搭建dataguard。 如果我们的源数据库非常大(超过100G的数据量),其实可以选择一种更简便并高效的恢复方法--通过rman的增量备份恢复dataguard中standby端的数据。
    具体恢复过程如下:
    1) Stop the managed recovery process (MRP) on the STANDBY database
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    2) Determine the SCN of the STANDBY database.
    SQL> SELECT CURRENT_SCN FROM V$DATABASE;
    CURRENT_SCN
    --------------
    3164433
    SQL> select min(checkpoint_change#) from v$datafile_header
    where file# not in (select file# from v$datafile where enabled = 'READ ONLY');
    MIN(F.FHSCN)
    ----------------
    3162298
    comment:上面一个为控制文件中记录的SCN号,另一个为数据文件头记录的SCN号, 我们需要选择较小SCN号(3162298)的来备份。
    3) Take an incremental backup of the PRIMARY database
    RMAN> BACKUP INCREMENTAL FROM SCN 3162298 DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
    4) Transfer all backup sets to STANDBY server
    scp /tmp/ForStandby_* standby:/tmp
    5) Catalog the backups in STANDBY controlfile.
    RMAN> CATALOG START WITH '/tmp/ForStandby'; 
    6) Recover the STANDBY database with the cataloged incremental backup:
    RMAN> RECOVER DATABASE NOREDO; 
    7) In RMAN, connect to the PRIMARY database and create a standby control file backup:
    RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/tmp/ForStandbyCTRL.bck';
    8) Copy the standby control file backup to the STANDBY system. 
    9) Capture datafile information in STANDBY database.
    We now need to refresh the standby controlfile from primary controlfile (for standby) backup. However, since the datafile names are likely different than primary, let's save the name of datafiles on standby first, which we can refer after restoring controlfile from primary backup to verify if there is any discrepancy. Run below query from Standby and save results for further use.
    10) From RMAN, connect to STANDBY database and restore the standby control file:
    RMAN> SHUTDOWN IMMEDIATE ;
    RMAN> STARTUP NOMOUNT;
    RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck';
    11) Shut down the STANDBY database and startup mount:
    RMAN> SHUTDOWN;
    RMAN> STARTUP MOUNT;
    scp /tmp/ForStandbyCTRL.bck standby:/tmp
    12) Catalog datafiles in STANDBY if location/name of datafiles is different
    Since the controlfile is restored from PRIMARY the datafile locations in STANDBY controlfile will be same as PRIMARY database, if the directory structure is different between the standby and primary or you are using Oracle managed file names, catalog the datafiles in STANDBY will do the necessary rename operations. If the primary and standby have identical structure and datafile names, this step can be skipped.
    Perform the below step in STANDBY for each diskgroup where the datafile directory structure between primary and standby are different.
    RMAN> CATALOG START WITH '+DATA/mystd/datafile/';
    To determine if any files have been added to Primary since the standby current scn:
    SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 3162298
    If the above query returns with 0 zero rows, you can switch the datafiles. This will rename the datafiles to its correct name at the standby site:
    RMAN> SWITCH DATABASE TO COPY;
    datafile 1 switched to datafile copy "+DATA/mystd/datafile/system.297.688213333"
    datafile 2 switched to datafile copy "+DATA/mystd/datafile/undotbs1.268.688213335"
    datafile 3 switched to datafile copy "+DATA/mystd/datafile/sysaux.267.688213333"
    13) Configure the STANDBY database to use flashback (optional)
    SQL> ALTER DATABASE FLASHBACK OFF; 
    SQL> ALTER DATABASE FLASHBACK ON;
    14) On STANDBY database, clear all standby redo log groups:
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
    SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
    ....
    15) On the STANDBY database, start the MRP
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
    For more detailed info:
    Steps to perform for Rolling Forward a Physical Standby Database using RMAN Incremental Backup. (Doc ID 836986.1)

  • 相关阅读:
    第3、4、5讲
    .NetCore使用EF5操作Oracle,解决列自增序列绑定不生效的问题
    ASP.NET Core 之 Identity 入门(一)
    ORACLE NLS_DATE_FORMAT设置
    ORA12514遇到了怎么排查问题出在哪
    Oracle特殊字符查询语句
    ORA00821: Specified value of sga_target 3072M is too small, needs to be at least 12896M
    如何定位哪些SQL产生了大量的Redo日志
    Oracle定位对阻塞的对象或锁信息
    Oracle Undo和Redo的关系,区别及相关查询
  • 原文地址:https://www.cnblogs.com/DataArt/p/10018714.html
Copyright © 2011-2022 走看看