Oracle修改数据之后提交事务如何回滚?

在 MySQL 和 Oracle 数据库中,事务提交后都无法回滚。

在 MySQL 中,恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。当事务已经被提交之后,就无法再次回滚了。

在 Oracle 数据库中,当一个事务执行成功后,数据库会将事务所做的改变持久化到磁盘中,这样就保证数据的安全性和一致性。而且一旦事务提交,数据库将不再保存旧的数据。由于磁盘上的数据是不可逆的,因此一旦数据写入成功,就无法再次修改。


所以并不是回滚,但是当我在pl dev软件中执行了某些修改,删除等操作,并手动提交事务之后,现在想要恢复原本的数据怎么办呢?


Oracle提供了闪回的功能,可以查询出来数据,在你某个时间节点之前的数据。 比如这样:


SELECT * FROM IMAE_T AS OF TIMESTAMP TO_TIMESTAMP('20231008 08:00:00','YYYYMMDD HH24:MI:SS') 
WHERE IMAEENT = 88 AND IMAESITE = 'JHNL' AND IMAE001 LIKE '1004%' ORDER BY IMAE001

在这里插入图片描述
但是这个时间不能太长,否则会报错:

在这里插入图片描述
oracle数据库报错:ORA-01555: 快照过旧: 回退段号 10 (名称为 "_SYSSMU10_3550978943$") 过小

简单记录一下,可能就是因为写入的undo表空间的undo数据太大了,很有可能就是被固定周期内清除掉了这个数据。

ORA-01555 是 Oracle 数据库中的一个错误,表示在尝试读取数据库中的数据时,发现所需的回滚段已经回滚到一个不再包含所需数据版本的点。这通常发生在长时间运行的事务中,尤其是在使用读一致性的情况下。

错误消息中的一部分 “过小” 暗示了回滚段的大小问题。当 Oracle 查询引擎尝试使用回滚段的过时版本时,可能由于回滚段不足以支持所需的读一致性而导致这个错误。

一些可能导致这个错误的常见原因包括:

  1. 长时间运行的事务:如果有一个持续运行的事务,可能会导致回滚段变得很小,无法支持所需的读一致性。

  2. 回滚段配置问题:如果回滚段配置不合理,也可能导致空间不足。

  3. 大量的并发事务:如果有大量的并发事务,可能会导致回滚段被频繁使用,使其难以维护。

解决这个问题的方法可能包括:

  • 增加回滚段的大小或数量。
  • 优化事务,确保它们不会在长时间内持有锁或在数据库中运行。
  • 考虑使用更高级别的事务隔离级别,以减轻 ORA-01555 错误的发生。


当前还可以直接闪回一个表的数据到某个时间点。


-- 使用闪回将员工表恢复到1小时前的状态
FLASHBACK TABLE employees TO TIMESTAMP(sysdate-1/24); 

在上述代码中,我们使用FLASHBACK语句将名为employees的表恢复到1小时前的状态。这意味着如果在过去1小时内进行了任何更改,则这些更改将被撤消。

它可以在不进行备份的情况下将数据库回滚到过去的某个时间点。

以下是详细步骤:

  1. 启用闪回功能:首先,需要确保数据库已经启用了闪回功能。这包括启用自动撤销管理(Automatic Undo Management)和设置回滚段(Rollback Segment)的保留时间。
  2. 使用闪回查询(Flashback Query):闪回查询允许您查询过去某个时间点的数据。要使用闪回查询,请使用以下语法:
SELECT *  
FROM table_name AS OF timestamp  
TO TIMESTAMP('2016-08-01 01:00:00', 'YYYY-MM-DD HH24:MI:SS');  

这里的 timestamp 是一个时间戳,表示要回滚到的时间点。
3. 使用闪回表(Flashback Table):闪回表允许您将当前表恢复到过去的某个状态。要启用闪回表,请使用以下语法:

ALTER TABLE table_name ENABLE ROW MOVEMENT;  
  1. 使用闪回数据库(Flashback Database):闪回数据库允许您将整个数据库回滚到过去的某个时间点。这在需要恢复整个数据库的情况下非常有用。要使用闪回数据库,请使用以下语法:
FLASHBACK DATABASE TO TIMESTAMP('2016-08-01 01:00:00', 'YYYY-MM-DD HH24:MI:SS');  

需要注意的是,使用闪回功能可能会影响数据库的性能,因此建议谨慎使用。另外,闪回功能并不能替代备份,因此在日常维护中,还需要定期对数据库进行备份。


但是我的只是更改了几千条数据,并不是想要去动这个表的几万条数据。是有筛选条件的闪回。

所以不能使用整个表的闪回功能。

最终选择了手动去更新。

  1. 首先通过闪回筛选条件查出来变更前的数量单子
  2. 拷贝出来修改前的字段
  3. 查询sql语句 然后for update 直接进行拷贝粘贴
  4. 最后提交事务

这就是我通过闪回功能回滚数据的一次操作。

ok,我已经讲完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka广播消费组停机后未删除优化

背景 kafka广播消息的时候为了保证groupId不重复,再创建的时间采用前缀时间戳的形式,这样可以保证每次启动的时候是创建的新的,但是 会出现一个问题:就是每次停机或者重启都会新建一个应用实例,关闭应用后并不会删除…

Bun v1.0.3 发布,Zig 编写的 JavaScript 运行时

导读Bun 发布了其最新版本 v1.0.3,这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题,还引入了一系列令人期待的新功能。 首先,Bun 在这个版本中增加了对 TypeScript 的 emitDecora…

