达梦数据库闪回技术

1、概念
闪回技术,就是为了用户可以迅速处理数据逻辑损坏的情况而产生的。开启闪回功能后,DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的 UNDO 记录,就可以还原出特定事务号的记录。即指定时刻的记录状态。从而完成闪回查询。闪回查询功能完全依赖于回滚段管理,对于 DROP 等误操作不能恢复。
2、原理
闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。
3、试验步骤
①、开启闪回及修改UNDO的保留时间
达梦数据库默认是不开启闪回功能的,查询闪回是否开启,1为开启,0为关闭

SQL> select para_name,para_value from v$dm_ini where para_name='ENABLE_FLASHBACK';

行号       PARA_NAME        PARA_VALUE
---------- ---------------- ----------
1          ENABLE_FLASHBACK 0

已用时间: 4.498(毫秒). 执行号:54600

SQL> SP_SET_PARA_VALUE(1,'ENABLE_FLASHBACK',1);
DMSQL 过程已成功完成
已用时间: 15.343(毫秒). 执行号:54601.
SQL> select para_name,para_value from v$dm_ini where para_name='ENABLE_FLASHBACK';

行号       PARA_NAME        PARA_VALUE
---------- ---------------- ----------
1          ENABLE_FLASHBACK 1

已用时间: 2.789(毫秒). 执行号:54602.

②、查询UNDO的保留时间并做修改

SQL> select para_name,para_value from v$dm_ini where para_name='UNDO_RETENTION';

行号       PARA_NAME      PARA_VALUE
---------- -------------- ----------
1          UNDO_RETENTION 90.000000

SQL> SP_SET_PARA_DOUBLE_VALUE(1,'UNDO_RETENTION',1800);
DMSQL 过程已成功完成
已用时间: 14.577(毫秒). 执行号:54610.
SQL> select para_name,para_value from v$dm_ini where para_name='UNDO_RETENTION';

行号       PARA_NAME      PARA_VALUE
---------- -------------- -----------
1          UNDO_RETENTION 1800.000000

已用时间: 3.107(毫秒). 执行号:54611.

③、

SQL> INSERT INTO T1 VALUES(1,'AAA1');
SQL> INSERT INTO T1 VALUES(2,'AAA2');
SQL> INSERT INTO T1 VALUES(3,'AAA3');
SQL> INSERT INTO T1 VALUES(4,'AAA3');
SQL> COMMIT;
操作已执行
已用时间: 2.530(毫秒). 执行号:54619.
SQL> SELECT * FROM T1;

行号       ID          NAME
---------- ----------- --------------------
1          1           AAA1
2          2           AAA2
3          3           AAA3
4          4           AAA3

已用时间: 0.604(毫秒). 执行号:54620.
SQL> SELECT SYSDATE;

行号       SYSDATE
---------- -------------------
1          2022-10-17 15:52:52

已用时间: 0.261(毫秒). 执行号:54621.
SQL> INSERT INTO T1 VALUES(5,'AAA5');
SQL> INSERT INTO T1 VALUES(6,'AAA6');
SQL> COMMIT;
SQL> SELECT * FROM T1;

行号       ID          NAME
---------- ----------- --------------------
1          1           AAA1
2          2           AAA2
3          3           AAA3
4          4           AAA3
5          5           AAA5
6          6           AAA6

6 rows got

已用时间: 0.407(毫秒). 执行号:54625.
SQL> SELECT VERSIONS_ENDTRXID, NAME FROM T1 VERSIONS BETWEEN TIMESTAMP '2022-10-17 15:52:52' AND SYSDATE;

行号       VERSIONS_ENDTRXID    NAME
---------- -------------------- --------------------
1          NULL                 AAA1
2          NULL                 AAA2
3          NULL                 AAA3
4          NULL                 AAA3
5          NULL                 AAA5
6          NULL                 AAA6

6 rows got

已用时间: 0.638(毫秒). 执行号:54626.
SQL> DELETE FROM T1 WHERE ID=5;
SQL> COMMIT;
操作已执行
已用时间: 2.509(毫秒). 执行号:54628.
SQL> SELECT VERSIONS_ENDTRXID, NAME FROM T1 VERSIONS BETWEEN TIMESTAMP '2022-10-17 15:52:52' AND SYSDATE;

行号       VERSIONS_ENDTRXID    NAME
---------- -------------------- --------------------
1          NULL                 AAA1
2          NULL                 AAA2
3          NULL                 AAA3
4          NULL                 AAA3
5          NULL                 AAA5
6          NULL                 AAA6
7          3624                 AAA5

7 rows got

已用时间: 0.547(毫秒). 执行号:54629.

通过操作时间及闪回版本查询,被删除的数据已经找到。

SQL>SELECT VERSIONS_ENDTRXID, NAME,* FROM T1 VERSIONS BETWEEN TIMESTAMP '2022-10-17 15:52:52' AND SYSDATE;

在这里插入图片描述
更多资讯请上达梦技术社区了解:https://eco.dameng.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值