根据我在互联网上阅读的可靠页面(尤其是这个AskTom note - 但不要管评论),当事务提交时,新数据并没有立即报告到实际数据块上,而是留存在回滚段中。当有人对数据进行SELECT操作或者UNDO_RETENTION秒数已经过去 - 无论哪种情况先发生 - 新数据才会被写入数据块。
但我们公司的一位据说很懂行的人最近告诉我相反的情况:据他所说,当事务提交时,新数据会立即写入数据块,而回滚段/撤销表空间会保留旧数据UNDO_RETENTION秒。这些旧数据在此期间仍可供查询使用,前提是在事务之前启动了SCN。
那么,在Oracle内部真正发生了什么,并且您能提供支持您回复的参考资料吗?
我们正在使用Oracle 9.2.0.8。
提前致谢。