zoukankan      html  css  js  c++  java
  • flashback database操作步骤

    默认情况数据库的flashback database是关闭的。 
    启用Flashback Database 步骤:
    1.配置Flash Recovery Area
    检查是否启动了flash recovery area:

    SQL> show parameter db_recovery_file; --或者是show parameter db_recover; 两个语句执行结果一致。
    
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    db_recovery_file_dest string D:appAdministratorflash_recovery_area 
    
    db_recovery_file_dest_size big integer 3912M

    2.启动flashback database

    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount;
    ORACLE 例程已经启动。
    
    Total System Global Area 855982080 bytes
    Fixed Size 2180544 bytes
    Variable Size 587205184 bytes
    Database Buffers 260046848 bytes
    Redo Buffers 6549504 bytes
    数据库装载完毕。
    SQL> alter database flashback on;
    
    数据库已更改。
    
    SQL> alter database open;
    
    数据库已更改。
    
    SQL> select flashback_on from v$database;
    
    FLASHBACK_ON
    ------------------
    YES
    
    SQL>

     SQL> select force_logging from v$database; --查看是否启用

      FOR
      ---
      YES
      如果未启用,则用如查语句启用force logging:
      SQL> alter database force logging; --启用force logging

    3.检查是否启用了归档(必须开户归档模式)

    SQL> archive log list;
    数据库日志模式 存档模式
    自动存档 启用
    存档终点 USE_DB_RECOVERY_FILE_DEST
    最早的联机日志序列 10
    下一个存档日志序列 12
    当前日志序列 12
    SQL>

    4. 查询当前的scn及当前时间

    SQL> select current_scn from v$database;
    
    CURRENT_SCN
    -----------
    1126864
    SQL> select sysdate from dual;
    
    SYSDATE
    --------------
    15-10月-14
    
    SQL> select to_char(sysdate,'YY-MM-DD HH24:MI:SS') TIME FROM DUAL;
    
    TIME
    -----------------
    14-10-15 23:43:15

    5.删除scott.emp表
    SQL> drop table bonus;

    表已删除。

    6.重启DB 到mount
    Flashback Database 实际是对数据库的一个不完全恢复操作,因为需要关闭数据库重启到mount状态

    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount;
    ORACLE 例程已经启动。
    
    Total System Global Area 855982080 bytes
    Fixed Size 2180544 bytes
    Variable Size 587205184 bytes
    Database Buffers 260046848 bytes
    Redo Buffers 6549504 bytes
    数据库装载完毕。
    SQL>

    7.执行恢复:分timestamp 或者SCN两种

    SQL> flashback database to timestamp to_timestamp('14-10-15 23:43:15','YY-MM-DD HH24:MI:SS');
    
    闪回完成。
    
    或者:SQL> flashback database to scn 1126864;
    
    闪回完成。

    8.打开数据库
    在执行完flashback database 命令之后,oracle 提供了两种方式让你修复数据库:
    1). 直接alter database open resetlogs 打开数据库,当然,指定scn 或者timestamp 时间点之后产生的数据统统丢失。
    2). 先执行alter database open read only 命令,以read-only 模式打开数据库,然后立刻通过逻辑导出的方式将误操作涉
    及表的数据导出,再执行recover database 命令以重新应用数据库产生的redo,将数据库修复到flashback database 操作前
    的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入,这样的话对现有数据的影响最小,不会有数据丢失。
    使用第一种方式打开数据库后可看到之前删除的scott.bonus表已还原。

    SQL> alter database open resetlogs;
    数据库已更改。
    
    SQL> conn scott/tiger@orcl;
    已连接。
    SQL> select * from tab;
    
    TNAME TABTYPE CLUSTERID
    ------------------------------ ------- ----------
    BIN$xOhMA3Y1RcGfglRwvq8V+g==$0 TABLE
    BONUS TABLE
    DEPT TABLE
    EMP TABLE
    SALGRADE TABLE
    SYS_TEMP_FBT TABLE
    
    已选择6行。

    二、与Flashback Database相关的3个视图
    1.V$database
    这个视图可以查看是否启用了Flashback database功能
    SQL> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    YES

    2.V$flashback_database_log
    Flashback Database 所能回退到的最早时间,取决与保留的Flashback Database Log 的多少, 该视图就可以查看许多有用的
    信息。
    Oldest_flashback_scn / Oldest_flashback_time : 这两列用来记录可以恢复到最早的时点
    Flashback_size: 记录了当前使用的Flash Recovery Area 空间的大小
    Retention_target: 系统定义的策略
    Estimated_flashback_size: 根据策略对需要的空间大小的估计值

    SQL> select *from v$flashback_database_stat;
    
    BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE
    ----------- ----------- -------------- ---------- ---------- ------------------------
    2014/10/15 2014/10/16 2269184 4816896 228864 0

    3. V$flashback_database_stat
    这个视图用来对Flashback log 空间情况进行更细粒度的记录和估计。 这个视图以小时为单位记录单位时间内数据库的活动量

    Flashback_Data 代表Flashback log产生数量,
    DB_Date 代表数据改变数量,
    Redo_Date代表日志数量,
    通过这3个数量可以反映出数据的活动特点,更准确的预计Flash Recovery Area的空间需求

    SQL> select *from v$flashback_database_stat;
    
    BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE
    ----------- ----------- -------------- ---------- ---------- ------------------------
    2014/10/15 2014/10/16 2433024 4849664 396800 0

    《FROM:http://blog.csdn.net/tianlesoftware/article/details/4677378

    ===============

    其它说明:

    Flashback Query主要是用来恢复指定时间点的记录,Flashback Table用来恢复被删除或指定时间点的表;flashback database则直接恢复整个数据库。
    Flash_recovery_area这个区域要足够大,至少可放得下所有的数据文件、控制文件、重做日志文件、备份文件……归档文件,Flashback logs……
    1、修改闪回区大小及位置:
    SQL> alter system set db_recovery_file_dest_size= 5g;

    系统已更改。

    SQL> alter system set db_recovery_file_dest='E:flash_recovery_area';

    系统已更改。

    2、启用force logging
    SQL> select force_logging from v$database; --查看是否启用

    FOR
    ---
    YES
    如果未启用,则用如查语句启用force logging:
    SQL> alter database force logging;


    3、db_flashback_retention_target参数:
    SQL> show parameter db_flashback_retention_target;

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    db_flashback_retention_target integer 1440
    该参数用来控制Flashback Logs数据保留时间,或者说是flashback database能够恢复的最早时间。

    4、制约因素
    Flashback database用来将数据库中的数据恢复到之前的某个时间点,而非介质恢复,因此不能使用flashback database恢复之前被删除的某个数据文件。
    如果控制文件被重建,则所有的flashback logs全部失效,所以不能将Flashback database恢复到控制文件被重建之前。
    不支持对数据库执行过Shrink收缩操作之后进行恢复。

    《FROM:http://www.2cto.com/database/201201/117266.html

    相关视图:

    1. V$database
     这个视图可以查看是否启用了Flashback database功能
    SQL> select flashback_on from v$database;
    2. V$flashback_database_log
     Flashback Database 所能回退到的最早时间,取决与保留的Flashback Database Log 的多少, 该视图就可以查看许多有用的信息。
    Oldest_flashback_scn / Oldest_flashback_time : 这两列用来记录可以恢复到最早的时点
    Flashback_size: 记录了当前使用的Flash Recovery Area 空间的大小
    Retention_target: 系统定义的策略
    Estimated_flashback_size: 根据策略对需要的空间大小的估计值
    3. V$flashback_database_stat
    这个视图用来对Flashback log 空间情况进行更细粒度的记录和估计。 To query the V$FLASHBACK_DATABASE_LOG to get the lowest SCN or the nearest TIMESTAMP to decide the recovery possibility.这个视图以小时为单位记录单位时间内数据库的活动量,Flashback_Data 代表Flashback log产生数量,DB_Date 代表数据改变数量,Redo_Date代表日志数量,通过这3个数量可以反映出数据的活动特点,更准确的预计Flash Recovery Area的空间需求。

    SQL> select dbid,name,log_mode,flashback_on from v$database;
          DBID NAME      LOG_MODE     FLASHBACK_ON
    ---------- --------- ------------ ------------------
    1399092762 ORCL      ARCHIVELOG   YES
    
    SQL> select * from v$flashback_database_log;
    OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
    -------------------- --------------------- ---------------- -------------- ------------------------
                 2447065 2015/3/20 16:11:55                1440       63766528                138534912
    
    SQL> select * from v$flashback_database_stat
      2  ;
    BEGIN_TIME  END_TIME    FLASHBACK_DATA    DB_DATA  REDO_DATA ESTIMATED_FLASHBACK_SIZE
    ----------- ----------- -------------- ---------- ---------- ------------------------
    2015/3/21 1 2015/3/21 1        1712128    2654208     906752                        0
    
    SQL> 
  • 相关阅读:
    Windows下给你mac下的开发体验 windows+wsl+zsh+vscode
    Puppeteer在docker下踩坑记录
    egret EUI加载 JSZip打包DragonBones二进制文件
    nodeJS rsasha加密
    Elasticsearch 聚合字段后 获取聚合字段的单条详细信息
    【转发自用】Apache2.4服务器权限设置问题
    C#重写VIVO支付SDK VivoSignUtils
    VS2017 空白 node.js web应用程序
    less开发
    获取样式getComputedStyle
  • 原文地址:https://www.cnblogs.com/rusking/p/4027765.html
Copyright © 2011-2022 走看看