查询Oracle表中LOB字段的占用空间大小。表中每一个LOB字段都是独立保存在一个segment上,同时有一个索引segment。因此需要查询两个段,得到总的空间占用大小。
select a.owner,
a.table_name,
a.column_name,
b.segment_name,
ROUND(b.BYTES / 1024 / 1024)
from dba_lobs a, dba_segments b
where a.segment_name = b.segment_name
and a.owner = 'XXX'
and a.table_name = 'YYYY'
union all
select a.owner,
a.table_name,
a.column_name,
b.segment_name,
ROUND(b.BYTES / 1024 / 1024)
from dba_lobs a, dba_segments b
where a.index_name = b.segment_name
and a.owner = 'XXX'
and a.table_name = 'YYYY'