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

达梦数据闪回查询-快速恢复表

Time:2025/08/12

Author:skatexg

一、环境说明

DM数据库:DM8.0及以上版本

二、适用场景

研发在误操作或变更数据后,想马上恢复表到某个时间点,可以通过闪回查询功能快速实现(通过全量备份恢复时间长,成本高)

三、说明

  • 闪回查询只支持普通表(包括加密表与压缩表)、水平分区表和堆表,不支持临时表、列存储表、外部表与视图;
  • 闪回查询利用的是 UNDO 表空间里所记录的数据被改变前的值。因此,如果因保留时间超过了初始化参数 UNDO_RETENTION 所指定的值,从而导致闪回查询时所需要的 UNDO 数据被其他事务覆盖的话,那么就不能将表中数据恢复到指定的时间了
  • 数据守护环境下,备库不支持闪回查询

四、闪回查询开启与关闭

查询闪回功能状态,数据库默认关闭 (0-关闭,1-打开),通过如下语句查询开启状态

SELECT name,

TYPE,

VALUE,

sys_value,

file_value

FROM v$parameter

WHERE name LIKE '%FLASHBACK%';

输出结果:

开启闪回查询

SP_SET_PARA_VALUE (1, 'ENABLE_FLASHBACK', 1);--无需重启服务器

--scope 为 1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器;--scope 为 2 表示只修改 dm.ini 文件,服务器重启后生效。

--value: 设置的值。

关闭闪回查询

SP_SET_PARA_VALUE (1, 'ENABLE_FLASHBACK', 0);----无需重启服务器

配置可闪回数据保留时间

由于回滚段默认每秒种都会自动清理,所以需要延长回滚记录的保留时间,单位是秒。回滚段参数太大容易引发回滚段膨胀,这里设置为 3600s。示例语句如下所示:

ALTER SYSTEM SET 'undo_retention'=3600 BOTH;

SELECT name,

TYPE,

VALUE,

sys_value,

file_value

FROM v$parameter

WHERE name = 'UNDO_RETENTION';

输出结果:

五、数据闪回查询

通过指定一个时间(timestamp 类型),用一个日期时间字符串表达。使用 test_zxg 模式下的 tab_1 表。测试如下:

-1)切换schema

set schema "test_zxg"

2)查询 tab_1 表中的信息

SELECT * FROM tab_1 where id =1;

3)更新 id = 1,更新时间为 '2025-08-12 16:42:00'

UPDATE tab_1 set name='cccccc' where id =1;

4)再次查询 id = 1 时表中的信息

SELECT * FROM tab_1 where id =1;

4)闪回查询 update 操作前表中的信息

SELECT * FROM tab_1 WHEN TIMESTAMP '2025-08-12 16:40:00' where id =1

六、数据恢复

为安全起见,先把闪回查询的数据保存到临时表,后续在根据业务逻辑,研发按需恢复

CREATE table tab_bak20208121650 as SELECT * FROM tab_1 WHEN TIMESTAMP '2025-08-12 15:40:00'

另:数据变更前的备份方法

1、在dml某表数据前,如果表行数不多(10万以内)可以先备份表,然后再做表变更

CREATE table tab_bak20208121650 as SELECT * FROM tab_1 where id

注意:数据闪回功能达梦工程师建议生产环境关闭闪回,可能影响性能

----end----

http://www.dtcms.com/a/328328.html

相关文章:

  • string 类元素访问方法
  • 《嵌入式Linux应用编程(四):Linux文件IO系统调用深度解析》
  • Origin2025b安装包免费,附Origin 2025安装教程
  • 智能机器人学习:智能机器人环境感知传感器介绍
  • 一个基于 PyTorch 的完整模型训练流程
  • 项目里程碑工具选型指南:16款优质系统
  • 基恩士3D视觉用于ABB机器人的KeyenceRobotVisionSetup.sys系统模块程序解析(九、KeyAbsMove)
  • 远程桌面环境协议对比
  • DDIA第五章:无主复制(去中心化复制)详解
  • 【Python办公】Mermaid代码转图片工具 - Tkinter GUI版本
  • wordpress数据库文件sql导入时出现#1253错误
  • 如何通过数据驱动需求决策
  • ZKmall开源商城的容灾之道:多地域部署与故障切换如何守护电商系统
  • Baumer高防护相机如何通过YoloV8深度学习模型实现木板表面缺陷的检测识别(C#代码UI界面版)
  • [java八股文][Mysql面试篇]架构
  • 构建Eclipse Rcp产品的核心文档帮助系统
  • C语言栈的实现
  • 如何追踪需求状态变化
  • Ubuntu Server系统安装磁盘分区方案
  • 文件操作:文件IO操作流程及各类函数应用+标准IO与文件IO区别
  • Sentinel原理之规则管理
  • 力反馈手套让虚拟培训更加真实
  • GitHub的简单使用方法----(5)
  • AR眼镜新赛道:光波导与MicroOLED如何解决眩晕难题?
  • 低空智航平台技术架构深度解析:如何用AI +空域网格破解黑飞与安全管控难题
  • Ceph数据副本机制详解
  • 【编程实践】关于Vscode无法连接Anaconda解译器的问题
  • PCB题目基础练习1
  • 高速缓冲存储器cache
  • 肖臻《区块链技术与应用》第十讲:深入解析硬分叉与软分叉