聊聊UNDO_RETENTION作用(下)

达梦数据库UNDO表空间膨胀太快?试试这3个参数调优技巧 本文针对达梦数据库UNDO表空间过快膨胀问题,深入解析了其管理机制,并提供了三个核心参数调优技巧。重点探讨了UNDO_RETENTION与UNDO_SPACE的平衡策略,以及表空间文件管理方法,帮助DBA有效控制空间增长,保障系统稳定运行。 阅读详情

上篇我们讨论了小undo表空间、不支持自动拓展情况下的Undo Retention失效场景。本篇我们看一下如果存在可拓展空间,Oracle还是会尽量保证时间间隔的。

 

5、小Undo空间可拓展实验

 

我们同样创建一个小表空间,但区别在于设置其可以进行空间拓展。

 

 

SQL> select sysdate from dual;

SYSDATE

--------------------

2013-10-16 9:27:02

 

SQL> select count(*) from t;

  COUNT(*)

----------

         0

 

SQL> select sysdate from dual;

SYSDATE

--------------------

2013-10-16 9:27:20

 

SQL> insert into t select * from dba_objects;

75256 rows inserted

 

SQL> commit;

Commit complete

 

 

修改表空间,此时工具表MMM大小为17万。

 

 

SQL> select count(*) from mmm;

 

  COUNT(*)

----------

171029

 

 

SQL> alter database datafile '/u01/app/oradata/ORA11G/datafile/o1_mf_undotbs2_95vsgpn7_.dbf' autoextend on;

 

Database altered

 

SQL> delete mmm;

171029 rows deleted

 

SQL> commit;

Commit complete

 

 

检查空间,我们发现undo表空间大小发生了变化。从原来的20M扩大到42M。

 

 

 

SQL> select file_name, AUTOEXTENSIBLE, BYTES/1024/1024 MB from dba_data_files where tablespace_name in ('UNDOTBS1','UNDOTBS2');

 

FILE_NAME                                AUTOEXTENSIBLE         MB

---------------------------------------- -------------- ----------

/u01/app/oradata/ORA11G/datafile/o1_mf_u YES                   105

ndotbs1_92t6zl6d_.dbf                                  

 

/u01/app/oradata/ORA11G/datafile/o1_mf_u YES                   42

ndotbs2_95vsgpn7_.dbf                                  

 

 

此时,我们是可以查找到retention范围内的数据。

 

 

SQL> select sysdate from dual;

 

SYSDATE

--------------------

2013-10-16 9:39:38

 

SQL> select count(*) from t as of timestamp to_timestamp('2013-10-16 9:27:20','yyyy-mm-dd hh24:mi:ss');

 

  COUNT(*)

----------

         0

 

 

在这个过程中,Oracle依然会遇到覆盖失效undo空间的问题。结合undo_retention参数,系统可以做到通过拓展Undo表空间来实现对原有undo的不覆盖现象。所以,Undo表空间容量从20M增长到现在的47M,同时undo_retention所设置的时间也得到保留。

 

综合上面的实验,我们可以判断出undo_retention参数本质上是一个advisor参数。我们通过参数时间的设置,告诉Oracle说我们希望维持一个多长时间的undo保留期间。针对这个期望,Oracle会去进行调节和空间拓展动作。这个过程是一个可选择的过程,如果现实条件存在限制,即使设置了retention期间,也难以保留。

 

那么,有没有强制保留的方法呢?如果确实存在业务要求需要前镜像留存,我们从10g开始就可以使用undo retention的guarntee机制来进行保护。

 

6、Undo Retention Guarntee

 

Undo Retention Guarntee是针对undo tablespace设置的一种保护机制。通常情况下,undo_retention设置的时间是一个非强依赖。通过设置undo表空间的guarntee属性,我们可以保证对应的undo空间不被覆盖回收。

 

实验数据准备。

 

 

SQL> insert into mmm select * from dba_objects;

75256 rows inserted

 

SQL> insert into mmm select * from mmm;

75256 rows inserted

 

SQL> insert into mmm select * from mmm;

150512 rows inserted

 

SQL> commit;

Commit complete

 

 

创建一个表空间,设置为guarntee。

 

 

SQL> create undo tablespace undotbs3 datafile size 10M autoextend off retention guarantee;

 

Tablespace created

 

SQL> select tablespace_name, contents, retention from dba_tablespaces where contents='UNDO';

 

TABLESPACE_NAME                CONTENTS  RETENTION

------------------------------ --------- -----------

UNDOTBS1                       UNDO      NOGUARANTEE

UNDOTBS2                       UNDO      NOGUARANTEE

UNDOTBS3                      UNDO      GUARANTEE

 

