`

回滚段

阅读更多
回滚段:存放修改之前的值(包括位置).头部包含正在使用回滚段事务的信息.一个事务只能用一个回滚段,一个回滚段可以存放多个事务.

事务回滚:使用事务,修改前的值(前影像)存放在回滚段.当rollback,利用前影像恢复到原值.

事务恢复:事务处理例程失败,回滚段信息保存在重做日志,oracle下次打开数据库利用回滚恢复未提交数据.

读一致性.1)自己读,其他会话修改 . 2)自己改,其他会话读. oracle执行select,若有改变,利用前影像构造读一致性视图.(利用系统改变号scn,前于当前scn的未提交数据不被该语句处理).

锁:
oracle提供sql语句的读一致.
set transaction read only;--
set transaction serializable;--

系统回滚段:只用于存储系统表空间的前影像;
非系统回滚段:至少一个,存放非系统表空间前影像,包括
private:应在参数文件的 rollback segments列出,以在例程启动时使其自动online;
ROLLBACK_SEGMENT=(rbs01,rbs02)
public:一般在ops(oracle并行服务器出现),在例程启动时使其自动online;
defered回滚段:表空间offline时自动创建


回滚段分配:分配最少事务的回滚段
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment;--指定
事务以顺序,循环方式使用回滚段的区(extends);
同一个区可有多个事务,一个块只能有一个事务;
事务开始使用一个区,称翻转(wrap)
当一个区空闲或非活动(unactive),可再使用
当下一区active,事务为回滚段分配一个新区(扩展)

OPTIMAL参数指明回滚段空闲时收缩到的位置
回滚段应创建在一个特定的回滚段表空间内
CREATE ROLLBACK SEGMENT rbs01
  TABLESPACE rbs
  STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 10
       MAXEXTENTS 500 OPTIMAL 1000K);
ALTER ROLLBACK SEGMENT rollback_segment ONLINE;--刚创建时offline
ALTER ROLLBACK SEGMENT rbs01 STORAGE (optimal 1000);--修改
ALTER ROLLBACK SEGMENT rollback_segment SHRINK [TO integer [K|M]];--手动回收

DBA_ROLLBACK_SEGS -------
--数据字典
--统计信息
SELECT n.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
    FROM v$rollname n,v$rollstat s
    WHERE n.usn=s.usn;
--活动项
SELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk
    FROM v$session s,v$transaction t
    WHERE s.saddr=t.ses_addr;

--数量规划
1.OLPT系统,大量小事务 ,一个回滚段4个事务,不超过10个
2.批处理. 少的大事务,一个回滚段一个事务

--重建回滚段,比较弱的方式
ALTER ROLLBACK SEGMENT R01 OFFLINE;
DROP ROLLBACK SEGMENT R01;  --删除segment
alter tablespace rbs offline;
drop tablespace rbs;       
Create TABLESPACE "RBS" DATAFILE --重建表空间
'/dev/rdrd/rbs01.ora' SIZE 500M,
'/dev/rdrd/rbs02.ora' SIZE 500M;
CREATE ROLLBACK SEGMENT "R01" TABLESPACE "RBS" --重建segment 每个250M,即是表空间/4
STORAGE ( INITIAL 200M NEXT 2M OPTIMAL 250M MINEXTENTS 2 MAXEXTENTS 25); --INITIAL+NEXT*MAXEXTENTS
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics