达梦数据库闪回flashback
前言
闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。开启闪回功能后, DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的 UNDO 记录,就可以还原出特定事务号的记录。即指定时刻的记录状态,从而完成闪回查询。闪回查询功能完全依赖于回滚段管理。
注:对于DROP表的恢复,由于达梦数据库不存在回收站机制,所以对于DROP表操作无法flashback。DMDSC架构对于闪回查询功能不支持。
一、闪回时间查询
1、开启闪回查询
SQL> sp_set_para_value(1,‘ENABLE_FLASHBACK’,1);
DMSQL 过程已成功完成
2、设置undo闪回时间为600s
SQL> sp_set_para_double_value(1,‘UNDO_RETENTION’,600);
DMSQL 过程已成功完成
3、查询现有测试数据
4、删除9开头的数据
SQL> delete from “TEST”.“TEST_TABLE” where id like ‘9%’;
影响行数 6
已用时间: 1.842(毫秒). 执行号:702.
SQL> commit;
操作已执行
5、查看修改后的数据
6、查看当前时间:
SQL> select sysdate from dual;
行号 SYSDATE
1 2022-03-24 16:01:12
7、指定时间闪回查询(通过闪回查询子句,可以得到指定表过去某时刻的结果集)
二、闪回版本查询
1、查看当前数据
2、删除22222 ,33333 两条数据
SQL> DELETE FROM TEST.TEST_TABLE WHERE ID=‘22222’;
影响行数 1
已用时间: 1.569(毫秒). 执行号:601.
SQL> DELETE FROM TEST.TEST_TABLE WHERE ID=‘33333’;
影响行数 1
SQL>COMMIT;
3、修改911数据为1006
SQL> UPDATE TEST.TEST_TABLE SET ID=1006 WHERE ID=911;
影响行数 1
已用时间: 1.641(毫秒). 执行号:605.
SQL> COMMIT;
4、查看当前时间:
SQL> SELECT SYSDATE();
行号 SYSDATE()
1 2022-03-28 11:42:12
5、查看VERSIONS_ENDTRXID
6、指定 TRXID 闪回查询,未删除22222,33333,未修改911
指定 TRXID 闪回查询,已删除22222,33333,未修改911
三、闪回事务查询
闪回事务查询提供系统视图 V$FLASHBACK_TRX_INFO 供用户查看在事务级对数据库所做的更改。根据视图信息,可以确定如何还原指定事务或指定时间段内的修改。
查看18014对应的行
SQL> select * ,rowid from TEST.TEST_TABLE where ROWID=‘18014’;
行号 ID ROWID
1 911 18014
文章
阅读量
获赞