SQL> select file_name, AUTOEXTENSIBLE, BYTES/1024/1024 MB from dba_data_files where tablespace_name in ('UNDOTBS1','UNDOTBS2','UNDOTBS3');

 

FILE_NAME                                AUTOEXTENSIBLE         MB

---------------------------------------- -------------- ----------

/u01/app/oradata/ORA11G/datafile/o1_mf_u YES                   105

ndotbs1_92t6zl6d_.dbf                                  

 

/u01/app/oradata/ORA11G/datafile/o1_mf_u YES               44.9375

ndotbs2_95vsgpn7_.dbf                                  

 

/u01/app/oradata/ORA11G/datafile/o1_mf_u NO                    10

ndotbs3_95vw1v91_.dbf                                  

 

 

修改参数,启用undotbs3表空间。

 

 

SQL> alter system set undo_tablespace=undotbs3;

System altered

 

SQL> show parameter undo;

 

NAME                                 TYPE        VALUE

--------------------------------- ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     300

undo_tablespace                     string      UNDOTBS3

 

 

下面进行空间实验。

 

 

SQL> select sysdate from dual;

 

SYSDATE

--------------------

2013-10-16 9:51:56

 

SQL> select count(*) from mmm;

 

  COUNT(*)

----------

    301024

 

SQL> select count(*) from t;

 

  COUNT(*)

----------

     75256

 

SQL> delete t where rownum<10;

 

9 rows deleted

 

SQL> commit;

 

Commit complete

 

SQL> select count(*) from t;

 

  COUNT(*)

----------

     75247

 

 

此时我们发现,如果发现可能会覆盖在undo_retention期间数据的语句,Oracle会直接拒绝操作。

 

 

SQL> delete mmm;

delete mmm

 

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS3'中)

 

 

SQL> alter tablespace undotbs3 retention noguarantee;

Tablespace altered

 

SQL> alter tablespace undotbs3 retention guarantee;

alter tablespace undotbs3 retention guarantee

 

ORA-30036: 无法按 8 扩展段 (在还原表空间 'UNDOTBS3'中)

 

 

7、结论

 

在Oracle Undo机制中,undo_retention是一个非常不容易理解的参数项。简单的说,undo_retention就是用户使用Oracle过程中,对flashback和一致读的基本要求期间。设置之后,Oracle会根据自动undo管理的原则进行调节,进行空间拓展,来适应实现用户的期间要求。

 

所谓“巧妇难为无米之炊”,undo_retention是用户的期望。Oracle在进行调节过程中,会根据实际的业务频繁度和数量量、以及undo表空间设置情况进行综合评估。就是说,虽然用户设置了undo_retention的期望,在很多情况下也是不能达到的。

 

如果业务场景中真正需要进行retention period的保留,可以使用undo表空间的guarantee方法。一旦设置这个参数开关,undo_retention就成为一个强依赖参数。Oracle在这种情况下,宁可拒绝SQL DML操作,也不会允许将undo数据前镜像覆盖的情况发生。

5步轻松恢复!Oracle 11g误删数据后如何快速找回? 误删数据是指在数据库操作过程中,由于操作不当或其他原因导致的重要数据被意外删除。这种情况在日常数据库管理中时有发生,尤其是在执行DELETE操作时。通过本文的详细介绍,我们学会了如何在 Oracle 11g 中使用闪回查询、闪回表、回收站、RMAN 和 LogMiner 来恢复误删的数据。希望这篇文章能帮助你在数据管理方面更加得心应手,让你的工作变得更加轻松愉快!😄如果你有任何问题或建议,欢迎在评论区留言交流!😊。 阅读详情

相关推荐

Ubuntu运行vmware时报错Vmware Unable to install all modules!Use shipped Linux kernel AIO access library解决。

Ubuntu运行vmware时报错Vmware Unable to install all modules! vmware --version 提示下面内容: [AppLoader] Use shipped Linux kernel AIO access library. An up-to-date "libaio" or "libaio1" package from your system is preferred. VMware Workstation 16.1.2 build-17966106

wto882dim的博客 2848

oracle rac修改参数sid,RAC环境修改undo_rentention需要谨慎

RAC环境修改undo_rentention需要谨慎在RAC环境中,修改某些数据库参数需要谨慎。有客户遇到了这样的问题,在RAC环境下修改undo_retention参数,使用如下命令:alter system set undo_retention=18000 sid='*';这条命令直接导致了RAC的其他节点挂起,Oracle记录了一个相关Bug,Bug号为:4220405其Workaround...

weixin_42515392的博客 1015

华为eNSP与VMware虚拟机联动实战:从零搭建仿真网络环境

