OCP复习 - 管理(10) - 回滚段

本文介绍了回滚段的基本概念及其在数据库中的作用,包括支持事务回滚、保持读一致性等。详细阐述了回滚段的不同类型、管理策略及如何通过SQL语句进行创建和调整。此外,还探讨了针对不同应用场景(如OLTP和OLAP)的回滚段规划策略。

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

回滚段的作用:

支持用户手动回滚事务,事务失败时自动回滚事务,保持并发会话的读一致性。

设置事务属性的语句:
SET TRANSACTION READ ONLY;
SET TRANSACTION SERIALIZABLE;
SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment

回滚段的类型:

SYSTEM, Non-SYSTEM(PUBLIC, PRIVATE),Deferred

回滚段管理策略:

回滚段会根据事务的需要自动增长、收缩,相关参数:MAXEXTENTS, OPTIMAL。

回滚段的创建、管理SQL语句:
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[TABLESPACE tablespace]
[STORAGE ([INITIAL integer[K|M]]
[NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]
)

ALTER ROLLBACK SEGMENT rollback_segment
[STORAGE ( [NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]
)
]

ALTER ROLLBACK SEGMENT rollback_segment SHRINK [ TO integer [ K|M ]];
ALTER ROLLBACK SEGMENT rollback_segment ONLINE;
ALTER ROLLBACK SEGMENT rollback_segment OFFLINE; 如果回滚段中仍然有事务,状态是PENDING OFFLINE。
DROP ROLLBACK SEGMENT rollback_segment;


回滚段的应用策略:
不同类型的应用需要规划不同的回滚段,OLTP需要大量的小的回滚段,每个回滚段配置4-10个transaction slot,OLAP需要少量大的回滚段。原因是Oracle对于每个事务需要在回滚段头进行写入操作,如果大量的事务使用同一个回滚段,会引起性能下降。
回滚段过小可能引起著名的SNAPSHOT TOO OLD错误,原因是事务要读取的快照已经被其他事务覆盖,解决的办法是增加MINEXTENTS,OPTIMAL,增加EXTENT的大小。

回滚段相关的数据字典视图:
dba_rollback_segs
V$ROLLSTAT
V$ROLLNAME

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值