表空间监控脚本

—–查询表空间使用情况
  SELECT TABLESPACE_NAME,
         ROUND(TABLESPACE_SIZE / 128 * 1024 / 1024 / 1024, 3) “总空间(GB)”,
         ROUND(USED_SPACE / 128 * 1024 / 1024 / 1024, 3) “已用(GB)”,
         ROUND(TABLESPACE_SIZE / 128 * 1024 / 1024 / 1024 -
               USED_SPACE / 128 * 1024 / 1024 / 1024,
               3) “剩余(GB)”,
         ROUND(USED_SPACE / TABLESPACE_SIZE * 100, 2) || ‘%’ 使用率
    FROM SYS.DBA_TABLESPACE_USAGE_METRICS T
/*   WHERE ROUND(TABLESPACE_SIZE / 128 * 1024 / 1024 / 1024 -
               USED_SPACE / 128 * 1024 / 1024 / 1024,
               3) < ’80’
     AND TABLESPACE_NAME LIKE ‘TBS_%’*/
   ORDER BY TABLESPACE_NAME ASC;
2.
—–查询某个表空间下储存的表
SELECT OWNER || ‘.’ || SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 / 1024 BYTES
  FROM DBA_SEGMENTS
 WHERE TABLESPACE_NAME = ‘TBS_YYFX’
  AND SEGMENT_NAME =’###表名###’
  AND BYTES > 196608 –196608是空表的大小 ,BYTES>196608  抛出空表
 GROUP BY OWNER || ‘.’ || SEGMENT_NAME
 ORDER BY BYTES DESC;
3.清理表空间的两种方式
(1)
—–清某个表的数据
SELECT BYTES / 1024 / 1024 / 1024,
       ‘ALTER TABLE ‘ || OWNER || ‘.’ || SEGMENT_NAME ||
       ‘ TRUNCATE PARTITION ‘ || PARTITION_NAME || ‘;’
  FROM DBA_SEGMENTS
 WHERE OWNER || ‘.’ || SEGMENT_NAME =’###表名###
   AND BYTES > 196608 –196608是空表的大小 ,BYTES>196608  抛出空表
 ORDER BY BYTES DESC;
(2)
—–压缩表  把某个表的部分数据迁移到另一个表空间下
SELECT BYTES / 1024 / 1024 / 1024,
       ‘ALTER TABLE ‘ || OWNER || ‘.’ || SEGMENT_NAME || ‘ MOVE PARTITION ‘ ||
       PARTITION_NAME || ‘ TABLESPACE TBS_DWD;’–要迁移到的表空间
  FROM DBA_SEGMENTS
 WHERE TABLESPACE_NAME = ‘TBS_DWD’ –表所在的表空间
   AND OWNER || ‘.’ || SEGMENT_NAME = ‘###表名###
   AND BYTES > 196608 –196608是空表的大小 ,BYTES>196608  抛出空表
 ORDER BY BYTES DESC;

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 表空间监控脚本

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址