本文详细介绍了如何从零开始搭建华为eNSP与VMware虚拟机的联动仿真网络环境。通过环境准备、网络适配器配置、eNSP与VMware网络集成、安全策略与NAT配置等步骤,帮助读者掌握构建企业级网络实验场景的关键技术。这种组合特别适合网络工程师进阶训练和华为认证考试准备,实现低成本、高灵活性的网络仿真实验。

weixin_30415113的博客 504

oracle修改默认的undo_retention参数设置

查看当时的数据库参数undo_retention设置,发现这个参数被在10g中缺省的被设置为900秒,这个时间长度是不足够的。 马上将这个参数修改为10800,3个小时: ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH;记得以前一度这个参数的缺省值被设为10800,可是随之而来的是UNDO表空间的过分扩展,难以回收,Oracle在不同版本中,也

瑺圊樹的专栏 4122

手把手教你用Python实现ITRS与GCRS坐标转换(附完整代码)

本文详细介绍了如何使用Python的Astropy库实现ITRS与GCRS坐标转换。文章从环境配置、坐标对象构建入手,深入解析了transform_to方法背后的转换矩阵与地球定向参数管理,并通过卫星地面轨迹计算实战案例,帮助开发者掌握高精度空间坐标转换的核心技术与工程实践。

weixin_28335283的博客 80

SAP SD跨公司销售IDOC自动记账配置实战指南

本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。

weixin_29284885的博客 770

ORA-01555错误详解

ORA-01555错误详解 ORA-01555(快照过旧)问题让很多人感到十分头痛。最近我们的生产系统上也报出了ORA-01555错误。就结合这次案例将ORA-1555问题作个案例分析,并浅析产生原因和各种解决办法。 如果要了解1555错误产生的原因,就需要知道ORACLE的两个特性:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)。此外...

小白编程 1555

AB相增量式编码器以及STM32定时器编码器模式测速/测距离(HAL库)

编码器(Encoder)是一种用于测量旋转运动或位置的设备。编码器通常与定时器模块一起使用,以便在微控制器中获取和计算旋转的脉冲数量,从而确定物体的运动方向和距离。编码器在许多应用中都很有用,例如机器人运动控制、电机位置反馈和位置传感。STM32微控制器提供了多种类型的编码器支持,其中一种常见的编码器类型是增量编码器。增量编码器基于两个脉冲信号通道,通常称为A相和B相。当旋转发生时,这两个信号通道的相位关系会发生变化,从而可以计算出旋转方向和旋转的步数。

嵌入式软件工程师的博客 1万+

undo_retention的优化

在生产环境中,尽量减少ORA-1555的出现, 应该将数据库的undo_retention调整到一个合适的值 优化的依据: You can choose to allocate a specific size for the UNDO tablespace and then set the UNDO_RETENTION parameter to an optimal value according...

lyp13696402570的博客 657

统信UOS系统盘扩容保姆级教程:用GParten-分区编辑器5分钟搞定

本文提供统信UOS系统盘扩容的详细图形化教程。针对系统盘空间不足问题,重点介绍如何使用系统自带的GParten-分区编辑器,在5-10分钟内安全、直观地完成扩容操作,无需记忆复杂命令,适合所有用户快速解决存储空间告急的困扰。

e3f4g5的博客 642

innovus:NRDB-2276 special net route layer与NanoRouteMode route layer冲突问题解决方法

NanoRouteMode中设置绕线层次2-6,但是被动到的special net有8-11的preferred route layer,这个层次可能是create_route_type+set_ccopt_property -net_type 定义的。二者绕线层次范围有冲突,导致在调整过这条net后再绕线就会提示失败。然后再下route_design 等route命令去绕别的net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1103

聊聊UNDO_RETENTION作用(上)

在Oracle的Undo机制中,参数Undo_Retention扮演了“混淆者”的角色。论坛里面也有很多朋友对这个参数含义不是非常清楚。本篇我们就来讨论一下这个这个参数的含义和作用。   1、从Undo说起   Undo或者说rollback segment机制是Oracle早期奠定行业地位的核心技术之一。Undo机制的提出,源自于Oracle提出的“多版本一致读”特性。在Oracle中,

mickeyty的博客 578

手把手教你学Simulink--基于Simulink的高增益DC-DC变换器仿真建模

特点高电压增益:可以在不使用变压器的情况下实现较大的电压升压比。适用于低电压源:如太阳能电池板、燃料电池等提供的低压直流电源。效率问题:设计时需特别注意提高效率,减少能量损失。挑战电路复杂性:通常涉及多个电感和电容,以及复杂的开关模式。元件选择:合适的元件参数对于达到理想性能至关重要。控制策略:确保高效稳定运行的同时,适应负载变化。首先明确要模拟的任务内容。实现特定的电压增益比(例如从24V升至380V)。根据预期的输入输出电压确定合适的电路拓扑和元件值。

