达梦数据库闪回恢复数据

1. 引用背景

        当用户误操作删除数据时,可通过闪回技术恢复一定时间内的误删数据。

2. 闪回前提

       dm.ini中ENABLE_FALSHBACK需置为1(启用闪回)

3. 闪回原理

        闪回主要通过回滚段存储的UNDO记录来完成历史记录的还原。开启闪回功能后,DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指 定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的 UNDO 记录,就可以还原出 特定事务号的记录。即指定时刻的记录状态。从而完成闪回查询。闪回查询功能完全依赖于 回滚段管理,对于 DROP 等误操作不能恢复。

4. 闪回时间限制

        dm.ini中UNDO_RETENTION参数为闪回支持的时间范围。参数本意为事务提交后回滚页保持的时间。范围为0-86400(0-24小时)

5. 达梦数据库中闪回查询

测试环境表数据插入:

BEGIN

FOR I IN 1..5000 LOOP
INSERT INTO LYT.TB1 VALUES(I,'HELLO');
END LOOP;
END;
COMMIT;
select sysdate;

5.1 模拟更新数据

查询当前数据

通过时间戳查询历史数据

 5.2 模拟删除数据

        

当前数据查询

 通过时间戳查询历史数据

 

5.3 模拟插入闪回

测试数据插入

查询当前数据量

查询历史数据量

6. 闪回恢复数据

当前数据查询

执行update改变name:

 

当前数据查询

历史数据查询 

抓取历史数据还原至新表:

 注:通过CTAS创建的新表不包含任何原有约束,仅包含数据本身。

注:不能通过COUNT(*)判定闪回前后数据。V8.1.2.93之前的达梦版本(DM7/DM8)均有此bug,COUNT(*)出来的数据量同当前时间节点相同,SELECT *出来为正确信息。 

更多达梦相关技术文档可访问​​​​​​ 

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值