Java架构师主流架构设计模式

目录 1 主流架构设计模式1.1 分层架构模式1.1.1 分层架构的一些常见原则1.1.2 分层的单向依赖原则1.1.3 无循环依赖的原则1.1.4 避免跨层通信的原则1.2 微服务架构模式1.3 基于事件的架构模式2 整洁架构3 六边形架构4 微内核架构模式5 基于空间的架构模式6 道过滤器模式和代理模…

31 数据分析(中)numpy介绍

文章目录 工具excelTableauPower Queryjupytermatplotlibnumpy安装导入包快速掌握(bushi)array和list的相互转化 np的range多维数组的属性array的改变形状array升降维度array内元素的类型数和array的运算array之间的加减法认识轴切片条件与逻辑修改值app…

XPS测试仪器-科学指南针

在做 X 射线光电子能谱(XPS)测试时,科学指南针检测平台工作人员在与很多同学沟通中了解到,好多同学仅仅是通过文献或者师兄师姐的推荐对XPS测试有了解,但是对于其测试仪器还属于小白阶段,针对此,科学指南针检测平台团队…

练[HarekazeCTF2019]encode_and_encode

[HarekazeCTF2019]encode_and_encode 文章目录 [HarekazeCTF2019]encode_and_encode掌握知识解题思路代码分析 关键paylaod 掌握知识 ​ JSON对Unicode字符的解析转义,json格式的构建,代码审计,php伪协议的利用,file_get_content…

ELK集群 日志中心集群、kafka、logstash

ES:用来日志存储 Logstash:用来日志的搜集,进行日志格式转换并且传送给别人(转发) Kibana:主要用于日志的展示和分析 kafka Filebeat:搜集文件数据 es-1 本地解析 vi /etc/hosts scp /etc/hosts es-2:/etc/hosts scp /etc…

px4仿真实现无人机自主飞行

一,确定消息类型 无人机通过即在电脑是现自主飞行:思路如下。 通过Mavros功能包,将ROS消息转换为Mavlink消息。实现对无人机的控制。 几种消息之间的关系如下: 对于ROS数据,就是我们机载电脑执行ROS系统的数据。 对于Mavros消息,就是Mavros功能包内部的消息。查询网站…

Maven 环境配置

Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。 系统要求 项目 要求 JDK Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上 内存 没有最低要求 磁盘 Maven 自身安装需要大约 10 MB 空间…

振弦采集仪应用于隧道安全监测

振弦采集仪应用于隧道安全监测 振弦采集仪是当今必不可少的现代隧道安全监测工具。该设备广泛应用于隧道内部各种安全参数的实时监测,包括但不限于隧道变形、裂缝、压力、温度等。本文详细介绍了振弦采集仪在隧道安全监测中的应用。 首先,我们来了解一下…

STM32使用HAL库驱动DS3231

1、STM32通讯口配置 启动IIC,默认配置即可。 2、头文件 #ifndef __DS3231_H #define __DS3231_H#include "main.h"#define DS3231_COM_PORT hi2c1 /*通讯端口*//**************************** defines *******************************/ #define DS3231…

算法题:摆动序列(贪心算法解决序列问题)

这道题是一道贪心算法题,如果前两个数是递增,则后面要递减,如果不符合则往后遍历,直到找到符合的。(完整题目附在了最后) 代码如下: class Solution(object):def wiggleMaxLength(self, nums):…

前后端分离计算机毕设项目之基于SpringBoot的旅游网站的设计与实现《内含源码+文档+部署教程》

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

git介绍和安装、(git,github,gitlab,gitee介绍)、git工作流程、git常用命令、git忽略文件

1 git介绍和安装 2 git,github,gitlab,gitee介绍 3 git工作流程 4 git常用命令 5 git忽略文件 1 git介绍和安装 首页功能写完了---》正常应该提交到版本仓库---》大家都能看到这个---》 运维应该把现在这个项目部署到测试环境中---》测试…

2023年中国汽车后市场行业研究报告

第一章 行业概况 1.1 定义 汽车后市场行业在中国的快速崛起,反映了汽车产业链的完善和消费者需求的多样化。这个行业涵盖了汽车销售后,围绕汽车使用过程中涌现的各类服务和交易活动。它不仅为消费者提供了汽车使用过程中所需的全方位服务,也…

【C刷题】day4

一、选择题 1、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( ) A: n0;while(chgetchar()!\n)n; B: n0;while(getchar()!\n)n; C: for(n0;getchar()!\n…

C语言中文网 - Shell脚本 - 4

第1章 Shell基础(开胃菜) 4. 进入Shell的两种方式 在 Linux 发展的早期,唯一能用的工具就是 Shell,Linux 用户都是在 Shell 中输入文本命令,并查看文本输出;如果有必要的话,Shell 也能显示一些…

计算机毕业设计选什么题目好?springboot 社区流浪动物救助领养系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

短视频视频号矩阵系统源码独立部署开发对接

一、多账号矩阵管理功能(基于api接口开发与没有官方接口开发的区别) 基于API接口开发,可以通过调用官方提供的接口获取账号信息、创建新账号、更新账号设置等操作,实现自动化的账号管理绑定授权,通过相关的接口开发绑定…

如何在 Spring Boot 中进行文件上传

在 Spring Boot 中进行文件上传 文件上传是Web应用程序中常见的功能之一,它允许用户将文件从客户端上传到服务器。Spring Boot提供了便捷的方式来处理文件上传,并且整合了Spring框架的强大功能,使文件上传变得相对简单。本文将介绍如何在Spr…