Oracle查看文件大小

表空间对应数据文件

select tablespace_name,
       file_id,
       file_name,
       round(bytes / (1024 * 1024), 0) total_space
  from dba_data_files
 order by tablespace_name;

表空间总大小、使用率、剩余空间

注意:

  1. dba_data_files中的user_bytes表示的是可用空间,不是剩余空间。即数据文件的很小一部分空间用作数据文件本身的管理用,所以user_bytes比bytes小一点,就是这部分管理需要的空间。
  2. “当前表空间大小” :未自动扩展到极致的表空间大小;
  3. “允许最大表空间大小”:自动扩展到最大时,只能手动添加文件扩展表空间。
select upper(f.tablespace_name) "表空间名",
           d.max_total_mb "允许最大表空间大小(m)",
           d.max_total_mb - f.space_free_mb "剩余可扩展空间大小(m)",
         d.space_total_mb "当前表空间大小(m)",
         d.space_total_mb - f.space_free_mb "已使用空间(m)",
         to_char(round((d.space_total_mb - f.space_free_mb) /
                         d.space_total_mb * 100,
                         2),
                   '990.99') || '%' "使用比",
         f.space_free_mb "空闲空间(m)",
         f.max_mb "最大块(m)"
  from (select tablespace_name,
                  round(sum(bytes) / (1024 * 1024), 2) space_free_mb,
                  round(max(bytes) / (1024 * 1024), 2) max_mb   
          from sys.dba_free_space 
         --where tablespace_name = 'HSEMR_TAB'             
         group by tablespace_name) f,
       (select dd.tablespace_name,
               round(sum(dd.bytes) / (1024 * 1024), 2) space_total_mb,
               round(sum(dd.maxbytes) / (1024 * 1024), 2) max_total_mb   
          from sys.dba_data_files dd
         --where dd.tablespace_name = 'HSEMR_TAB'             
         group by dd.tablespace_name) d
 where d.tablespace_name = f.tablespace_name
 order by f.tablespace_name;

具体表的占用空间大小

select *
  from (select t.tablespace_name,
               t.owner,
               t.segment_name,
               t.segment_type,
               sum(t.bytes / 1024 / 1024) mb
          from dba_segments t
         where t.segment_type = 'TABLE'
         group by t.tablespace_name, t.owner, t.segment_name, t.segment_type) t
 order by t.mb desc;

  Oracle对BLOB类型的定义为:存储大型的、未被结构化的的变长二进制数据(如二进制文件、图片文件、音频和视频等非文本文件),在Oracle11g中BLOB最大存储容量为128TB;CLOB的定义为:用于存储单字节或多字节的大型字符串对象,支持使用数据库字符集的定长或变长字符,在Oracle11g中CLOB最大存储容量为128TB。显然,LOB类型通常用来存储大的信息,故 lobsegment、lobindex 占用空间较大也就不足为奇了。

  当表含有LOB字段时,Oracle会为含有LOB字段的列单独创建一个lobsegment,同时还会创建一个lobindex。那么lobsegment、lobindex是如何与表关联起来的呢?可以使用xxx_lobs来查找lobsegment、lobindex与表之间的关系:

有LOB字段的表占用空间大小

select *
  from (select tablespace_name, owner, segment_name, sum(mb) mb
          from (select t.tablespace_name,
                       t.owner,
                       nvl(b.table_name, t.segment_name) segment_name,
                       t.segment_type,
                       t.bytes / 1024 / 1024 mb
                  from dba_segments t, dba_lobs b
                 where t.owner = 'HSEMR'
                   and t.tablespace_name = b.tablespace_name(+)
                   and t.owner = b.owner(+)
                   and t.segment_name = b.segment_name(+))
         group by tablespace_name, owner, segment_name
         order by mb desc)
 --查看具体表时,条件只能写到最外层
where segment_name like 'MR_FILE_CONTENT%'

表空间或数据库的增长量

select a.snap_id,
       c.tablespace_name ts_name,
       to_char(to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss'),
               'yyyy-mm-dd hh24:mi') rtime,
       round(a.tablespace_size * c.block_size / 1024 / 1024, 2) ts_size_mb,
       round(a.tablespace_usedsize * c.block_size / 1024 / 1024, 2) ts_used_mb,
       round((a.tablespace_size - a.tablespace_usedsize) * c.block_size / 1024 / 1024,
             2) ts_free_mb,
       round(a.tablespace_usedsize / a.tablespace_size * 100, 2) pct_used
  from dba_hist_tbspc_space_usage a,
       (select tablespace_id,
               substr(rtime, 1, 10) rtime,
               max(snap_id) snap_id
          from dba_hist_tbspc_space_usage nb
         group by tablespace_id, substr(rtime, 1, 10)) b,
       dba_tablespaces c,
       v$tablespace d
 where a.snap_id = b.snap_id
   and a.tablespace_id = b.tablespace_id
   and a.tablespace_id = d.ts#
   and d.name = c.tablespace_name
   and to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') >= sysdate - 30
 order by a.tablespace_id, to_date(a.rtime, 'mm/dd/yyyy hh24:mi:ss') desc;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ts16dmy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值