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

来源:互联网 发布:线切割图形及编程 编辑:程序博客网 时间:2024/06/05 15:30

回滚段的作用:

支持用户手动回滚事务,事务失败时自动回滚事务,保持并发会话的读一致性。

设置事务属性的语句:
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

 

原创粉丝点击