达梦数据库 闪回查询

当用户操作不慎导致错误的删改数据时,非常希望有一种简单快捷的方式可以恢复数据。闪回技术,就是为了用户可以迅速处理这种数据逻辑损坏的情况而产生的。

闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。如果提交了,还没有超过undo_retention的保留时长,可以通过闪回查询找回。闪回查询功能完全依赖于回滚段管理,对于 DROP 等误操作不能恢复。

设置ENABLE_FLASHBACK 为 1 后(ENABLE_FLASHBACK默认值为0),开启闪回功能。DM 会保留回滚段一段时间,回滚段保留的时间代表着可以闪回的时间长度。由UNDO_RETENTION 参数指定(UNDO_RETENTION 缺省值90秒,最大值1天)。(DM MPP、DMDSC 和 DMDPC 环境不支持闪回查询。)

闪回特性可应用在以下方面:

  1. 自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复;
  2. 用于分析数据变化:可以对同一张表的不同闪回时刻进行链接查询,以此查看变化的数据。

测试

1:开启闪回

 SP_SET_PARA_VALUE (1, ‘ENABLE_FLASHBACK’, 1);

2:查看当前回滚段记录保留时间,根据实际调整。默认就是90s

select para_name,para_value,default_value,para_type from v$dm_ini where para_name like '%UNDO_RETENTION%';

在这里插入图片描述

3:调整UNDO_RETENTION,20min

4:创建表:

create table "SYSDBA"."TABLE_1"
(
	"COLUMN_1" CHAR(10)
);

5:插入数据----注意不要只插入一条数据,只插入一条数据。

  insert into TABLE_1 values('11');
   insert into TABLE_1 values('11');
  insert into TABLE_1 values('12');
  commit;
  select sysdate(); --2023-02-23 14:37:42

6:delete 表数据

delete from TABLE_1 where COLUMN_1='11';
commit;
select sysdate(); --2023-02-23 14:38:07

7:查询删除之前的数据

   select * from TABLE_1 when timestamp '2023-02-23 14:37:42';

达梦数据库 闪回查询_第1张图片

你可能感兴趣的:(数据库,sql,mysql)