Oracle 闪回

256 阅读1分钟

根据业务需要查看当天开班的情况,EOH, BOH等指标,因此借用ORACLE 数据库闪回功能

Oracle 闪回

闪回是数据库备份恢复机制的一部分

Oracle 提供了四种可用的闪回技术

闪回查询

闪回查询依赖于撤销数据

a. 基本闪回查询

可以查询过去某个时间段的数据库状态

SELECT * FROM DEVODS.LOT AS OF TIMESTAMP (TRUNC(SYSDATE)+8/24)
​
-- 2022-06-06 08:00:00.000

b. 闪回表

可以将表回退到过去的某个时间点

启用表闪回首先要在表上支持行移动

ALTER TABLE DEVODS.LOT ENABLE ROW MOVEMENT;
​
FALSHBACK TABLE DEVODS.LOT TIMESTAMP (TRUNC(SYSDATE)+8/24)
​
FLASHBACK TABLE TEMP TO BEFORE DROP;

闪回失败的原因:

  1. 违反了数据库约束 [外键约束]
  2. 用于支撑闪回操作的撤销数据被覆盖
  3. 闪回不能跨越DDL,在闪回点和当前点之间,表结构变更过,会导致操作失败

注意

  1. 闪回开启

    ARCHIVE LOG LIST; -- 开启归档日志-- 若未开启
    在MOUNT 状态执行 ALTER DATABASE ARCHIVELOG
    
  2. 设置合理的闪回区间

    DB_RECOVERY_FILE_DEST -- 指定闪回恢复区的位置
    ​
    DB_RECOVERY_FILE_DEST_SIZE -- 指定闪回恢复区的可用空间大小
    ​
    DB_FLASHBACK_RETENTION_TARGET --指定数据库可回退的时间,单位分钟,实际取决于闪回区的大小
    
  3. 检查是否开启闪回

    SELECT FLASHBACK_ON FROM V$DATABASE;
    
  4. 闪回日志保留时间

    闪回日志保留时间须大于要恢复到的时间点; 建议保留 3天 (4320分钟)

    SHOW PARAMETER FLASHBACK
    ​
    NAME TYPE VALUE
    ​
    db_flashback_retention_target integer 4320
    
  5. 若闪回保留3天,通常需要有最近3天的归档日志才能闪回到3天前

  6. 表是否开启了行移动s

    ALTER TABLE TEMP ENABLE ROW MOVEMENT
    

\