当前位置: 首页 > news >正文

达梦(DM)闪回使用介绍

达梦(DM)闪回使用介绍

  • 1 简介
  • 2 开启闪回
    • 2.1 参数优化
    • 2.2 开启闪回
  • 3 闪回表
  • 4 闪回查询

1 简介

闪回技术是为了用户可以迅速处理这种数据逻辑损坏的情况而产生的。主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。设置 ENABLE_FLASHBACK为1后,开启闪回功能。DM 会保留回滚段一段时间,回滚段保留的时间代表着可以闪回的时间长度。由UNDO_RETENTION参数指定。
开启闪回功能后,DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指定的时刻,查询到该时刻的 LSN,结合当前记录和回滚段中的 UNDO 记录,就可以还原出特定 LSN 的记录。即指定时刻的记录状态。从而完成闪回查询。闪回查询功能完全依赖于回滚段管理,对于DROP等误操作不能恢复。

2 开启闪回

2.1 参数优化

因闪回依赖于回滚段保留时间,由UNDO_RETENTION参数指定。当回滚段保留时间较小时,操作时间较为紧张,当保留时间过大时,又需要消耗较多的回滚段资源,所需需要综合指定一个合理的参数值。
修改UNDO_RETENTION参数值。

--查看参数默认值。默认值为90秒。
SQL> show parameter UNDO_RETENTION
行号     PARA_NAME      PARA_VALUE
---------- -------------- ----------
1	UNDO_RETENTION 90.000000--修改参数值为900秒。
SQL> SP_SET_PARA_DOUBLE_VALUE(1,'UNDO_RETENTION',900);
DMSQL 过程已成功完成
已用时间: 10.193(毫秒). 执行号:2504.--查询修改后参数进行确认。
SQL> show parameter UNDO_RETENTION
行号     PARA_NAME      PARA_VALUE
---------- -------------- ----------
1          UNDO_RETENTION 900.000000

2.2 开启闪回

开启闪回,ENABLE_FLASHBACK参数为动态系统级,修改后无需重启。

--查询当前参数值
SQL> show parameter ENABLE_FLASHBACK
行号     PARA_NAME        PARA_VALUE
---------- ---------------- ----------
1	ENABLE_FLASHBACK 0--修改参数值
SQL> SP_SET_PARA_VALUE(1,'ENABLE_FLASHBACK',1);
DMSQL 过程已成功完成
已用时间: 8.059(毫秒). 执行号:2507.--查询修改后参数值
SQL> show parameter ENABLE_FLASHBACK
行号     PARA_NAME        PARA_VALUE
---------- ---------------- ----------
1          ENABLE_FLASHBACK 1

3 闪回表

闪回表是在数据库联机时,通过只回退对指定表及其相关对象所做的更改,将表里的数据回退到历史的某个时间点,而不需要执行传统的时间点恢复操作。闪回使用限制明细可查看《DM8 SQL语言使用手册》17.1.2。
限制重复闪回。闪回作为DDL,对于同一个表,不允许再次闪回到上一次闪回之前的LSN/TIMESTAMP。所以,请明确需要闪回的LSN/TIMESTAMP后再进行操作。同时,对于 DROP 等误操作不能恢复。

表闪回举例:
SQL> insert into U_TEST.T_TEST VALUES('A');
影响行数 1
已用时间: 1.473(毫秒). 执行号:3605.
SQL> insert into U_TEST.T_TEST VALUES('B');
影响行数 1
已用时间: 1.428(毫秒). 执行号:3606.
SQL> commit;
操作已执行
已用时间: 2.925(毫秒). 执行号:3607.
SQL> SELECT CUR_LSN FROM V$RLOG;
行号     CUR_LSN             
---------- --------------------
1          86545
已用时间: 0.284(毫秒). 执行号:3608.
SQL> insert into U_TEST.T_TEST VALUES('C');
影响行数 1
已用时间: 0.399(毫秒). 执行号:3609.
SQL> commit;
操作已执行
已用时间: 2.454(毫秒). 执行号:3610.
SQL> select * from U_TEST.T_TEST;
行号     C
---------- -
1          A
2          B
3          C
已用时间: 0.405(毫秒). 执行号:3611.
SQL> FLASHBACK TABLE U_TEST.T_TEST TO LSN 86545;
操作已执行
已用时间: 32.405(毫秒). 执行号:3612.
SQL> select * from U_TEST.T_TEST;
行号     C
---------- -
1          A
2          B
已用时间: 0.301(毫秒). 执行号:3613.

