Originally posted by AJW_ID01
Hey-ho. Perhaps there is a method in that madness.
Of course there is. BLOCKS columns in DBA_SEGMENTS and DBA_TABLES counts two totaly different things, hence the numbers in those two columns are different.

BLOCKS in DBA_SEGMENTS shows the number of database blocks uccupied by table segment (the sum of blocks occupied by all table extents. It doesn't matter if there was ever any data in those blocks, it simply shows how much space was grabbed by that segment up untill now.

BLOCKS in DBA_TABLES shows number of database blocks *below the high watter mark* (in other words, number of blocks from the beginning of the segment up untill the last block that ever contained any row data). And as slimdave said, this column(s) in DBA_TABLES are populated during analyze process, because even if BLOCKS in DBA_SEGMENTS remain unchanged, the BLOCKS in DBA_TABLES may be changing all the time.