OK Let me start by figuring out where the TOAD gets the numbers you look at.
What is he doing
SELECT sum(bytes)/1024/1024/1024 size_in_gb, sum(blocks) size_in_blocks FROM dba_segments WHERE owner = <<owner of table>> AND segment_name = <<name of table>>
return table size?
What is he doing
SELECT num_rows, blocks, empty_blocks, avg_row_len, last_analyzed FROM all_tables WHERE owner = <<owner of table>> AND table_name = <<name of table>>
back for statistics in a table?
What is he doing
SELECT COUNT(*) FROM <<owner of table>>.<<name of table>>
to return the actual number of rows in a table?
What is he doing
DECLARE l_unformatted_blocks number; l_unformatted_bytes number; l_fs1_blocks number; l_fs1_bytes number; l_fs2_blocks number; l_fs2_bytes number; l_fs3_blocks number; l_fs3_bytes number; l_fs4_blocks number; l_fs4_bytes number; l_full_blocks number; l_full_bytes number; BEGIN dbms_space.space_usage (<<table owner>>, <<table name>>, 'TABLE', l_unformatted_blocks, l_unformatted_bytes, l_fs1_blocks, l_fs1_bytes, l_fs2_blocks, l_fs2_bytes, l_fs3_blocks, l_fs3_bytes, l_fs4_blocks, l_fs4_bytes, l_full_blocks, l_full_bytes); dbms_output.put_line('Unformatted Blocks = '||l_unformatted_blocks); dbms_output.put_line('FS1 Blocks = '||l_fs1_blocks); dbms_output.put_line('FS2 Blocks = '||l_fs2_blocks); dbms_output.put_line('FS3 Blocks = '||l_fs3_blocks); dbms_output.put_line('FS4 Blocks = '||l_fs4_blocks); dbms_output.put_line('Full Blocks = '||l_full_blocks); END;
show how blocks are used in a table?
Were the lines updated after January 14 at 14:02:29? In particular, is it possible that several rows were inserted that were relatively small but then updated to be much larger in size? Something changes if you re-compile statistics in a table
BEGIN dbms_stats.gather_table_stats( ownname => <<owner of table>>, tabname => <<name of table>>, estimate_percent => null, granularity => 'ALL' ); END;