Oracle undo表空间

Oracle的Undo表空间在数据库操作中起到关键作用,包括确保读一致性、提供事务回滚和实现闪回功能。Undo_retention参数决定数据保留时间,可根据需求设置GUARANTEE或NOGUARANTEE。管理Undo表空间涉及创建、切换和删除,以满足数据库性能需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、当我们对数据库进行DML操作的时候,Oracle能通过undo为我们提供保存修改前数据的镜像。作用:

      1、提供读一致性

      例如用户A修改表TB1,在他进行操作前Oracle将TB1存放于undo中,在用户A修改的同时用户B若访问TB1,则访问

      的是undo中的TB1,其他访问TB1的用户也是如此,因此在用户A修改TB1的时候,undo保证了其他用户对TB1的

      读一致性。

      2、为事务提供回滚

      通过保留在undo中的镜像来恢复用户未提交的数据。当用户未提交数据,而此时数据库发生异常关闭,undo中保留的

      镜像会自动将数据回滚。

      3、提供闪回操作

      保留在undo中的镜像在事务结束后并未马上删除,而是保留了一段时间,在这段时间内用户即便已经提交了事务,

      仍可以通过 flashback 技术查询。

  

二、与undo表空间相关的参数:

undo_management:表示undo表空间的管理方式。(9i后的管理方式都是AUTO)

undo_retention:当事务提交后,相关的undo块可以保持多长时间不被覆盖,如图为900s。

undo_tablespace:undo表空间名。

通过下面sql可以查到当前的undo表空间它的retention的属性,该属性决定了undo中不活跃的undo段

是否按照undo_retention设置的值强制保留。GUARANTEE为强制保留,NOGURANTEE不保留。例如,

用户A修改了TB1,提交了大量数据,把undo表空间几乎撑满,按照undo_retention的设置是可以保留900s

覆盖,可如果用户又要修改数据时undo表空间不够用了,那么此时当retention的属性为GUARANTEE时,则

数据在undo中会强制保留900s,属性为NOGURANTEE时,undo会将数据清除为新的事务提供空间。

修改retention的属性:

alter tablespace UNDOTBS1 set retention guarantee;
alter tablespace UNDOTBS1 set retention noguarantee;

三、管理undo表空间

创建undo表空间UNDOTBS2,起始大小10Mb,开启自动扩展,一次扩展10Mb,最大2Gb:

create tablespace UNDOTBS2 datafile '/opt/app/oracle/oradata/orcl/undotbs02.dbf' 
size 10m autoextend on next 10m maxsize 2g;

通过 dba_data_files 查看创建的undo表空间:

切换当前使用的表空间为UNDOTBS2:

alter system set undo_tablespace=UNDOTBS2 scope=spfile

(重启数据库生效)

删除表空间:

drop tablespace UNDOTBS2 including contens and datafiles;

(并且删除数据文件,正在使用中的undo表空间无法删除)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值