首页 数据库 mysql教程 UNDO表空间与Undo的认识

UNDO表空间与Undo的认识

Jun 07, 2016 pm 03:22 PM
undo 作用 提供 空间

undo的三大作用:1.提供一致性读。2.回滚事务。3.实例恢复 查看表空间是属于temporary,undo还是permanent? select tablespace_name,contents,status from dba_tablespaces where tablespace_name like '%UNDO%'; 1.管理Undo表空间--创建新的Undo表空间CREATE

undo的三大作用: 1.提供一致性读。2.回滚事务。3.实例恢复 查看表空间是属于temporary,undo还是permanent? select tablespace_name,contents,status from dba_tablespaces where tablespace_name like '%UNDO%';
1.管理Undo表空间 --创建新的Undo表空间 CREATE UNDO TABLESPACE UNDOTBS2 datafile '/paic/g2bh8060/dev/xqd/oradata/hd02ntlf/undotbs2_01.dbf' size 500m autoextend on RETENTION NOGUARANTEE; 默认是NOGUARANTEE --为Undo表空间增加文件 alter tablespace undotbs1 add datafile '/u01/oracle/undo01.dbf' size 500m autoextend on; alter tablespace undotbs1 add datafile '+DATA_MIDG' size 500m autoextend on; 查询与更改undo表空间是否retention guarantee select tablespace_name,RETENTION from dba_tablespaces where tablespace_name like '%UNDO%'; ALTER DATABASE UNDOTBS01 RETENTION GUARANTEE|NOGUARANTEE; 更改系统默认表空间 show parameter undo_tablespace alter system set undo_tablespace=undotbs2; undo表空间删除 drop tablespace undotbs1 INCLUDING CONTENTS AND DATAFILES; undo表空间更名 alter tablespace undotbs2 rename to undotbs1; 重建undo表空间 1.因为延迟段创建的原因,可以先将参数取消; show parameter segment alter system set deferred_segment_creation=false; 2.创建undotemp表空间 3.alter system set undo_tablespace=undotemp;(如果延迟段创建特性启用了,会提示表空间不存在) 4.旧的undotbs1 drop掉。 旧的表空间现在是pending offline状态,等待offline,要等其上的事务都结束后才能真正offline。 ORA-30013: undo tablespace 'UNDOTBS1' is currently in use 5.新的rename成旧的。
2.认识UNDO undo相关参数: undo_management AUTO --9i以后我们undo_management都用auto undo_tablespace UNDOTBS2 --可以动态指定系统undo表空间 undo_retention 900 --单位秒,默认900 undo_retention是针对select操作的,比如闪回查询,我们一般希望能闪回查询3小时内的数据。 事务中的undo块都是active的,事务结束后的块是inactive的,inactive的undo块在过了undo_retention 指定的时间后,就会变成expired。 比如DB最长的查询也在5分钟内,那我undo_retention只要设成300,那么这个select会遭遇01555快照太旧的可能性就比较小,但不保证。 ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH; 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要指定一个UNDO 表空间。 如果设为manual,系统启动后使用rollback segment方式存储undo信息。如果系统没有指定undo_management,那么系统默认以manual方式启动,即使设置了auto方式的参数,这些参数将被忽略。 假如数据库中用RETENTIONGUARANTEE子句配置了保证保留撤销。如果撤销表空间太小不能满足使用它的所有活动事务,那么会发生以下情况: 1、如果撤销表空间用完85%,Oracle将发布一个自动表空间警告 2、当撤销表空间用完97%时,Oracle将发布一个自动表空间严重警告 3、所有DML语句将不允许,并且会接收到一个空间超出错误 4、DDL语句允许继续执行 所以PA数据库undo表空间都是NOGUARANTEE,无论生产还是测试库。 RETENTIONGUARANTEE的情况下,undo_retention秒数内的undo都不能被覆盖,所以如果expired与freed的块几乎没了,Undo表空间也不能自动扩展,就会报上面的错误。 undo_retention参数的作用,在RETENTIONGUARANTEE的情况下,可以作为是否保证undo块不被覆盖的分界线,而在没有设retention的情况下,例如PA的情况,就是作为是否被优先覆盖的分界线。所以此处只有两个优先级,在线的任何一边,都是随机随意地没优先级地覆盖的。 Undo表空间中已经分配给表空间的extend大小。 @tsfree 即 select d.tablespace_name, space "SUM_SPACE(M)", blocks sum_blocks, space - nvl(free_space, 0) "USED_SPACE(M)", round((1 - nvl(free_space, 0) / space) * 100, 2) "USED_RATE(%)", free_space "FREE_SPACE(M)" from (select tablespace_name, round(sum(bytes) / (1024 * 1024), 2) space, sum(blocks) blocks from dba_data_files group by tablespace_name) d, (select tablespace_name, round(sum(bytes) / (1024 * 1024), 2) free_space from dba_free_space group by tablespace_name) f where d.tablespace_name = f.tablespace_name(+) order by 1; 其中USED_SPACE(M)里面,都是已经分配给表空间使用的。里面有4钟状态的undo块。 undo块存在的四种状态 select tablespace_name,status,sum(bytes)/1024/1024 mb from dba_undo_extents group by tablespace_name,status; active:表示正在使用该undo的事务还没有commit或rollback UNEXPIRED(inactive):表示该undo上没有活动的事务,该状态的undo可以被其他事务覆盖。 expired:表示该undo块持续inactive的时间超过undo_retention所指定的时间 freed:表示该undo块内容是空的,从来没有被使用过。 一个事务申请Undo表空间: 1.如果undo表空间是可以自动扩展的,首先自动扩展。 2.如果没得扩展了,就找free的区用。 3.没有free的区了,就找expired的undo区用。 4.没有expired的,就找unexpired的,此时这些区还没过undo_retention时间,所以会导致闪回查询无法保证使用咯。 5.还是没有的话,报错,active的区肯定不会被使用的。 Retention Guarantee模式下,一个事务申请undo表空间只走上述的第1,2,3点。3点走完后也申请不到Undo空间就报错。也就是说undo_retention时间内的undo块一定不会被覆盖。
往数据库中做导数操作,批量DML而又长时间不能commit的操作的时候,要给Undo表空间加几个文件,并且开自动扩展,保持监控
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

