设为首页 收藏本站
查看: 691|回复: 0

[经验分享] oracle查询表碎片

[复制链接]

尚未签到

发表于 2018-9-5 13:03:12 | 显示全部楼层 |阅读模式
  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:表示碎片率百分比


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-563608-1-1.html 上篇帖子: oracle常用的动态视图 下篇帖子: oracle 临时表 应用场景
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表