当前位置: 代码迷 >> 综合 >> Oracle查看表占磁盘大小
  详细解决方案

Oracle查看表占磁盘大小

热度:54   发布时间:2024-02-09 15:38:33.0
select segment_name, bytes/1024/1024
from user_segments S
where S.segment_type = 'TABLE'
AND S.segment_name = ‘XXXX';//表名

但对于有blob字段的不适用,blob内容不会被统计,统计blob大小的方法: 

select SEGMENT_NAME, TABLESPACE_NAME, TO_CHAR(SUM(BYTES) / (1024 * 1024), '999G999D999') CNT_MB 
from dba_extents T 
WHERE T.owner = 'USER1' AND T.segment_name in ('SYS_LOB0000080922C00004$$', 'SYS_IL0000080922C00004$$')

in后面对应的lobid 在 select * from dba_lobs t where t.owner = 'USER1';
在结果中找到logid

另外一种方法:
dbms_lob.getLength函数,参数是blob的字段名   

select sum(dbms_lob.getLength(blob))/(1024*1024) from XXX; //含有blob字段的那个表名

 如果要查询long raw的占用空间大小,dbms_lob.getLength不适用, 
需要建立临时表,将long raw 另存为blob,然后查看blob大小

 
create table tmp(id int,img blob);insert into tmp select block_id,to_lob(blog) from XXX;;select sum(dbms_lob.getLength(img))/(1024*1024) from tmp