oracle segment undo_(原)Oracle事务与Undo段的分配过程

我们都知道,Oracle在进行dml过程中,有重要的一步,即创建undo和redo。redo用于事务重演,而undo用于事务的回退。

创建undo,记录data block的前映像,需要在undo tablespace 中分配undo segment,来记录undo record。

最近一个oracle群里遇到一个事务引起undo tablespace的一个undo segment暴涨的情况,群里也进行了讨论,其中有Q友发出了oracle doc中关于dml事务

对undo segment 的分配和使用情况,如下:

群里讨论最后,我也来测试下这个过程及结论。

(1):准备工作

--创建一个新的undo tablespace,大小640k,数据文件禁止自动扩展,用于替换原来的undo tablespace.--之前已经测试过一个初始的undo segment 大小为:128*1024=128k,这里指定这个数据文件大小:128k*5 = 640k

create undo tablespace undotbs5 DATAFILE 'E:/oradata/undotbs5.dbf' SIZE 640k reuse autoextend off;--切换回滚段: alter system set undo_tablespace=undotbs5 scope=both;--把原来的undo 表空间离线,并删除(这里必须是原来的undo segment都要offline,才能删除undo tablespace)

altertablespace undotbs1 offline;drop tablespace undotbs1 including contents and datafiles;

(2):创建事务操作的测试表

create tabletest(

idnumber,

namevarchar2(20));begin

for i in 1..20loopinsert into test(id,name) values(i,'sina' ||i);endloop;commit;end;/

(3):查看目前undo tablespace的表空间及数据文件

--查看undo 表空间

col tablespace_name fora20

col statusfora10set lines 200

select tablespace_name,block_size,min_extents,max_extents,status,contents,extent_management,allocation_type from dba_tablespaces where contents='UNDO';

TABLESPACE_NAME BLOCK_SIZE MIN_EXTENTS MAX_EXTENTS STATUS CONTENTS EXTENT_MANAGEMENT ALLOCATION_TYPE-------------------- ---------- ----------- ----------- ---------- ------------------ -------------------- ------------------

UNDOTBS5 8192 1 2147483645ONLINE UNDO LOCAL SYSTEM--查看undo segment

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值