记备忘2 - oracle表空间使用情况查询

最近oracle开发过程中,需要了解到表的使用情况,特意去研究了下oracle如何查看表空间使用情况,就稍微加工了下sql,进入正题:

使用到的oracle表(需要有访问权限)

dba_segments      表空间表使用空间明细表
dba_data_files      表空间使用空间明细表

dba_free_space    表空间空闲空间明细表

SQL如下,直接贴到plsql上执行就行:(tablespace表空间前缀   tablename表名(可为空))

select tablespace_name,  -- 表空间
       total_space||'M' as total_space, -- 表空间物理总大小
       (total_space-free_space)||'M' use_space, -- 表空间物理使用大小
       round(100*(total_space-free_space)/total_space,1)||'%' use_percent, -- 表空间物理使用百分比
       round(100*sum(tab_use_space) over (partition by tablespace_name)/total_space,1)||'%' act_use_percent, -- 表空间实际使用百分比
       free_space||'M' as free_space, -- 表空间物理空闲大小
       round(100*free_space/total_space,1)||'%' free_percent, -- 表空间物理空闲百分比
       table_name, -- 表空间表名
       sum(tab_use_space) over (partition by tablespace_name)||'M' total_tab_use, -- 表空间表总使用大小
       tab_use_space||'M' as tab_use_space, -- 表空间表使用大小
       round(100*tab_use_space/sum(tab_use_space) over (partition by tablespace_name),1)||'%' tab_use_percent -- 表空间表占总表大小百分比
from
(
  select g.tablespace_name,
         (select sum(bytes/1024/1024) from dba_data_files a where a.tablespace_name = g.tablespace_name) total_space,
         (select sum(bytes/1024/1024) from dba_free_space b where b.tablespace_name = g.tablespace_name) free_space,
         g.segment_name table_name,g.BYTES/1024/1024 tab_use_space
  from dba_segments g
  where g.segment_type = 'TABLE'
  and   g.tablespace_name like &tablespace||'%'
  and   g.segment_name = nvl(trim(&tablename),g.segment_name)
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值