透过Buffer cache了解data block在DML操作下的状态演变(15)


当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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b53e281b6e4793f9b03652a9d50447ed.html