v$rollstat——记录各回滚段统计项!

回滚段概述:

回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。

回滚段的作用:

1、事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。

2、事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。

3、读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。

SQL> desc v$rollstat;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 USN                                                NUMBER					回退段号
 LATCH                                              NUMBER					
 EXTENTS                                            NUMBER					回退段中的区数
 RSSIZE                                             NUMBER					回退段以字节极的尺寸
 WRITES                                             NUMBER					写到回退段的字节数
 XACTS                                              NUMBER					活动的事务处理数
 GETS                                               NUMBER					标题获得的数目
 WAITS                                              NUMBER					标题等待的数目
 OPTSIZE                                            NUMBER					回退段的最佳尺寸
 HWMSIZE                                            NUMBER					回退段尺寸的高水位标记
 SHRINKS                                            NUMBER					回退段尺寸减少的倍数
 WRAPS                                              NUMBER					回退段缠绕的倍数
 EXTENDS                                            NUMBER					回退段段尺寸扩展的倍数
 AVESHRINK                                          NUMBER					平均收缩尺寸
 AVEACTIVE                                          NUMBER					活动区随时间平均的当前尺寸
 STATUS                                             VARCHAR2(15)		                回退段状态
 CUREXT                                             NUMBER					当前区
 CURBLK                                             NUMBER					当前块

首先以u1用户删除一张大表数据,构造一个回滚操作:

SQL> show user
USER 为 "U1"
SQL> delete from t;

已删除402344行。

SQL> rollback;

然后以sys用户查看回滚信息:

SQL> show user
USER 为 "SYS"
SQL> select n.name,s.rssize,s.xacts,s.status from v$rollname n, v$rollstat s WHERE n.usn = s.usn and s.xacts > 0;

NAME                               RSSIZE      XACTS STATUS
------------------------------ ---------- ---------- ---------------
_SYSSMU8$                       100786176          1 ONLINE
可以看见回滚段的大小为:100786176/1024/1024=96M。
SQL> select s.username, u.name from v$transaction t, v$rollstat r, v$rollname u, v$session s where s.taddr = t.addr and t.xidusn = r.usn and r.usn = u.usn order by s.username;

USERNAME                       NAME
------------------------------ ------------------------------
U1                             _SYSSMU8$
可以看见u1用户正在使用回滚段资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值