数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)

数据库管理171期 2024-04-18

  • 数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)
    • 1 基本概念
    • 2 用处
    • 3 注意事项
    • 总结

数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
国内某科技公司 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

突然发现,正儿八经的继续写系列的上一篇文章已经是8天前了,罪过罪过啊,今天趁着在机场等飞机的时间,写一篇与Oracle相关很基础的技术文章,回头再写写UNDO。

1 基本概念

Oracle数据库创建并管理用于回滚或UNDO对数据库的更改的信息。此类信息包括事务行为的记录,主要是在事务被提交之前。这些记录统称为UNDO。
REDO与UNDO:

  • REDO LOG记录的是事务的前滚信息(即对数据的操作记录),记录在Online Redo Log中,并根据数据库配置转储至归档指定目录的归档日志之中。
  • UNDO则记录与REDO相反的操作信息,这些信息被记录在数据库配置的实例对应的UNDO表空间之中。

REDO和UNDO可以比作为双胞胎,产生REDO的同时会记录UNDO数据。

2 用处

Oracle数据库使用UNDO数据来回滚事务、提供读一致性、用于数据恢复并提供类似于闪回查询的功能。
这里以一个UPDATE操作为例:
A表信息:

create table A (id number primary key,name number);
insert into A values (1,1);
commit;

image.png
这里提交一个UPDATE操作单不提交:

update A set name=name+1 where id=1;
select * from A;

image.png
这时候在内存中,涉及ID为1的这一行数据会被变更,同时产生REDO信息,用于在commit时将数据写入磁盘。同时也会产生UNDO信息,当这个事务还没有commit时,其他会话需要读相同数据时,通过与当前内存中数据与UNDO组合得到事务之前的数据:
image.png
当然如果事务回滚,也是使用UNDO数据来回退内存中的数据。但现在如果还有会话需要操作ID为1的这行数据呢:
image.png
这时候就会因为前一个事务的行锁,导致语句处于挂起的状态,在这种情况下,这个事务是不会产生任何REDO和UNDO信息,直至前一个事务提交或回滚。而如果两个会话提交,而需要通过闪回查询的方式查询第一个事务之前的数据,Oracle数据库就会通过当前内存中的对应数据信息加上两份UNDO信息组合出需要的数据。

3 注意事项

Oracle数据库自动确保活动事务正在使用的撤消数据在提交该事务之前永远不会被覆盖。数据库服务器维护并自动调整UNDO保留期,以确保Oracle Flashback功能的成功,并确保长时间运行的查询的读取一致性。创建数据库时,将启用UNDO保留期的自动调整。

  • UNDO_TABLESPACE
    对于Oracle数据库一个实例有且仅有一个UNDO表空间生效,从12.2开始配置local undo的情况下,每个PDB在每个实例上也有一个对应的UNDO表空间。
ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1' SID='DBAAS1';
  • UNDO_RETENTION
    配置数据库的UNDO保留时长,以秒为单位,这里需要注意,如果UNDO表空间容量不足且对应事务已完成,那么未达到配置保留时长的情况下,UNDO信息依然可能被清理;反之,如果UNDO表空间空间较大,超过UNDO保留时间的UNDO数据仍可能可使用。
ALTER SYSTEM SET UNDO_RETENTION=xxx;
  • UNDO GUARANTEE
    Oracle提供确保UNDO信息保留至设置保留时间的配置方式,但是需要注意,这一配置可能造成UNDO表空间容量不可控,且可能导致多DML操作失败,所以一般不做该项配置。
ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE;

关于其他相关配置就建议按照默认即可,无需修改。

总结

本期讲解了UNDO是如何确保Oracle的读一致,同时整理了一下UNDO相关注意事项。
老规矩,知道写了些啥。

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

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

相关文章

Linux安装Docker完整教程及配置阿里云镜像源

官网文档地址 安装方法 1、查看服务器内核版本 Docker要求CentOS系统的内核版本高于3.10 uname -r #通过 uname -r 命令查看你当前的内核版本2、首先卸载已安装的Docker(如果有) 2.1 确保yum包更新到最新 yum update2.2 清除原有的docker&#xff0c…

产品原型图概念

产品原型图概念 产品原型图作用 如下图: 产品原型图的三种分类 线框图 通过【线段色块文字】描述产品页面。优点:制作快速。 缺点:传递信息容易遗漏。 应用:早期方案讨论,需要快速输出的场景,团队配合…

9.列表渲染

列表渲染 我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法&#xff0c;其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名 <template><div><p v-for"item in names">{{ it…

【图论 单源最短路】100276. 最短路径中的边

本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图&#xff0c;节点编号为 0 到 n - 1 。图中总共有 m 条边&#xff0c;用二维数组 edges 表示&#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条…

golang本地缓存库之bigcache

1. 前言 上周工作之余逛github看到一个本地缓存库bigcache&#xff0c;这个是allegro公司开源的一个项目&#xff0c;主要是用于本地缓存使用&#xff0c;根据他们的博客说明&#xff0c;他们编写这个库最初的目的就是实现一个非常快速的缓存服务。 看了下bigcache这个库的源…

20240330-2-XGBoost面试题

XGBoost面试题 1. RF和GBDT的区别 相同点&#xff1a; 都是由多棵树组成&#xff0c;最终的结果都是由多棵树一起决定。 不同点&#xff1a; 集成学习&#xff1a; R F RF RF属于 B a g g i n g Bagging Bagging思想&#xff0c;而 G B D T GBDT GBDT是 B o o s t i n g Bo…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作 2.稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排…

el-menu 有一级二级三级菜单

效果如下 菜单代码如下 <el-menu:default-active"menuDefaultActive"class"el-menu-box":text-color"menuTextColor":active-text-color"menuActiveTextColor":unique-opened"true"><!-- 一级菜单 --><tem…

FastChat启动与部署通义千问大模型

FastChat简介 FastChat is an open platform for training, serving, and evaluating large language model based chatbots. FastChat powers Chatbot Arena, serving over 10 million chat requests for 70 LLMs.Chatbot Arena has collected over 500K human votes from sid…

React Ant Design 简单实现如何选中图片

效果&#xff1a; 代码&#xff1a; 定义的初始值和方法 const [selected, setSelected] useState(0); // 表示当前选中的图片索引const handleClick (index) > {if (selected index) {setSelected(null); // 如果点击的是已选中的图片&#xff0c;则取消选中状态} else…

边缘计算的优势

边缘计算的优势 边缘计算是一种在数据生成地点附近处理数据的技术&#xff0c;而非传统的将数据发送到远端数据中心或云进行处理。这种计算模式对于需要快速响应的场景特别有效&#xff0c;以下详述了边缘计算的核心优势。 1. 降低延迟 边缘计算通过在数据源近处处理数据&…

C# Solidworks二次开发:访问平面、曲面相关API详解

大家好&#xff0c;今天要介绍的是关于平面、曲面相关的API。 下面是相关的API: &#xff08;1&#xff09;第一个为ISurfacePlanarFeatureData&#xff0c;这个API的含义为允许访问平面表面特征&#xff0c;下面是官方的具体解释&#xff1a; 下面是官方使用的例子&#xff…