oracle如何查询表碎片
admin
2023-04-22 00:21:53
0

SELECT OWNER,

       TABLE_NAME,

       SEGMENT_TYPE,

       segment_space_management MANAGEMENT,

       TABLE_MB USED_MB,

       ROUND(WASTE_PER * TABLE_MB / 100, 2) FRAG_MB,

       WASTE_PER fragment_per,

       LAST_ANALYZED

  FROM (SELECT OWNER,

               SEGMENT_NAME TABLE_NAME,

               LAST_ANALYZED,

               SEGMENT_TYPE,

               GREATEST(ROUND(100 * (NVL(HWM - AVG_USED_BLOCKS, 0) / GREATEST(NVL(HWM, 1), 1)), 2), 0) WASTE_PER,

               ROUND(BYTES / POWER(1024, 2), 2) TABLE_MB,

               NUM_ROWS,

               BLOCKS,

               EMPTY_BLOCKS,

               HWM HIGHWATER_MARK,

               AVG_USED_BLOCKS,

               CHAIN_PER,

               EXTENTS,

               MAX_EXTENTS,

               ALLO_EXTENT_PER,

               DECODE(GREATEST(MAX_FREE_SPACE - NEXT_EXTENT, 0), 0, 'N', 'Y') CAN_EXTEND_SPACE,

               NEXT_EXTENT,

               MAX_FREE_SPACE,

               O_TABLESPACE_NAME TABLESPACE_NAME,

               block_size,

               segment_space_management

          FROM (SELECT A.OWNER OWNER,

                       A.SEGMENT_NAME,

                       A.SEGMENT_TYPE,

                       A.BYTES,

                       B.NUM_ROWS,

                       A.BLOCKS BLOCKS,

                       B.EMPTY_BLOCKS EMPTY_BLOCKS,

                       A.BLOCKS - B.EMPTY_BLOCKS - 1 HWM,

                       DECODE(ROUND((B.AVG_ROW_LEN * NUM_ROWS * (1 + (PCT_FREE / 100))) / dt.block_size, 0), 0, 1,

                              ROUND((B.AVG_ROW_LEN * NUM_ROWS * (1 + (PCT_FREE / 100))) / dt.block_size, 0)) + 2 AVG_USED_BLOCKS,

                              ROUND(100 * (NVL(B.CHAIN_CNT, 0) / GREATEST(NVL(B.NUM_ROWS, 1), 1)),

                             2) CHAIN_PER,

                       ROUND(100 * (A.EXTENTS / A.MAX_EXTENTS), 2) ALLO_EXTENT_PER,

                       A.EXTENTS EXTENTS,

                       A.MAX_EXTENTS MAX_EXTENTS,

                       B.NEXT_EXTENT NEXT_EXTENT,

                       B.TABLESPACE_NAME O_TABLESPACE_NAME,

                       B.LAST_ANALYZED,

                       dt.block_size,

                       DT.segment_space_management

                  FROM SYS.DBA_SEGMENTS A,

                       SYS.DBA_TABLES   B,

                       dba_tablespaces  dt

                 WHERE A.OWNER = B.OWNER

                   and SEGMENT_NAME = TABLE_NAME

                   and SEGMENT_TYPE = 'TABLE'

                 --  and dt.segment_space_management = 'AUTO'

                 --  and B.table_name='LS_REPORT_VALUE_COLLECT'

                   and dt.tablespace_name = a.tablespace_name

                   --and b.last_analyzed > to_date('20070601', 'yyyymmdd')

                union all

                SELECT A.OWNER OWNER,

                       SEGMENT_NAME || '.' || B.PARTITION_NAME,

                       SEGMENT_TYPE,

                       BYTES,

                       B.NUM_ROWS,

                       A.BLOCKS BLOCKS,

                       B.EMPTY_BLOCKS EMPTY_BLOCKS,

                       A.BLOCKS - B.EMPTY_BLOCKS - 1 HWM,

                       DECODE(ROUND((B.AVG_ROW_LEN * B.NUM_ROWS * (1 + (B.PCT_FREE / 100))) / dt.block_size, 0), 0, 1,

                              ROUND((B.AVG_ROW_LEN * B.NUM_ROWS * (1 + (B.PCT_FREE / 100))) / dt.block_size, 0)) + 2 AVG_USED_BLOCKS,

                              ROUND(100 * (NVL(B.CHAIN_CNT, 0) / GREATEST(NVL(B.NUM_ROWS, 1), 1)), 2) CHAIN_PER,

                       ROUND(100 * (A.EXTENTS / A.MAX_EXTENTS), 2) ALLO_EXTENT_PER,

                       A.EXTENTS EXTENTS,

                       A.MAX_EXTENTS MAX_EXTENTS,

                       B.NEXT_EXTENT,

                       B.TABLESPACE_NAME O_TABLESPACE_NAME,

                       d.last_analyzed,

                       dt.block_size,

                       DT.segment_space_management

                  FROM SYS.DBA_SEGMENTS       A,

                       SYS.DBA_TAB_PARTITIONS B,

                       SYS.DBA_TABLES         D,

                       dba_tablespaces        dt

                 WHERE A.OWNER = B.TABLE_OWNER

                   and SEGMENT_NAME = B.TABLE_NAME

                   and SEGMENT_TYPE = 'TABLE PARTITION'

                  -- and dt.segment_space_management = 'AUTO'

                  -- and B.table_name='LS_REPORT_VALUE_COLLECT'

                   and dt.tablespace_name = a.tablespace_name

                   AND D.OWNER = B.TABLE_OWNER

                   AND D.TABLE_NAME = B.TABLE_NAME

                   AND A.PARTITION_NAME = B.PARTITION_NAME,

                   --AND D.last_analyzed > to_date('20070601', 'yyyymmdd')),

               (SELECT TABLESPACE_NAME F_TABLESPACE_NAME,

                       MAX(BYTES) MAX_FREE_SPACE

                  FROM SYS.DBA_FREE_SPACE

                 GROUP BY TABLESPACE_NAME)

         WHERE F_TABLESPACE_NAME = O_TABLESPACE_NAME

           AND GREATEST(ROUND(100 * (NVL(HWM - AVG_USED_BLOCKS, 0) /GREATEST(NVL(HWM, 1), 1)),2), 0) > 25

           AND OWNER not in ('SYS', 'SYSMAN')

           AND BLOCKS > POWER(1024, 2) / block_size)

 where ROUND(WASTE_PER * TABLE_MB / 100, 2) > 100

 ORDER BY 7 DESC;

