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)

  • 相关阅读:
    Android Studio 2.3.1导出jar文件不能生成release解决办法
    AndroidStudio 3.0 生成jar包的方法
    Android Studio如何打jar包
    Android Studio 如何打JAR包(修订版)
    6款程序员必备的开源中文处理工具
    Qt5.8 下链接 Mysql 错误以及解决方法(无论 Mysql 是什么版本的,64 位 Qt 要用 64 位的 Mysql 驱动,32 位的 Qt 要用 32 位的Mysql 驱动)
    Go 语言如果按这样改进,能不能火过 Java?
    基于 CSP 的设计思想和 OOP 设计思想的异同
    DELPHI下多线程编程的几个思维误区(QDAC)
    如何使用表单
  • 原文地址:https://www.cnblogs.com/DataArt/p/10018714.html
Copyright © 2011-2022 走看看