0
点赞
收藏
分享

微信扫一扫

查看表的大小 & 闪回表

敬亭阁主 2022-04-14 阅读 92
数据库

按照表大小 升序

col table_name format a50

select * from 
(select t1.owner, t1.table_name,
       round(t1.table_size / 1024 / 1024) + round(nvl(t3.lob_data_size,0) / 1024 / 1024) table_size_mb,
       round(nvl(t2.index_size,0) / 1024 / 1024) + round(nvl(t3.lob_index_size,0) / 1024 / 1024) index_size_mb,
       round(t1.table_size / 1024 / 1024) + round(nvl(t3.lob_data_size,0) / 1024 / 1024) +
       round(nvl(t2.index_size,0) / 1024 / 1024) + round(nvl(t3.lob_index_size,0) / 1024 / 1024) size_mb
  from (select owner, segment_name table_name, round(sum(bytes)) table_size
           from dba_segments
          where segment_type like 'TABLE%'
          group by owner, segment_name) t1,
       (select a.owner, a.table_name, sum(b.bytes) index_size
           from (select owner, table_name, index_name
                    from dba_indexes
                   where index_type <> 'LOB') a,
                (select owner, segment_name, bytes from dba_segments) b
          where a.owner = b.owner
            and a.index_name = b.segment_name
          group by a.owner, a.table_name) t2,
       (select a.owner, a.table_name, sum(b.lob_data_size) lob_data_size,
                sum(c.lob_index_size) lob_index_size
           from (select owner, table_name, segment_name, index_name
                    from dba_lobs) a,
                (select owner, segment_name, sum(bytes) lob_data_size
                    from dba_segments
                   group by owner, segment_name) b,
                (select owner, segment_name, sum(bytes) lob_index_size
                    from dba_segments
                   group by owner, segment_name) c
          where a.owner = b.owner
            and a.segment_name = b.segment_name
            and a.owner = c.owner
            and a.index_name = c.segment_name
          group by a.owner, a.table_name) t3
 where t1.owner = t2.owner(+)
   and t1.table_name = t2.table_name(+)
   and t1.owner = t3.owner(+)
   and t1.table_name = t3.table_name(+)
   and t1.owner not in ('SYSTEM','SYS','OUTLN','DIP','TSMSYS','DBSNMP','WMSYS','EXFSYS','DMSYS','CTXSYS','XDB','ANONYMOUS','MDSYS','ORDSYS','ORDPLUGINS','SI_INFORMTN_SCHEMA','MDDATA')
   --and t1.owner = upper('SZX')
   --and t1.table_name = upper('gatewaypayorderext')
order by 5 asc) x;

在这里插入图片描述
查看数据库当前用户的回收站表

col object_name format a50
select object_name,original_name from recyclebin;

在这里插入图片描述
查看所有用户的的回收站表

col object_name format a50
select owner,object_name,original_name from dba_recyclebin;

在这里插入图片描述
Oracle在删表的时候,如果只用drop table [tableName]语句的话,那么表不是直接删掉了,而是放到了oracle自己的回收站里面,可以闪回。

flashback table "BIN$2y7j5swWC7PgU2K0CgrC8Q==$0" to before drop;

在这里插入图片描述
完全删除表的话,这样写不经过回收站,直接删除表

drop table test2 purge;

在这里插入图片描述

举报

相关推荐

0 条评论