当5/60683的before-image个数达到5个了就不再增长了,buffer cache里一个data block的before-image个数与隐含参数"_db_block_max_cr_dba"有关,表示Maximum Allowed Number of CR buffers per dba,一个数据块在buffer cache里最多能有多少个一致性读的buffer,默认值为6,因为current version已经占据了1个,所以留给before-image的只有5个buffer了,用满之后,再对scott.t1118_1表进行一致性读访问的次数统计就要从保存before-image的undo block buffer里获取了,
SYS@tstdb1-SQL> select obj,indx,addr,hladdr,flag,lru_flag,class,state,dbarfil,dbablk,ba,tch from x$bh where dbarfil=10 and DBABLK=40169; <---这里的10、40169分别来自于v$transaction.ubafil,v$transaction.ubablk
OBJ INDX ADDR HLADDR FLAG LRU_FLAG CLASS STATE DBARFIL DBABLK BA TCH
---------- ---------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ----------
4294967295 8038 0000000110B557C0 07000001B6CA2150 35651584 0 102 1 10 40169 0700000183CF2000 14
select count(*) from scott.t1118_1;
SYS@tstdb1-SQL> select obj,indx,addr,hladdr,flag,lru_flag,class,state,dbarfil,dbablk,ba,tch from x$bh where dbarfil=10 and DBABLK=40169;
OBJ INDX ADDR HLADDR FLAG LRU_FLAG CLASS STATE DBARFIL DBABLK BA TCH
---------- ---------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ----------
4294967295 8048 0000000110B557C0 07000001B6CA2150 35651584 0 102 1 10 40169 0700000183CF2000 15 <---undo block的TCH增加了1