zoukankan      html  css  js  c++  java
  • 增量备份解决dataguard库日志gap


      有时候备库滞后于主库很长时间了,而主库的归档日志已经不存在了,此时的日志间隔如何消除那,很多人选择重建备库,这个是很麻烦的,尤其当主库数据量很大的时候,此时我们还有另外一种选择,那就是使用增量数据库备份来前滚备库,消除日志间隔,具体作法如下:
    1.备库查看丢失的归档时的scn号




    idle> select current_scn from v$database;

    CURRENT_SCN

    -----------

        96458277



    2.主库创建基于丢失归档scn号为起始的增量备份(要确定主库和备库的目标目录有足够的空间,这里使用/tmp文件夹)



    RMAN> 
    run{
    BACKUP DEVICE TYPE DISK INCREMENTAL FROM SCN 96458277 DATABASE FORMAT '/tmp/stb_bk/%U_for_stb.bk' include current controlfile for standby;
    }



    3.备份好之后,从主库传到备份库的目录中,可以与上文的目录不同。



    RMAN> CATALOG START WITH '/tmp/stb_bk/';



    4.查看一下controlfile的位置,因为接下来要使用备份的控制文件。



    idle> show parameter control


    再查看一下standby_log文件的位置,因为接下来可能需要重建。



    idle> select *from v$logfile ;



    5.使用如下命令在rman中恢复



    RMAN> 
    run{
    restore standby controlfile to '/tmp/stb_controlfile01.ctl';
    recover database noredo;
    }



    如果报如下错误,可能是recover managed standby命令正在执行:

    ORA-19870: errorwhile restoring backup piece /tmp/stb_bk/05n5a31s_1_1_for_stb.bk

    ORA-19573: cannotobtain exclusive enqueue for datafile 1

    执行如下命令,或者重启数据库到mount状态:



    idle>alter database recover managed standby database cancel ;



    然后在rman中再次执行:



    RMAN>

    run{

    restore standby controlfile to '/tmp/stb_controlfile01.ctl' ;

    recover database noredo;

    }



    6.关闭数据库,将恢复出来的备份控制文件覆盖掉原有的控制文件。

  • 相关阅读:
    Shell编程(一)为什么使用Shell编程
    ALSA驱动Debian声卡
    Shell编程(五)find与grep命令简介及正则表达式
    Shell编程(三)控制结构及函数
    初识Linux程序
    Gentoo的哲学
    学习Emacs
    Shell编程(二)Shell基本语法
    第一杯咖啡在Debian 上安装Java环境
    Fvwm 笔记
  • 原文地址:https://www.cnblogs.com/wangxingc/p/5181124.html
Copyright © 2011-2022 走看看