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

Oracle 误删数据恢复

今天后台调整数据时误删了一批数据,没有备份数据,差点要删库跑路了,幸好同事大神告诉一种方法可以查询近期的某个历史节点的数据。既可以用来恢复误操作的数据,也可以用来对比历史数据测试代码效果,记录一下备用。Oracle 的闪存查询(Flashback Query)是一种利用 UNDO 数据 来查看过去某个时间点或 SCN(系统变更号)时的数据状态的技术,常用于数据恢复、审计或误操作回退。
在这里插入图片描述

✅ 核心用法

1. 查询某个时间点的数据
SELECT * FROM 表名
AS OF TIMESTAMP TO_TIMESTAMP('2025-07-25 08:30:00', 'YYYY-MM-DD HH24:MI:SS');
2. 查询某个 SCN 的数据
SELECT * FROM 表名 AS OF SCN 13526973;
3. 恢复误删数据
CREATE TABLE 表名_bak AS
SELECT * FROM 原表 AS OF TIMESTAMP TO_TIMESTAMP('2025-07-25 08:30:00', 'YYYY-MM-DD HH24:MI:SS');

示例:某医院误删了 8:30–9:00 的数据,使用如下方式恢复:

SELECT * FROM reportinfo AS OF SCN 13526973;

⚠️ 注意事项

项目说明
UNDO_RETENTION默认只保留 15 分钟,超过可能报 ORA-01555: snapshot too old
归档日志闪回查询不依赖归档日志,依赖的是 UNDO 表空间
权限要求需要有 FLASHBACK 权限或 SELECT ANY TRANSACTION 权限。

✅ 适用场景

  • 误删或误改数据后快速找回;
  • 审计数据变更历史;
  • 无需恢复整个数据库的“轻量级”回退。

如需更长时间窗口的闪回,建议:

  • 增加 UNDO_RETENTION 参数;
  • 使用 闪回数据归档(Flashback Data Archive) 保存历史数据。
http://www.xdnf.cn/news/1191187.html

相关文章:

  • 服务器被网络攻击后该如何进行处理?
  • golang实现一个定时引擎,功能包括按照corntab的时间任务实时增加、修改、删除定时任务
  • C++11 -- emplace、包装器
  • C++ 类型萃取:深入理解与实践
  • MySQL 8.0 OCP 1Z0-908 题目解析(36)
  • pip, github 突然连不上?报错和解决方法如下
  • MyBatis-Plus 通用 Service
  • 基于MySQL实现基础图数据库
  • C++连接MySQL完整教程
  • 智慧水库边缘计算技术路线与框架设计
  • C++五子棋
  • javaSE 6
  • AI使能的SVD算子:基于深度学习的矩阵分解方法
  • connect系统调用及示例
  • 数字化转型 - 企业数字化建设的几点思考
  • sqli-labs通关笔记-第21关 字符型Header-Cookie SQL注入(单引号括号闭合 base64编码绕过 手工注入+脚本注入两种方法)
  • Oracle 11g RAC数据库实例重启的两种方式
  • Linux权限机制:RUID/EUID/SUID与进程安全
  • 服务器之光:Nginx--核心配置详解及演练
  • 【AI论文】MiroMind-M1:通过情境感知多阶段策略优化实现数学推理的开源新进展
  • Golang语言基础—函数调用
  • Spring Cloud Gateway:微服务架构下的 API 网关详解
  • Java,八股,cv,算法——双非研0四修之路day16
  • PYTHON从入门到实践-16数据视图化展示
  • Docker的简单使用
  • 【C++】定义常量
  • 图片查重从设计到实现(5)Milvus可视化工具
  • 嵌入式硬件篇---zigbee无线串口通信问题
  • Python - 100天从新手到大师 - Day6
  • 【Redis】Linux 配置Redis