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)

  • 相关阅读:
    10g full join 优化
    推荐C++程序员阅读《CLR via C#》
    密码安全之动态盐
    徒弟们对话,遇到sb领导,离职吧
    hdu 1698 线段数的区间更新 以及延迟更新
    嗯。。 差不多是第一道自己搞出的状态方程 hdu4502 有一点点变形的背包
    嗯 第二道线段树题目 对左右节点和下标有了更深的理解 hdu1556
    hdu 4501三重包问题
    入手线段树 hdu1754
    hdu 5672 尺取还是挺好用的
  • 原文地址:https://www.cnblogs.com/DataArt/p/10018714.html
Copyright © 2011-2022 走看看