USED_MB:表示对象已使用大小

FRAG_MB:表示碎片所占大小

FRAGMENT_PER:表示碎片率百分比

相关内容

热门资讯

珠海冠宇获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示珠海冠宇(688772)新获得一项发明专利授权,专利名为“一种...
大华申请数据写入方法专利,提高... 国家知识产权局信息显示,浙江大华技术股份有限公司申请一项名为“数据写入方法、电子设备及计算机可读存储...
现在,赖清德更焦虑了 执笔/月半刀&宝刀刀&胡一刀5月13日,美国总统特朗普将开启访华行程。外界高度关注此次会晤中双方将如...
燃气发电与电池储能相结合,成为... 来源:市场资讯 (来源:i商周) 孟菲斯一座xAI数据中心的燃气轮机 人工智能的用电飙升,让数据中心...
景嘉微:JM11性能大幅提升,... 有投资者在互动平台向景嘉微提问:“董秘您好!关注到近期有用户反馈公司JM11显卡推出了适配windo...
原创 v... 影像的发展进一步推动,不少品牌推出了专业影像手机,拥有2亿像素摄像头、色彩还原摄像头、影像芯片、影像...
荣耀首款自研耳夹式耳机官宣即将... 快科技5月13日消息,日前,荣耀首席营销官关海涛宣布,荣耀全场景团队自研首款耳夹式耳机马上上市,并称...
谷歌推出Googlebooks... IT之家 5 月 13 日消息,2026 年 I/O 开发者大会下周(5 月 19~20 日)召开之...
自控所推动GNC专业智能化升级 来源:滚动播报 (来源:中国航空报) 本报讯 5月6日,航空工业自控所召开 GNC+AI关键技术研发...
华电电力申请数据库访问方法专利... 国家知识产权局信息显示,华电电力科学研究院有限公司申请一项名为“数据库访问方法、装置、设备及介质”的...