4 闪回查询

DM MPP环境不支持闪回查询。数据守护环境下,备库不支持闪回查询。DMDPC环境下仅支持基于时间进行闪回查询,不支持基于LSN进行闪回查询。

闪回查询举例:
SQL> insert into U_TEST.T_TEST VALUES('A');
影响行数 1
已用时间: 1.283(毫秒). 执行号:3616.
SQL> insert into U_TEST.T_TEST VALUES('B');
影响行数 1
已用时间: 1.472(毫秒). 执行号:3617.
SQL> COMMIT;
操作已执行
已用时间: 2.680(毫秒). 执行号:3618.
SQL> SELECT CUR_LSN FROM V$RLOG;行号     CUR_LSN             
---------- --------------------
1          86807
已用时间: 0.563(毫秒). 执行号:3619.
SQL> select SYSTIMESTAMP();
行号     SYSTIMESTAMP()                   
---------- ---------------------------------
1          2025-06-21 17:25:16.731972 +08:00已用时间: 0.610(毫秒). 执行号:3620.
SQL> select * from U_TEST.T_TEST;
行号     C
---------- -
1          A
2          B
已用时间: 0.481(毫秒). 执行号:3621.
SQL> insert into U_TEST.T_TEST VALUES('C');
影响行数 1
已用时间: 0.405(毫秒). 执行号:3622.
SQL> COMMIT;
操作已执行
已用时间: 2.673(毫秒). 执行号:3623.
SQL> select * from U_TEST.T_TEST;
行号     C
---------- -
1          A
2          B
3          C
已用时间: 0.536(毫秒). 执行号:3624.
SQL> select * from U_TEST.T_TEST AS OF TIMESTAMP '2025-06-21 17:25:16.731972 +08:00';
行号     C
---------- -
1          A
2          B
已用时间: 2.212(毫秒). 执行号:3625.
SQL> select * from U_TEST.T_TEST AS OF LSN 86807;
行号     C
---------- -
1          A
2          B
已用时间: 1.813(毫秒). 执行号:3626.

达梦在线服务平台 https://eco.dameng.com

http://www.lryc.cn/news/614403.html

相关文章:

  • 智能云探索:基于Amazon Bedrock与MCP Server的AWS资源AI运维实践
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • 微型导轨在半导体制造中有哪些高精密应用场景?
  • 5 种简单方法将 Safari 书签转移到新 iPhone
  • 苹果iPhone 17系列将发售,如何解决部分软件适配问题引发讨论
  • 3 种简单方法备份 iPhone 上的短信 [2025]
  • 若以微服务部署踩坑点
  • Day10 SpringAOP
  • GitLab同步提交的用户设置
  • 智能厨具机器人的革命性升级:Deepoc具身模型外拓板技术解析
  • JAVA,Maven聚合
  • “A flash of inspiration“, protect us from prompt injection?
  • Node.js 》》bcryptjs 加密
  • Kafka + 时间轮 + 数据库实现延迟队列方案
  • 全场景音频工作流实践:Melody如何打造音源管理闭环
  • 使用FinTSB框架进行金融时间序列预测的完整指南
  • (Arxiv-2025) CINEMA:通过基于MLLM的引导实现多主体一致性视频生成
  • iOS混淆工具有哪些?跨平台 App 混淆与保护的实用方案
  • Flutter开发 SingleChildScrollView、ScrollController
  • 大语言模型提示工程与应用:提示词基础使用方式
  • 【重学MySQL】事务隔离
  • 单层 PDF 与双层 PDF:一字之差,功能大不同
  • 学生如何使用 DeepSeek 帮助自己的学习?
  • 自有域名功能详解——安全可控的企业级访问方案
  • select ... for update阻塞
  • 智慧社区(九)——事务加持下的小区删除操作
  • 前端老项目依赖安全漏洞解决
  • 如何使用 pg_rman 进行 PostgreSQL 的备份与恢复
  • 超算中心的基本组成,国内有哪些比较有名的超算中心?
  • 【网络】TCP/UDP协议