【赵渝强老师】达梦数据库的闪回技术

发布于:2025-07-03 ⋅ 阅读:(28) ⋅ 点赞:(0)

在这里插入图片描述

达梦数据库提供的闪回技术主要是在数据库发生逻辑错误的时候,能提供快速且最小损失的恢复。闪回技术旨在快速恢复数据库的逻辑错误。对于物理介质的损坏或者物理文件丢失,就不能使用闪回进行恢复。闪回特性可应用在以下方面:

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

【赵渝强老师】达梦数据库的闪回技术

达梦数据库的闪回技术是以回滚(undo)数据中的内容为基础的。要使用闪回需要将enable_flashback设置为1,以开启闪回功能。另一方面,通过设置undo_retention 大小,可以决定保留回滚段时间,回滚段保留的时间代表着可以闪回的时间长度。开启闪回功能后,DM数据库 会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的 undo 记录,就可以还原出特定事务号的记录,即指定时刻的记录状态从而完成闪回查询。

《达梦数据库从零开始》

通过执行下面的语句可以确定参数undo_retention和enable_flashback的值。

SQL> select name,type,value from v$parameter 
      where name='UNDO_RETENTION';

# 输出的信息如下:
行号     		NAME           	TYPE 	VALUE    
---------- -------------- ------- ---------
1          	UNDO_RETENTION SYS  		90.000000

SQL> select name,type,value from v$parameter 
      where name='ENABLE_FLASHBACK';

# 输出的信息如下:
行号     		NAME             		TYPE 	VALUE
---------- ------------------- ------- -----
1          	ENABLE_FLASHBACK 	SYS  	0

在默认情况下,ENABLE_FLASHBACK的值为0,表示达梦数据库没有启用闪回功能。下面修改UNDO_RETENTION和ENABLE_FLASHBACK的值以启用达梦数据库闪回的功能。

SQL> sp_set_para_double_value(1,'UNDO_RETENTION',3600);
SQL> sp_set_para_value(1,'ENABLE_FLASHBACK',1);

这里将UNDO_RETENTION的值改为了3600秒,即一个小时。开启闪回也可以通过下面的语句完成:

SQL> alter system set 'ENABLE_FLASHBACK' = 1;

重新查询UNDO_RETENTION和ENABLE_FLASHBACK的值。

SQL> select name,type,value from v$parameter 
      where name in ('UNDO_RETENTION','ENABLE_FLASHBACK');   

# 输出的信息如下:
行号     		NAME             		TYPE 	VALUE      
---------- ------------------- ------- -----------
1          	ENABLE_FLASHBACK 	SYS  		1
2          	UNDO_RETENTION   	SYS  	3600.000000

《达梦数据库从零开始》