From:Steve Adams
Date:26-Oct-2000 16:05
Subject:   How to determine the depth of row chaining

To determine how many blocks a particular row is chained over, you have to navigate the row pieces and count the consistent gets. For example, the following row is neither chained nor migrated because only 1 buffer get is required. Of course, all the meta-data has to be cached in the library cache already, or there may be extraneous buffer gets associated with parsing.

    SQL> select n.name, m.value from sys.v_$mystat m, sys.v_$statname n
      2  where n.statistic# = m.statistic# and n.name = 'consistent gets'; 

    consistent gets                                                        2111

    SQL> select * from my_dual where rowid = 'AAAA5RAADAAAOhDAAA'; 

    X

    SQL> select n.name, m.value from sys.v_$mystat m, sys.v_$statname n
      2  where n.statistic# = m.statistic# and n.name = 'consistent gets'; 

    consistent gets                                                        2112
If you want this information for all the chained rows in a particular table, then you can use the ANALYZE TABLE LIST CHAINED ROWS command to get the rowids, and query each row in turn.

How can I estimate the depth of a row (how many blocks a row is spread across, in rows that are chained)?