MHD0815的博客 173

oracle中noguarantee,聊聊UNDO_RETENTION作用(修改guarantee)

oracle10g中,针对dba_tablespace,加了其中一个额外列是retention.回忆一下Oracle 10g之前,在自动Undo管理的模式下,我们都知道undo_retention参数的作用是用来控制当transaction被commit之后,undo信息的保留时间。这些undo信息可以用来构造consistent read以及用于一系列的闪回恢复,而且足够的undo信息还可以减少...

weixin_39562579的博客 761

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

聊聊UNDO_RETENTION作用(修改guarantee)

oracle10g中,针对dba_tablespace,加了其中一个额外列是retention. 回忆一下Oracle 10g之前,在自动Undo管理的模式下,我们都知道undo_retention参数的作用是用来控...

cujiupan7597的博客 367

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Oracle体系结构初探:聊聊UNDO

贯穿Oracle数据库始终的一个名词是事务,UNDO数据即为事务行为的一个记录。进一步说UNDO数据是 数据每次更改的前镜像记录,它至少会保留到事务结束。

但行好事,莫问前程 2253

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

052-237(新增70题2018)

Users in your PROD database complain about the slow response of the transactions. While investigating the reason, you find that the transactions are waiting for the undo segments to be available,...

dieqiao8331的博客 140

扒开Oracle事务层的底裤:SCN、Undo、ITL一次讲透

做DBA这些年,被问得最多的问题之一就是:"Oracle的事务到底是怎么运转的?"网上讲事务ACID的文章一抓一大把,但真正深入到内核层面的却不多。最近翻出了Oracle原厂COE培训的一份资料——Transaction Layer Internals,结合自己这些年在生产环境摸爬滚打的经验,跟大家聊聊Oracle事务层那些事儿。这份资料虽然是2011年的,但底层逻辑到今天都没变。我当年第一次看的时候,很多概念也是云里雾里,后来在实际故障处理中才真正理解。今天就掰开揉碎了讲,尽量让大家看完就能用。

weixin_63349582的博客 403

达梦数据库闪回功能实战指南:从配置到误操作恢复

本文详细介绍了达梦数据库闪回功能的实战应用,从核心参数配置到各类误操作恢复场景。重点讲解了如何开启闪回开关、设置UNDO_RETENTION保留时间,并演示了闪回查询、表级闪回以及利用回收站恢复被DROP或TRUNCATE表的具体操作步骤与避坑指南,为DBA提供了一套高效的数据安全恢复方案。

weixin_29304021的博客 249

聊聊闪回版本查询Flashback Version Query

“忘记备份”是几年前看一位行业前辈的经验谈中让笔者记忆深刻的工作军规。对DBA而言,备份通常指的是“Media Backup”,在Oracle世界中就是各种冷备份文件、备份集合和归档日志。 工作...

ciqu9915的博客 210

读书笔记:你的Oracle数据库为什么总是“健忘“?揭秘撤销空间不足的真相

本文探讨了Oracle数据库常见的"快照过旧"错误(ORA-01555)的成因及解决方案。作者通过生动的比喻解释撤销空间不足问题:数据库如同文员处理文件,当撤销空间不足时无法恢复旧数据。文章提供了两种解决方案:推荐使用自动扩展的撤销表空间,或手动计算所需空间大小后创建。同时给出实用技巧,如索引查询注意事项、批量操作后的统计信息更新建议,以及监控撤销空间使用情况的SQL语句。最后强调预防该错误的关键在于配置足够的撤销表空间、设置合理的保留时间及优化查询方式。文章源于作者学习《Expert

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 951

读书笔记:解密Oracle的“快照过期“错误:数据库的“记忆“不够用了

这篇文章探讨了Oracle数据库中的ORA-01555"快照过旧"错误。文章指出该错误不会损坏数据,但会中断查询运行。作者分析了三个主要原因:撤销空间不足、查询中持续提交修改、批量更新后未及时维护,并重点解释了Oracle读取一致性机制的原理。针对不同情况,作者提供了四种解决方案:扩展撤销空间、优化固定空间配置、加速查询执行以及及时维护数据库。最后强调合理规划数据库操作以避免"记忆不足"问题,并附上作者的专业背景信息。文章内容通俗易懂,适合Oracle数据库管理员和开

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 539
上一篇: 聊聊UNDO_RETENTION作用(上)
下一篇: ocp—051试题答案解析
mickey_hmq
博客等级 码龄15年 6粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值