楼主: biti_rainy

[精华] 关于回滚段的探讨(推出第一篇文章)

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
91#
发表于 2003-11-14 22:59 | 只看该作者
谢谢biti,一时记不得在那看过?这个问题我也有疑问?继续关注!
回到delay block cleanout,要是那样的话,若rollback分区数据被覆盖,其不是查询几星期以前提交的数据也会出ORACLE ORA-01555
,这好像与ORACLE的实际情况不符。
另外,RESTART INSTANCE有会如何?改变的块依旧没有CLEANOUT吗?

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
92#
 楼主| 发表于 2003-11-15 00:12 | 只看该作者
最初由 dplorer 发布
[B]谢谢biti,一时记不得在那看过?这个问题我也有疑问?继续关注!
回到delay block cleanout,要是那样的话,若rollback分区数据被覆盖,其不是查询几星期以前提交的数据也会出ORACLE ORA-01555
,这好像与ORACLE的实际情况不符。
另外,RESTART INSTANCE有会如何?改变的块依旧没有CLEANOUT吗? [/B]


只要数据库能判断 commit SCN  小于查询 SCN ,则就不会出现1555错误
这个commit SCN 怎么确定呢?首先看该事务的回滚段信息是否存在,若存在好判断,若已经不存在,则该事务肯定已经提交并且早于当前回滚段中的最小SCN.
而这个时候发生的cleanout 需要给一个commit scn(准确的commit scn已经找不着了),这 是由 回滚段头的 control  SCN 确定的,这个control SCN 也就是 回滚段中记录的最早的事务的SCN .也就是说,若真实commit SCN 小于这个 comtrol  SCN 并且 查询SCN 大于 control  SCN ,则数据库可以确信该数据认为该查询可以接受该数据,但该数据的commit SCN 却是已经被覆盖了找不回来了,于是数据库把当前回滚段的control SCN 当作该事务的commit  SCN 写入block,作为 block  cleanout 的SCN.这不会对今后的数据库的任何查询和事务构成障碍

那这里有个关键的问题就是,若查询时间太长,回滚段已经被覆盖过了,出现实际 commit SCN and 查询 SCN 都小于 control SCN ,则数据库无法判断查询是否能接受该数据,则这样的情况下由于block  cleanout产生了 1555 错误

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
93#
发表于 2003-11-15 21:44 | 只看该作者
非常精彩!你对oracle internal的了解让我佩服!
关于wraps,asktom中有这样一段话
The WRAPS column indicate the number of times the rollback segment wrapped to another extent to serve the transaction.  If this number is significant then you need to increase the extent size of the rollback segment.  WRAPS is sort of a "bad" name as it implies a total wrap around but it is the measure of how many times we SPANNED extents.

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
94#
 楼主| 发表于 2003-11-15 23:25 | 只看该作者
you  are  right

wraps指的是从一个 extents 过度到另一个extents的时候的次数

oracle文档的描述太含糊了:WRAPS
NUMBER
Number of times rollback segment is wrapped
   很容易有歧义

我在这里以前没有测试造成的误导表示歉意  

测试过程如下:
SQL>  select usn,extents,rssize,writes,wraps from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES      WRAPS
---------- ---------- ---------- ---------- ----------
         0          5     401408       4410          0
         1          8    4186112     140004          0
         2          8    4186112       1406          0
         3          8    4186112        160          0
         4          8    4186112        264          0
         5          8    4186112       6340          0
         6          8    4186112         54          0
         7          8    4186112         54          0

8 rows selected.

SQL> delete from t;

34738 rows deleted.

SQL>  select usn,extents,rssize,writes,wraps from v$rollstat;

       USN    EXTENTS     RSSIZE     WRITES      WRAPS
---------- ---------- ---------- ---------- ----------
         0          5     401408       4410          0
         1         16    8380416    7596264         15
         2          8    4186112       1406          0
         3          8    4186112        160          0
         4          8    4186112        264          0
         5          8    4186112       6340          0
         6          8    4186112         54          0
         7          8    4186112         54          0

8 rows selected.

使用道具 举报

回复
论坛徽章:
71
2015年新春福章
日期:2015-03-06 11:57:312013年新春福章
日期:2013-02-25 14:51:24双黄蛋
日期:2013-01-06 13:31:18蜘蛛蛋
日期:2013-01-06 10:26:08茶鸡蛋
日期:2012-11-21 19:35:23ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07版主2段
日期:2012-05-15 15:24:11铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
95#
发表于 2004-1-6 10:49 | 只看该作者
可以阿 , 改一下名称吧, 改称英文试一下 。

使用道具 举报

回复
论坛徽章:
0
96#
发表于 2004-1-28 16:15 | 只看该作者

拜讀中~~

好文!!!
拜讀中~~

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-03-23 21:53:59
97#
发表于 2004-3-7 15:41 | 只看该作者
呵呵 老大的文章一定拜读~

使用道具 举报

回复
论坛徽章:
0
98#
发表于 2004-3-7 16:02 | 只看该作者
收藏先

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
99#
 楼主| 发表于 2004-4-16 09:06 | 只看该作者
最初由 Kamus 发布
[B]对于文章中的一点提出疑问
biti提到在x$bh视图中11+2*USN为回滚段头,12+2*USN为回滚段块
但是我的9201自动回滚段管理的库中
却是15+2*USN为回滚段头,16+2*USN为回滚段快

这个应该不是一个定值?跟数据库版本?block大小?回滚段的管理方式?有关? [/B]




SQL> select * from v$waitstat;

CLASS                   COUNT       TIME
------------------ ---------- ----------
data block                  3         13
sort block                  0          0
save undo block             0          0
segment header              0          0
save undo header            0          0
free list                   0          0
extent map                  0          0
1st level bmb               0          0
2nd level bmb               0          0
3rd level bmb               0          0
bitmap block                0          0

CLASS                   COUNT       TIME
------------------ ---------- ----------
bitmap index block          0          0
file header block           0          0
unused                      0          0
system undo header          0          0
system undo block           0          0
undo header                40        247
undo block                  0          0

18 rows selected.

你照着数下来就发现第17条开始是 undo  header

这个编号是随着版本的变化而变化的

使用道具 举报

回复
论坛徽章:
0
100#
发表于 2004-4-16 09:06 | 只看该作者
老大就是老大,以您为师!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表