达梦闪回flashback使用

达梦数据库闪回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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值