首先了解2个概念:
1. SCN(System Change Number),一个只会增加不会减少的数字, 存在于Oracle最小单位块中,当某块改变时SCN就会递增。
2. 数据库回滚段记录事物槽(事物槽是用来分配回滚空间的),如果更新了某块,事物就被写进事物槽里,如果未提交或回滚,
该块就存在活动事物,数据库读到此处就会识别到这种情况的存在。
当我们发起查询请求时,数据库会获取当前时间的SCN,用来在查询过程中和每个数据块头部ITL槽中的SCN号进行比较,如果
小于查询时间的SCN,则表示在这段时间内未被更新过,如果大于,则表示在查询时间点之后被改过了,此时需要根据ITL槽中
记录的undo块的地址找到undo块,将undo块中被修改前的数据读出。
摘自:《收货不止Oracle》