select count(*),sum(blocks),sum(bytes),segment_name from user_extents
group by (segment_name)

解决方案 »

  1.   

    先用dbms_stats分析表,然后
    select blocks from tabs where table_name='your_table_name'<blocks>*<your_db_block_size>= <bytes>
      

  2.   

    SELECT SUM(BYTES)/1024/1024||'MB' 占用空间 
    FROM dba_segments
    WHERE segment_name = '表名' AND owner = '用户名';
      

  3.   

    select count(*),sum(blocks),sum(bytes),segment_name from user_extents
    group by (segment_name)
      

  4.   

    注意:
    如果表被删除过数据,user_extents并不能反映表实际占用的大小(表被删除记录,extents并不回收)。而且,可以用
    alter table <table_name> allocate extent;
    来预先分配extent给表(并无数据)。
      

  5.   

    这句SQL通常情况下是可以反映一个数据段所占空间大小的:SELECT SUM(BYTES)/1024/1024||'MB' 占用空间 
    FROM dba_segments
    WHERE segment_name = '表名' AND owner = '用户名';