Oracle 闪回技术

发布时间 2023-12-27 16:06:20作者: guapisama

闪回技术概述

Oracle数据库闪回技术是一组独特而丰富的数据恢复解决方案,通过有选择地,有效的消除错误影响,可逆转人为错误。
- 查看数据地过去状态
- 可沿时间轴向前或向后闪回
- 协助用户进行错误分析和恢复
- 简单的命令行操作(或者DBMS_FLASHBACK包)
- 闪回时间与数据库大小无关
闪回支持不同级别地操作,包括行、事务、表和整个数据库:
- Flashback Database
- Flashback Table
- Flashback Drop
- Flashback Transaction
- Flashback Transaction Query
- Flashback Query
- Flashback Version Query

基于UNDO数据的闪回技术

- 闪回查询:查询一张表再过去时间的数据状态
- 闪回表:把一张表闪回到过去的时间点
- 闪回版本查询:一段时间多个事务操作对应表中数据状态
- 闪回事务查询:查询事务对应的UNDO Sql;闪回数据归档
### 闪回查询技术
查询一张表在过去某指定时间的数据状态
- 基于UNDO数据,确认是否可以查询对象或将对象改回到过去的某个时间点。
- 设置undo_management = auto
- 设置undo \_tablespace参数
- 设置undo_retntion(秒为单位)
- 执行闪回查询
1.闪回到某精确时间点:
select * from sh.test_tab1 as of timestamp
to_timestamp('2020-12-21 08:45:00','yyyy-mm-dd hh24:mi:ss')
2.闪回到多久时间之前(例如:1分钟前)
select * from tab as of timestamp sysdate - 1/24/60;

3.闪回到指定SCN
select * from tabl2 as of scn 5572156;

闪回版本查询技术

- 闪回查询:查询某一时间点的数据
- 闪回版本查询:
- 使用VERSIONS子句查询某一段时间对应行的所有版本
- 返回结果是行的改变历史,且只返回已提交的行(包括删除和重新插入的行版本)
- 提供了一种审计表行的方式,并可获取改变行的事务信息。
- 可以使用返回的事务标识符,通过LogMiner执行日志挖掘,或者进行闪回事务查询
SELECT versions_startscn,versions_starttime,
versions_endscn,versions_endtime,
versions_xid,versions_operation,
last_name,salary
FROM employees
VERSIONS BETWEEN TIMESTAMP
to_timestamp('2020-12-21 08:45:00','yyyy-mm-dd hh24:mi:ss')
AND to_timestamp('2020-12-21 08:50:00','yyyy-mm-dd hh24:mi:ss')
WHERE first_name = 'John';

利用数据版本标记列追溯数据历史变化过程:

VERSIONS_STARTSCN:数据版本被创建时的SCN
VERSIONS_STARTTIME:数据版本被创建时的时间戳
VERSIONS_ENDSCN:数据版本消逝时的SCN
VERSIONS_ENDTIME:数据版本消逝时的时间戳
VERSIONS_XID:数据版本被创建时的事务号
VERSIONS_OPERATION:数据版本创建时的事务类型
另外,可以关联FLASNBACK_TRANSACTION_QUERY,了解更多的闪回查询相关信息,例如UNDO_SQL可以给出数据修复需要执行的SQL。

闪回表技术

闪回表技术可以将表恢复到过去的指定时间点。
- 限制:只能将表闪回到undo所允许的过去时间点
- 需要开启行迁移(row movement)
开启行移动:
alter table table_name enable row movement;
将表闪回到指定地点:
flashback table table_name to timestamp ('2020-12-21 08:45:00','yyyy-mm-dd hh24:mi:ss');
将表闪回到n分钟(小时)之前:
flashback table table_name to timestamp sysdate - n/24/60;
将表闪回到指定的SCN:
flashback table table_name to scn xxxxxx;

FDA闪回数据归档技术

闪回数据归档:
- UNDO的保留期限限制
- 实现闪回查询和闪回表在时间上的延续
闪回数据归档步骤:
* 创建一个供闪回数据库使用的表空间
* 在该表空间创建闪回数据归档,时间期限自定义
* 创建一个用户并授予DBA的角色
* 授予用户操作的必要权限
* 登录创建一个表启用闪回数据归档
* 执行查询来确定归档创建的对象
CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE tbs1
QUOTA 10G RETENTION 1 YEAR;
CREATE FLASHBACK ARCHIVE fla2 TABLESPACE tbs2 RETENTION 2 YEAR;

基于Recyclebin的闪回删除技术

闪回删除技术:
- 针对非system表空间
- 适用于通过drop操作和非purge的方式删除的对象
- 可以在recyclebing使用闪回删除操作还原删除的对象(包括相关索引,约束,触发器)
回收站(recycle bin)
- 通过数据字典视图快速查看:USER_RECYCLEBIN和DBA_RECYCLEBIN。
- 删除的表在回收站中被重新命名

基于闪回数据库日志的闪回数据库技术

- 闪回数据库:把数据库闪回到过去的时间点,针对逻辑故障,或者对相同数据做循环迭代测试

闪回使用场景