UNDO_RETENTION的一点疑问?

[复制链接]
查看11 | 回复9 | 2011-11-16 22:31:22 | 显示全部楼层 |阅读模式
[php]
Automatic undo management lets you explicitly control undo retention. Through the use of a system parameter (UNDO_RETENTION), you can specify the amount of committed undo information to retain in the database. You specify the parameter as clock time (for example, 30 seconds). With retention control, you can configure your system to enable long queries to run successfully.
[/php]
不能很好的理解UNDO_RETENTION,UNDO_RETENTION用来控制被提交的事务的undo 信息在数据库中保存的时间?
With retention control, you can configure your system to enable long queries to run successfully.又怎么理解?
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
提供读一致镜像
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
最初由 warehouse 发布
[B][php]
Automatic undo management lets you explicitly control undo retention. Through the use of a system parameter (UNDO_RETENTION), you can specify the amount of committed undo information to retain in the database. You specify the parameter as clock time (for example, 30 seconds). With retention control, you can configure your system to enable long queries to run successfully.
[/php]
不能很好的理解UNDO_RETENTION,UNDO_RETENTION用来控制被提交的事务的undo 信息在数据库中保存的时间?
With retention control, you can configure your system to enable long queries to run successfully.又怎么理解? [/B]

如果是10g就很好理解,10g中undo_retention=0时就激活自动undo_retention调优.你可以查v$undostat中的第后一字段...
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
就是说,undo tablespace中的undo segment 至少要过了 UNDO_RETENTION 的值,才可能被覆盖,从而保证 undo segment 中的信息至少能保留UNDO_RETENTION 这么九。
这样,就能保证 < UNDO_RETENTION 的long queries 不会碰到1555
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
学习!
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
最初由 rollingpig 发布
[B]就是说,undo tablespace中的undo segment 至少要过了 UNDO_RETENTION 的值,才可能被覆盖,从而保证 undo segment 中的信息至少能保留UNDO_RETENTION 这么九。
这样,就能保证 < UNDO_RETENTION 的long queries 不会碰到1555 [/B]

1、undo tablespace中的undo segment 至少要过了 UNDO_RETENTION 的值,才可能被覆盖,是指已经提交了的吧,如果事务没有commit,哪undo 中对应的信息是不是永远都不能覆盖?
2、< UNDO_RETENTION 的long queries 还是不太明白,查询到底和
UNDO_RETENTION 有什么关系?
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
最初由 warehouse 发布
[B]
1、undo tablespace中的undo segment 至少要过了 UNDO_RETENTION 的值,才可能被覆盖,是指已经提交了的吧,如果事务没有commit,哪undo 中对应的信息是不是永远都不能覆盖?
2、< UNDO_RETENTION 的long queries 还是不太明白,查询到底和
UNDO_RETENTION 有什么关系? [/B]

1、没有commit的事条,undo segment中的信息肯定是不能覆盖的。
2、至于UNDO_RETENTION 和long queries 关系 的话,可以这样理解: 假如事务已经commit,但由于 undo segment中的信息必须要保留undo_retention这么久,因此long query time在从commit时间点t1到 t1 + undo_retention 这个时间段内,是不会有1555错误发生的。
因为这段时间内undo segment中的信息并不会被覆盖。
而假如超出 这段时间,则有可能undo segment中的信息被覆盖,这时就要比较query scn 跟 control scn的大小,就有可能报1555错。
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
hehe
楼主应该知道 ora-01555 的相关信息吧?
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
9i下undo_retention也不是强制保证的,如果未提交事务缺乏undo空间的话,照样要覆盖的。
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
9i下undo_retention也不是强制保证的,如果未提交事务缺乏undo空间的话,照样要覆盖的。
1、没有commit的事条,undo segment中的信息肯定是不能覆盖的。
7楼和9楼的那个准确呢
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行