触摸键盘在win11中的功能和用途 触摸键盘在win11中的功能和用途 Jan 03, 2024 pm 04:40 PM

我们在浏览win11设置的时候,可能发现其中有一个触摸键盘设置,但是我们屏幕也不支持触屏,那么这个win11触摸键盘到底有什么用呢,其实它就是屏幕键盘。win11触摸键盘的作用:1、win11触摸键盘其实就是“屏幕键盘”2、它可以模拟真实键盘,通过点击的方式来使用键盘。3、当我们没有键盘或是键盘坏了的时候,就可以使用它来打字。4、win11为触摸键盘提供了丰富的个性化选项。5、其中包括了各种颜色、主题,能够让用户自由切换喜欢的风格。6、点击左上角“齿轮”还能修改键盘布局、手写等输入方式。

nohup的作用及原理解析 nohup的作用及原理解析 Mar 25, 2024 pm 03:24 PM

nohup的作用及原理解析在Unix和类Unix操作系统中,nohup是一个常用的命令,用于在后台运行命令,即便用户退出当前会话或关闭终端窗口,命令仍然能够继续执行。在本文中,我们将详细解析nohup命令的作用和原理。一、nohup的作用后台运行命令:通过nohup命令,我们可以让需要长时间运行的命令在后台持续执行,而不受用户退出终端会话的影响。这在需要运行

蓝牙适配器的用途是什么? 蓝牙适配器的用途是什么? Feb 19, 2024 pm 05:22 PM

蓝牙适配器是干什么的随着科技的不断发展,无线通信技术也得到了快速的发展和普及。其中,蓝牙技术作为一种短距离无线通信技术,广泛地应用于各种设备之间的数据传输和连接。而蓝牙适配器则是作为支持蓝牙通信的重要设备,扮演着至关重要的角色。蓝牙适配器是一种能够将非蓝牙设备变为支持蓝牙通信的设备。它通过将无线信号转换为蓝牙信号,实现设备之间的无线连接和数据传输。蓝牙适配器

如何在 Ubuntu 上添加交换空间 22.04 LTS 如何在 Ubuntu 上添加交换空间 22.04 LTS Feb 20, 2024 am 11:12 AM

交换空间在Linux系统中扮演着重要角色,特别是在系统内存不足时。它充当着一个备用的内存存储空间,可以帮助系统平稳运行,即使在负载高的情况下也能保持稳定性。本文为您提供了在Ubuntu22.04LTS上添加交换空间的详细指南,以确保您的系统性能得到优化并能应对各种工作负载。了解交换空间交换空间提供虚拟内存,用于补充系统的物理RAM。当系统的RAM不足时,内核会将数据交换到磁盘,以防止内存不足和系统崩溃。Linux系统常用交换空间来处理这种情况。同时运行多个内存密集型应用程序处理非常大的文件或数据

理解Linux DTS的作用及用法 理解Linux DTS的作用及用法 Mar 01, 2024 am 10:42 AM

理解LinuxDTS的作用及用法在嵌入式Linux系统开发中,设备树(DeviceTree,简称DTS)是一种描述硬件设备及其在系统中的连接关系和属性的数据结构。设备树使得Linux内核能够在不同的硬件平台上灵活地运行,而无需对内核进行修改。在本文中,将介绍LinuxDTS的作用及用法,并提供具体的代码示例来帮助读者更好地理解。1.设备树的作用设备树

探究PHP中define函数的重要性与作用 探究PHP中define函数的重要性与作用 Mar 19, 2024 pm 12:12 PM

PHP中define函数的重要性与作用1.define函数的基本介绍在PHP中,define函数是用来定义常量的关键函数,常量在程序运行过程中不会改变其值。利用define函数定义的常量,在整个脚本中均可被访问,具有全局性。2.define函数的语法define函数的基本语法如下:define("常量名称","常量值&qu

深入了解Gunicorn的基本原理和功能 深入了解Gunicorn的基本原理和功能 Jan 03, 2024 am 08:41 AM

Gunicorn的基本概念和作用Gunicorn是一个用于在PythonWeb应用程序中运行WSGI服务器的工具。WSGI(Web服务器网关接口)是Python语言定义的一种规范,用于定义Web服务器与Web应用程序之间的通信接口。Gunicorn通过实现WSGI规范,使得PythonWeb应用程序可以被部署和运行在生产环境中。Gunicorn的作用是作

详解Java中volatile关键字的使用场景及其作用 详解Java中volatile关键字的使用场景及其作用 Jan 30, 2024 am 10:01 AM

Java中volatile关键字的作用及应用场景详解一、volatile关键字的作用在Java中,volatile关键字用于标识一个变量在多个线程之间可见,即保证可见性。具体来说,当一个变量被声明为volatile时,任何对该变量的修改都会立即被其他线程所知晓。二、volatile关键字的应用场景状态标志volatile关键字适用于一些状态标志的场景,例如一

See all articles