v$rollstat——记录各回滚段统计项!
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
- 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$
评论暂时关闭