数据库中如何实现表空间监控脚本

网友投稿 198 2023-12-07

数据库中如何实现表空间监控脚本

小编给大家分享一下数据库中如何实现表空间监控脚本,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

数据库中如何实现表空间监控脚本

-----查询表空间使用情况

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;

看完了这篇文章,相信你对“数据库中如何实现表空间监控脚本”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库中alter database rename file to子句怎么用
下一篇:oracle中clusterware的命令集有几种
相关文章

 发表评论

暂时没有评论,来抢沙发吧~