oracle查询数据占用过大,[oracle] 查看oracle数据库表空间使用率,定位数据size较大对象...

=========================================

1.查看表空间使用情况

=========================================

with ts as (SELECT d.tablespace_name "Name", d.status "Status",

TO_CHAR (NVL (a.MAXBYTES / 1024 / 1024 /1024, 0), '99,999,990.90') "Maxsize (G)",

TO_CHAR (NVL (a.BYTES / 1024 / 1024 /1024, 0), '99,999,990.90') "Size (G)",

TO_CHAR (NVL (a.BYTES - NVL (f.BYTES, 0), 0) / 1024 / 1024 /1024,

'99999999.99'

) USE,

TO_CHAR (NVL ((a.BYTES - NVL (f.BYTES, 0)) / a.MAXBYTES * 100, 0),

'990.00'

) "Used %"

FROM SYS.dba_tablespaces d,

(SELECT   tablespace_name, SUM (BYTES) BYTES,SUM (greatest(BYTES,MAXBYTES)) MAXBYTES

FROM dba_data_files

GROUP BY tablespace_name) a,

(SELECT   tablespace_name, SUM (BYTES) BYTES

FROM dba_free_space

GROUP BY tablespace_name) f

WHERE d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = f.tablespace_name(+)

AND NOT (d.extent_management LIKE 'LOCAL' AND d.CONTENTS LIKE 'TEMPORARY')

UNION ALL

select c.tablespace_name as name,'tempts',

to_char(c.maxbytes/1024/1024/1024,'99,999.999') "Maxsize (G)",

to_char(c.bytes/1024/1024/1024,'99,999.999') "Size (G)",

to_char(d.bytes_used/1024/1024/1024,'99,999.999') USE,

to_char(d.bytes_used*100/c.maxbytes,'99.99') "Used %"

from  (select tablespace_name,sum(bytes) bytes,sum(greatest(maxbytes,bytes)) maxbytes

from dba_temp_files GROUP by tablespace_name) c,

(select tablespace_name,sum(bytes_cached) bytes_used

from gv$temp_extent_pool GROUP by tablespace_name) d

where c.tablespace_name = d.tablespace_name)

select * from ts order by 6 desc;

=========================================

2.查看segment使用情况

=========================================

col segment_name for a50

select tablespace_name,segment_name,round(sum(bytes/1024/1024/1024),1) as sizeG from  dba_segments where tablespace_name in ('OLS_DATA','OLS_LOB','OLS_BAT') group by segment_name,tablespace_name order by 3;

=========================================

3.查看具体表空间lob使用情况

=========================================

col segment_name for a50

col table_name for a50

select l.table_name,l.segment_name,round(sum(s.bytes/1024/1024/1024),1) as sizeG from  dba_segments s,dba_lobs l where s.segment_name = l.segment_name and s.tablespace_name = 'OLS_LOB' group by l.table_name,l.segment_name order by round(sum(s.bytes/1024/1024/1024),1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值