|
I want to make a few comments.
* x$bh.obj is xxx_objects.data_object_id, not object_id. They differ in various cases, such as table move, truncate, index rebuild, partition exchange, etc. (But may or may not change for an empty table.)
* Physically, the order of the first few blocks of a table in ASSM is: first level BMB (bitmap block), second level BMB, segment header, data... That is, the segment header should be after, not before, the bitmap blocks. In addition, each extent (other than extent 0) has its own first level BMB in the first block.
* I don't think you can bring reads of the segment header into the count of consistent gets, because reading segment headers should count as current mode gets. I know since 9iR2 the simplest table read will show 0 db block gets. See Tom Kyte's listing of the four versions at "Followup April 26, 2005 - 8am Central time zone" at
http://asktom.oracle.com/pls/ask ... ION_ID:865586003021
The question and answer right below are relevant. But I'm not sure Tom really answered the question. We can see from viadeazhu's test in message #7 that the segment header (class 4) was indeed read once. Why does autotrace "db block gets" still report 0? Could SQL trace incorrectly add it to "consistent gets" (which makes message #7 an excellent explanation)? If anybody finds an official explanation, I'd like to see.
Where's the URL for "对于大表,晶晶小妹有实验证明会读segment header3次"?
Yong Huang |
|