zoukankan      html  css  js  c++  java
  • 闪回还原点解析

    db_recovery_file_dest
    
    DB_RECOVERY_FILE_DEST specifies the default location for the flash recovery area. 
    
    The flash recovery area contains multiplexed copies of current control files and online redo logs, as well as archived redo logs, flashback logs, and RMAN 
    
    backups.
    
    Specifying this parameter without also specifying the DB_RECOVERY_FILE_DEST_SIZE initialization parameter is not allowed.
    
    
    
    
    DB_RECOVERY_FILE_DEST 指定了默认的闪回恢复区, 闪回恢复区包含了当前的控制文件和联机重做日志多路复用副本
    
    
    指定这个参数在没有指定DB_RECOVERY_FILE_DEST_SIZE参数是不允许的
    
    [oracle@june ~]$ cd /oradata/
    [oracle@june oradata]$ ls
    june
    [oracle@june oradata]$ mkdir flash_recovery_area
    
    SQL> alter system set db_recovery_file_dest='/oradata/flash_recovery_area' scope=both;
    alter system set db_recovery_file_dest='/oradata/flash_recovery_area' scope=both
    *
    第 1 行出现错误:
    ORA-02097: 无法修改参数, 因为指定的值无效
    ORA-19802: 无法使用 DB_RECOVERY_FILE_DEST, 由于缺少 DB_RECOVERY_FILE_DEST_SIZE
    
    
    
    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=2G scope=both;
    
    系统已更改。
    
    SQL> alter system set db_recovery_file_dest='/oradata/flash_recovery_area' scope=both;
    
    系统已更改。
    
    
    创建闪回还原点,不需要开启闪回。
    
    SQL> select FLASHBACK_ON from v$database ;
    
    FLASHBACK_ON
    ------------------
    NO
    
    SQL> create restore point before_drop guarantee flashback database;
    create restore point before_drop guarantee flashback database
    *
    第 1 行出现错误:
    ORA-38784: 无法创建还原点 'BEFORE_DROP'。
    ORA-38785: 必须对可靠的还原点启用介质恢复。
    
    
    创建闪回还原点,必须先开启归档。
    alter database archivelog;
    
    
    
    SQL> alter system set LOG_ARCHIVE_DEST_1= "LOCATION=/oradata/arch";
    
    系统已更改。
    
    
    创建闪回还原点:
    SQL> alter system set db_recovery_file_dest='/oradata/flash_recovery_area' scope=both;
    
    系统已更改。
    
    SQL> create restore point before_drop guarantee flashback database;
    
    还原点已创建。
    
    此时已经产生闪回日志:
    [oracle@june flashback]$ ls -ltrh
    总计 47M
    -rw-r----- 1 oracle dba 7.9M 05-26 02:56 o1_mf_9r4gzfcv_.flb
    -rw-r----- 1 oracle dba 7.9M 05-26 02:56 o1_mf_9r4h7fy1_.flb
    -rw-r----- 1 oracle dba 7.9M 05-26 02:57 o1_mf_9r4h7t98_.flb
    -rw-r----- 1 oracle dba 7.9M 05-26 02:57 o1_mf_9r4h7zyt_.flb
    -rw-r----- 1 oracle dba 7.9M 05-26 02:57 o1_mf_9r4h8l4q_.flb
    -rw-r----- 1 oracle dba 7.9M 05-26 02:57 o1_mf_9r4h8tnt_.flb
    
    删除闪回还原点:
    SQL> drop restore point BEFORE_DROP;
    
    还原点已删除。
    
    [oracle@june flashback]$ ls
    [oracle@june flashback]$ 
    
    此时闪回日志被清除
    
    
    开始闪回测试:
    
    SQL> conn scott/oracle
    已连接。
    SQL> select count(*) from flash;
    
      COUNT(*)
    ----------
         72655
    
    创建闪回还原点:
    
    SQL> create restore point before_drop guarantee flashback database;
    
    还原点已创建。
    SQL> select count(*) from flash;
    
      COUNT(*)
    ----------
         72655
    
    SQL> drop table flash purge;
    
    表已删除。
    
    SQL> select count(*) from flash;
    select count(*) from flash
                         *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在
    
    
    闪回到还原点:
    SQL> flashback database to restore point BEFORE_DROP;
    flashback database to restore point BEFORE_DROP
    *
    第 1 行出现错误:
    ORA-38757: 要闪回数据库, 数据库必须已装载但不能打开。
    
    
    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount;
    ORACLE 例程已经启动。
    
    Total System Global Area  301305856 bytes
    Fixed Size		    1336148 bytes
    Variable Size		  251661484 bytes
    Database Buffers	   41943040 bytes
    Redo Buffers		    6365184 bytes
    数据库装载完毕。
    SQL> flashback database to restore point BEFORE_DROP;
    
    闪回完成。
    
    SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
    
    
    SQL> alter database open resetlogs;
    
    数据库已更改。
    
    数据已恢复:
    SQL> conn scott/oracle
    已连接。
    SQL> select count(*) from flash;
    
      COUNT(*)
    ----------
         72655
    
    
    结论:
    1.闪回还原点,可以不用开启闪回
    
    2.闪回还原点,必须开启归档
    
    3.删除闪回还原点,闪回日志自动删除

  • 相关阅读:
    JS优先队列排序。出队时,先找出优先级最高的元素,再按照先进先出出队。
    使用队列对数组排列,基数排序
    一个用JS数组实现的队列
    使用栈判断给定字符串是否是回文的算法
    使用js栈stack类的实现
    Bootstrap篇:弹出框和提示框效果以及代码展示
    一个漂亮的php验证码类
    jquery单选框radio绑定click事件实现和是否选中的方法
    phpQuery—基于jQuery的PHP实现
    PHP的函数-----生成随机数、日期时间函数
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797989.html
Copyright © 2011-2022 走看看