数据库监控功能-oracle

发布于:2025-05-01 ⋅ 阅读:(33) ⋅ 点赞:(0)

实现数据库监控功能

定时任务

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

表 实体


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) MaxSize
              FROM dba_data_files
              GROUP BY tablespace_name) df,
             (SELECT ROUND(SUM(bytes) / 1048576) totalusedspace,
                     tablespace_name
              FROM dba_segments
              GROUP BY tablespace_name) tu
        WHERE 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);
        }
 // 入库


网站公告

今日签到

点亮在社区的每一天
去签到