概览
- 传统的恢复技术速度比较慢
- 必须还原整个数据库或文件(而不仅仅是错误的数据)
- 必须检查数据库日志中的每项更改
- 闪回技术的速度比较快
- 按行和事务处理对更改建立索引
- 只还原更改的数据
- 闪回命令易于操作
- 不涉及复杂的多步骤过程
- 何时使用
- 闪回任何错误
- 闪回数据库通过还原自先前某个时间点以来所做的所有更改,将数据库恢复到较早的时间点。
- 闪回表可将表恢复到过去的某个时间点,而不必从备份进行还原。
- 闪回删除可还原意外删除的表。
闪回数据库
- 概览
- 其作用类似于数据库的倒回按钮
- 用户造成了错误--->数据库逻辑损坏--->倒回(闪回)--->数据库倒回至正常状态
- 缩短还原时间
- Oracle 数据库会
- 定期将数据块的“前像”记录在闪回数据库日志中。为了快速将数据文件更改回退到捕获
- 闪回日志的时间(就在所需目标时间之前),可以重用块图像。然后,应用重做日志文件 中的更改来填充间隔
- 注意事项
- 闪回数据库操作完成后
- 在只读模式下验证是否使用了正确的目标时间或 SCN
- 使用 RESETLOGS 参数以允许进行更新
- 限制
- 不能在下列情况下使用闪回数据库
- 已还原或重新创建了控制文件
- 表空间已删除
- 数据文件已发生收缩(必须先脱机,才能执行闪回操作)
- 启用闪回数据库
- 维护--->恢复设置
闪回表
- 概览
- 闪回表可将表恢复到特定的时间点。
- 闪回表是一个可原地完成的操作。
- 数据库保持联机
- 必须成功闪回所有表,否则会回退整个事务处理
- 可将一个或多个表恢复到特定的时间点,而不需要还原备份
- 从还原表空间检索数据以执行闪回表操作
- 可以授予 FLASHBACK 对象权限和 FLASHBACK ANY TABLE 系统权限,以允许表所有者以外的人员闪回此表。
- 必须对要执行闪回操作的表启用行移动
- em 管理---->表--->编辑-->选项--->启动行移动
- sql*plus alter table employees enable row movement
- 执行闪回表
- em
- SQL*PLUS
-
FLASHBACK TABLE hr.employees TO TIMESTAMP
TO_TIMESTAMP('2005-05-05 05:32:00',
'YYYY-MM-DD HH24:MI:SS'); - 注意事项
- FLASHBACK TABLE 命令可作为单个事务处理执行,以获取 DML 互斥锁。
- 不会闪回受影响对象的统计信息
- 会保留所有现有索引
- FLASHBACK TABLE 语句会写入到预警日志文件
- 闪回表操作
- 不能对系统表执行
- 不能跨多个 DDL 操作
- 会生成还原和重做数据
闪回删除
- 使用
- SQL*PLUS
- DROP TABLE employees; ---删除表employees
- flashback employees to before drop --从回收站中闪回employees表
- EM
- 查看回收站内容
- dba_recyclebin视图
- 注意事项
- 闪回删除不适用于:
- 驻留在 SYSTEM 表空间中的表
- 驻留在字典管理表空间中的表
- 使用细粒度级审计或虚拟专用数据库的表
- 已清除的表,无论是手动清除的,还是在空间压力下自动清除的
- 以下相关对象不受保护
- 位图联接索引
- 实体化视图日志
- 引用完整性约束条件
- 在删除表前删除的索引
闪回时间浏览
- 闪回查询:查询特定时间点的所有数据。
- 示例
-
UPDATE employees SET salary =
(SELECT salary FROM employees
AS OF TIMESTAMP TO_TIMESTAMP
('2005-05-04 11:00:00', 'yyyy-mm-dd hh24:mi:ss')
WHERE employee_id = 200)
WHERE employee_id = 200 - 闪回版本查询:查看两个时间之间行的所有版本以及更改了行的事务处理。
- 示例
-
SELECT versions_xid, salary FROM employee --VERSIONS_XID 是返回行对应版本的事务处理标识符的伪列。
VERSIONS BETWEEN TIMESTAMP t1 and t2
WHERE employee_id = 200; - 注意事项
- VERSIONS 子句不能用于查询 外部表,临时表,固定表,视图
- VERSIONS 子句不能跨多个 DDL 命令
- 会过滤掉段收缩操作
- 闪回事务处理查询:查看事务处理做的所有更改。
- 查看FLASHBACK_TRANSACTION_QUERY视图
- 注意事项
- DDL 被视为字典更新
- 删除的对象以对象编号的形式显示
- 删除的用户以用户标识符的形式显示