Segment or table size in oracle database

select  s.owner,
        s.segment_name,
        s.segment_type,
        TO_CHAR(s.extents,'9,999') "Ext",
        TO_CHAR(s.max_extents,'999,999') "MaxExt",
        to_char(s.Blocks,'99,999,999') "Blocks",
        to_char((s.bytes/1024/1024),'999,999') "MBYTES",
        to_char(s.initial_extent, '999,999,999') "Initial",
        to_char(s.next_extent,  '999,999,999') "Next",
        to_char(t.PCT_used, '999') "Used",
        to_char(t.PCT_free, '999') "Free"
from sys.dba_segments s, sys.dba_tables t
where s.owner not in ('SYS','SYSTEM')
and   s.segment_type= 'TABLE'
and   s.segment_name = t.table_name
and t.owner = s.owner
order by mbytes desc, s.owner, s.segment_name, segment_type;

select  s.owner,
        s.segment_name,
        s.segment_type,
        TO_CHAR(s.extents,'9,999') "Ext",
        TO_CHAR(s.max_extents,'999,999') "MaxExt",
        to_char(s.Blocks,'99,999,999') "Blocks",
        to_char((s.bytes/1024/1024),'999,999') "MBYTES",
        to_char(s.initial_extent, '999,999,999') "Initial",
        to_char(s.next_extent,  '999,999,999') "Next"
from sys.dba_segments s
where s.owner not in ('SYS','SYSTEM')
and s.owner in ('X')
order by mbytes desc, s.owner, s.segment_name, segment_type;

select  s.owner,
        to_char((sum(s.bytes)/1024/1024/1024),'999,999') "GBYTES"
from sys.dba_segments s
where s.owner not in ('SYS','SYSTEM')
and s.owner in ('X')
group by s.owner;