To:
我在读exppert one-on-one oracle Chapter 4:Transactions 遇到一个问题.
Your update generates undo information that your query will probably be making use of in order to get the read consistent view of the data it needs to update. If you commit, you are allowing the system to reuse the rollback segment space you just filled up. [U]If it does reuse the rollback [/U] , wiping out old rollback data that your query subsequently needs, you are in big trouble. Your SELECT will fail and your update will stop part of the way through.
这里我有一下几个问题:
1、加下划线的部分,应该表达一个什么意思? 是:如果你rollback;还是:如果重新利用了回滚段?
2、系统在什么时候擦掉 的 old rollback data,是在commit的以后,释放了其占用的rollback segment空间以后? 还是进行了rollback以后,使roll segment得以再次利用?
3、最后一个问题:这段话里说的,会擦掉以后查询所需要的old rollback data?是什么原因使它会擦除这个空间? 空间设定的太小?还是进行了commit操作?还是进行了rollback操作?
最后,我觉得我的上面几个问题好像都是一个问题。
From: John 2005.06.18 17:12
To: John
[COLOR=blue]
1.如果你重用了回滚段
2.当事务完成以后,回滚段被标记为inactive,就可以被重用(在Oracle9i已经发生了改变)
3.当事务完成以后,回滚段被标记为inactive,就可以被重用;如果你的查询需要这个undo构造一致性读,就会出现ORA-01555错误。