Oracle一致读原理

首先了解2个概念:

1. SCN(System Change Number),一个只会增加不会减少的数字, 存在于Oracle最小单位块中,当某块改变时SCN就会递增。

2. 数据库回滚段记录事物槽(事物槽是用来分配回滚空间的),如果更新了某块,事物就被写进事物槽里,如果未提交或回滚,

该块就存在活动事物,数据库读到此处就会识别到这种情况的存在。

当我们发起查询请求时,数据库会获取当前时间的SCN,用来在查询过程中和每个数据块头部ITL槽中的SCN号进行比较,如果

小于查询时间的SCN,则表示在这段时间内未被更新过,如果大于,则表示在查询时间点之后被改过了,此时需要根据ITL槽中

记录的undo块的地址找到undo块,将undo块中被修改前的数据读出。

摘自:《收货不止Oracle》

原文地址:https://www.cnblogs.com/jingweiyoung/p/8487097.html