当前位置: 首页 > news >正文

数据库监控功能-oracle

实现数据库监控功能

定时任务

每天跑两次 上班时间 下班时间 

表 实体


public class DatabaseMonitor {private String id;// 类型 0:磁盘监控 1:数据库监控private Integer type;// ip地址private String ip;// 磁盘监控时为盘符路径,数据库监控时为表空间名称private String subject;// 空间大小private String totalSize;// 使用大小private String usedSize;// 剩余大小private String availSize;// 使用率private String usageRate;// 最大表空间 数据库监控使用的字段private String maxSize;// 检测时间private Date gmtCreate;}

查询表空间使用大小sql

 SELECT df.tablespace_name                  AS "tableSpaceName",df.totalspace                       AS "total",(df.totalspace - tu.totalusedspace) AS "avail",tu.totalusedspace                   AS "used",df.maxsize                          AS "max"FROM (SELECT tablespace_name,ROUND(SUM(bytes) / 1048576)                     TotalSpace,ROUND(SUM(GREATEST(bytes, maxbytes)) / 1048576) MaxSizeFROM dba_data_filesGROUP BY tablespace_name) df,(SELECT ROUND(SUM(bytes) / 1048576) totalusedspace,tablespace_nameFROM dba_segmentsGROUP BY tablespace_name) tuWHERE df.tablespace_name = tu.tablespace_name;

//定时任务 

 //查询表空间使用
 List<PageData> tableSpace = DatabaseMonitorMapper.getTableSpace();
        Date date = new Date();
        List<DatabaseMonitor> listDatabase = new ArrayList<>();
        DatabaseMonitor ddm;
        for (PageData pageData : tableSpace) {
            ddm = new DatabaseMonitor();
            ddm.setId(UUIDGenerator.getUUID());
            ddm.setType(1);
            ddm.setIp(databaseIp);
            ddm.setGmtCreate(date);
            ddm.setSubject(pageData.getString("tableSpaceName"));
            String total = mbConvertGb(objectConvertInt(pageData.get("total")));
            ddm.setTotalSize(total);
            String used = mbConvertGb(objectConvertInt(pageData.get("used")));
            ddm.setUsedSize(used);
            String avail = mbConvertGb(objectConvertInt(pageData.get("avail")));
            ddm.setAvailSize(avail);
            String usageRate = String.format("%.2f%%", (objectConvertInt(pageData.get("used")) / (double) objectConvertInt(pageData.get("total"))) * 100);
            ddm.setUsageRate(usageRate);
            String max = mbConvertGb(objectConvertInt(pageData.get("max")));
            ddm.setMaxSize(max);

            listDatabase.add(ddm);
        }
 // 入库

相关文章:

  • 数据分析岗位-相关知识
  • Spring 学习笔记之 @Transactional 异常不回滚汇总
  • javase和java有什么区别
  • 7.学习笔记-Maven进阶(P75-P89)-进度(p75-P80)
  • Python----深度学习(基于DNN的PM2.5预测)
  • Win下Pycharm运行/调试配置脚本形参执行替换Linux下终端执行,进行调试需要注意的
  • Vue Composition API 与 Options API:全面对比与使用指南
  • 《人件》第三章 正确的人
  • 2025.04.26-美团春招笔试题-第四题
  • 升级 Spring Boot CLI
  • windows上的 Vmware Workstation 环境搭建
  • cloud项目同一个服务,执行不同业务需求,nacos进行分组
  • 6.Geometric Intersection (几何求交)- Preliminary
  • LLM基础之源码一
  • 开发首个Spring Boot应用
  • 车载诊断架构 --- 用于学习的诊断上位机工具
  • FPGA前瞻篇-数字电路基础-逻辑门电路设计
  • matlab实现稀疏低秩去噪
  • 运动控制【指令】codesys
  • JFLAP SOFTWARE 编译原理用(自动机绘图)
  • 马斯克的胜利?OpenAI迫于压力放弃营利性转型计划
  • 五一假期上海境外来沪消费4.55亿元,同比增长211.6%
  • 解锁川北底色密码,“文化三地”志愿宣讲员招募计划启动报名
  • 国内多景区实行一票游多日:从门票经济向多元化“链式经济”转型
  • 德雷克海峡发生6.4级地震,震源深度10千米
  • 空间方法:一周城市生活