数据库管理-第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.mzph.cn/web/1529.shtml

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

相关文章

MySQL中explain的用法

执行结果各字段的含义 EXPLAIN SQL语句 如: EXPLAIN SELECT * FROM test 执行结果: 列名描述id在一个大的查询语句中每个SELECT关键字都对应一个 唯一的idselect_typeSELECT关键字对应的那个查询的类型table表名partitions匹配的分区信息type针对单表…

P2P面试题

1)描述一下你的项目流程以及你在项目中的职责? 一个借款产品的发布,投资人购买,借款人还款的一个业务流程,我主要负责测注册,登录,投资理财这三个模块 2)你是怎么测试投资模块的&am…

HttpServlet,ServletContext,Listener它仨的故事

1.HttpServlet。 听起来是不是感觉像是个上古词汇,是不是没有阅读下去的兴趣了?Tomcat知道吧,它就是一个servlet容器,当用户向服务器发送一个HTTP请求时,Servlet容器(如Tomcat)会根据其配置找到…

overflow(溢出)4个属性值,水平/垂直溢出,文字超出显示省略号的详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

解析 IP(IPv4)地址

IPv 4 地址 一、组成二、IPv4 的分类三、子网掩码四、特殊的地址五、私有 IP 地址六、全局 IP 地址七、私有 IP 地址和全局 IP 地址的关系八、广播地址九、网络地址十、IP 地址个数计算十一、查看电脑的 IP 地址(window)十二、手动设置电脑的 IP 地址 为…

华为Pura 70系列,一种关于世界之美的可能

1874年,莫奈创作了《印象日出》的油画,在艺术界掀起了一场革命。当时的主流艺术,是追求细节写实,追求场面宏大的学院派。他们称莫奈等人是“印象派”,认为莫奈的画追求光影表达,追求描绘抽象的意境&#xf…

DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言:还没有整理,后续有时间再整理,目前只是个人思路,文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”,但是用apifox等非浏览器的工具发起请求时没有加“/”,而且还不是get请求,那么这…

天才简史——Sylvain Calinon

一、研究方向 learning from demonstration(LfD)领域的专家,机器人红宝书(Springer handbook of robotics)Robot programming by demonstration章节的合作者。主要研究兴趣包括: 机器人学习、最优控制、几…

[数据结构]——排序——插入排序

目录 ​编辑 1 .插入排序 1.基本思想: 2.直接插入排序: ​编辑 1.代码实现 2.直接插入排序的特性总结: 3.希尔排序( 缩小增量排序 ) 1.预排序 2.预排序代码 3.希尔排序代码 4.希尔排序的特性总结: 1 .插入排序 1.基本思…

从头开始构建自己的 GPT 大型语言模型

图片来源: Tatev Aslanyan 一、说明 我们将使用 PyTorch 从头开始构建生成式 AI、大型语言模型——包括嵌入、位置编码、多头自注意、残差连接、层归一化,Baby GPT 是一个探索性项目,旨在逐步构建类似 GPT 的语言模型。在这个项目中&#xff…

Linux 文件描述符

1、文件描述符 程序和进程的区别: 1、test.c:是一个程序,只占用磁盘空间,不占用内存空间 2、可执行文件 test:是一个程序,只占用磁盘空间,不占用内存空间 3、启动 可执行文件 test&#xff…

强固型工业电脑在码头智能化,龙门吊/流机车载电脑的行业应用

码头智能化行业应用 对码头运营来说,如何优化集装箱从船上到码头堆场到出厂区的各个流程以及达到提高效率。 降低成本的目的,是码头营运获利最重要的议题。为了让集装箱码头客户能够安心使用TOS系统来调度指挥码头上各种吊车、叉车、拖车和人员&#xf…

第一届 _帕鲁杯_ - CTF挑战赛

Mis 签到 题目附件: 27880 30693 25915 21892 38450 23454 39564 23460 21457 36865 112 108 98 99 116 102 33719 21462 21069 27573 102 108 97 103 20851 27880 79 110 101 45 70 111 120 23433 20840 22242 38431 22238 22797 112 108 98 99 116 102 33719 2…

matplotlib从起点出发(15)_Tutorial_15_blitting

0 位图传输技术与快速渲染 Blitting,即位图传输、块传输技术是栅格图形化中的标准技术。在Matplotlib的上下文中,该技术可用于(大幅度)提高交互式图形的性能。例如,动画和小部件模块在内部使用位图传输。在这里&#…

揭开ChatGPT面纱(3):使用OpenAI进行文本情感分析(embeddings接口)

文章目录 一、embeddings接口解析二、代码实现1.数据集dataset.csv2.代码3.运行结果 openai版本1.6.1 本系列博客源码仓库:gitlab,本博客对应文件夹03 在这一篇博客中我将使用OpenAI的embeddings接口判断21条服装评价是否是好评。 首先来看实现思路&am…

Llama3新一代 Llama模型

最近,Meta 发布了 Llama3 模型,从发布的数据来看,性能已经超越了 Gemini 1.5 和 Claud 3。 Llama 官网说,他们未来是要支持多语言和多模态的,希望那天赶紧到来。 未来 Llama3还将推出一个 400B大模型,目前…

计算机网络——数据链路层(介质访问控制)

计算机网络——数据链路层(介质访问控制) 介质访问控制静态划分信道动态划分信道ALOHA协议纯ALOHA(Pure ALOHA)原理特点 分槽ALOHA(Slotted ALOHA)原理特点 CSMA协议工作流程特点 CSMA-CD 协议工作原理主要…

JVM虚拟机(十二)ParallelGC、CMS、G1垃圾收集器的 GC 日志解析

目录 一、如何开启 GC 日志?二、GC 日志分析2.1 PSPO 日志分析2.2 ParNewCMS 日志分析2.3 G1 日志分析 三、GC 发生的原因3.1 Allocation Failure:新生代空间不足,触发 Minor GC3.2 Metadata GC Threshold:元数据(方法…

【数据结构|C语言版】算法效率和复杂度分析

前言1. 算法效率2. 大O的渐进表示法3. 时间复杂度3.1 时间复杂度概念3.2 时间复杂度计算举例 4. 空间复杂度4.1 空间复杂度的概念4.2 空间复杂度计算举例 5. 常见复杂度对比结语 ↓ 个人主页:C_GUIQU 个人专栏:【数据结构(C语言版&#xff09…

Kafka源码分析(四) - Server端-请求处理框架

系列文章目录 Kafka源码分析-目录 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块,提供了服务端NIO通信能力基础。 有4个核心类:…