当前位置: 首页 > 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 编译原理用(自动机绘图)
  • 共情场域与可持续发展——关于博物馆、美术馆运营的新思考
  • 香港暂停进口美国北达科他州一地区禽肉及禽类产品
  • 应急部:正在积极推动各地逐步科学建设改造应急避难场所
  • 湛江霞山通报渔船火灾:起火船舶共8艘,无人员伤亡或被困
  • 瑞士联邦主席凯勒-祖特尔、联邦副主席帕姆兰会见何立峰
  • 气象干旱黄色预警继续:陕西西南部、河南西南部等地特旱