浏览代码

dbms stts last commit

shjung 3 年之前
父节点
当前提交
11badc5cff

+ 5 - 12
src/main/java/com/its/op/controller/its/common/CommonSttsController.java

@@ -2,12 +2,11 @@ package com.its.op.controller.its.common;
 
 import com.its.op.dto.its.common.FcltSttsListDto;
 import com.its.op.dto.its.common.SttsCommErrDto;
-import com.its.op.dto.its.database.TbDbSvrSttsDto;
 import com.its.op.dto.its.dbms.TbDbmsSttsDto;
 import com.its.op.dto.its.unit.TbUnitSystSttsDto;
 import com.its.op.service.its.cctv.TbCctvCtlrService;
 import com.its.op.service.its.common.CommonSttsService;
-import com.its.op.service.its.database.TbDbSvrSttsService;
+import com.its.op.service.its.dbms.TbDbmsSttsService;
 import com.its.op.service.its.unit.TbUnitSystService;
 import com.its.op.service.its.vds.TbVdsCtlrService;
 import com.its.op.service.its.vms.TbVmsCtlrService;
@@ -29,7 +28,7 @@ import java.util.List;
 public class CommonSttsController {
 
     private final CommonSttsService service;
-    private final TbDbSvrSttsService dbSvrSttsService;
+    private final TbDbmsSttsService dbmsSttsService;
     private final TbCctvCtlrService cctvService;
     private final TbVmsCtlrService vmsService;
     private final TbVdsCtlrService vdsService;
@@ -71,17 +70,11 @@ public class CommonSttsController {
         return this.vdsService.findAllListCommError();
     }
 
-//    @ApiOperation(value = "DBMS 상태", response = TbDbSvrSttsDto.class, responseContainer = "ArrayList")
-//    @GetMapping(value = "/dbms", produces = {"application/json; charset=utf8"})
-//    public List<TbDbSvrSttsDto> findAllDbmsStts() {
-//        return this.dbSvrSttsService.findAll();
-//    }
-
     // TODO
-    @ApiOperation(value = "DBMS STTS", response = TbDbSvrSttsDto.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "DBMS STTS", response = TbDbmsSttsDto.class, responseContainer = "ArrayList")
     @GetMapping(value = "/dbms", produces = {"application/json; charset=utf8"})
-    public List<TbDbmsSttsDto> findAllDbmsSttsAll() {
-        return this.dbSvrSttsService.findAllDbmsStts();
+    public List<TbDbmsSttsDto> findAllDbmsStts() {
+        return this.dbmsSttsService.findAll();
     }
 
 }

+ 1 - 2
src/main/java/com/its/op/dao/mapper/its/dbms/DbmsSttsMapper.java

@@ -2,7 +2,6 @@ package com.its.op.dao.mapper.its.dbms;
 
 import com.its.op.dto.its.dbms.SessionSttsDto;
 import com.its.op.dto.its.dbms.TbDbmsSttsDto;
-import com.its.op.dto.its.dbms.TbTbDbmsSttsDto;
 import com.its.op.dto.its.dbms.TblSpaceSttsDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -15,6 +14,6 @@ public interface DbmsSttsMapper {
     List<TbDbmsSttsDto> findAll();
     List<SessionSttsDto> findSessionUsage();
     List<TblSpaceSttsDto> findTblsUsage();
-    int updateDbmsStts(@Param("stts") TbTbDbmsSttsDto stts);
+    int updateDbmsStts(@Param("stts") TbDbmsSttsDto stts);
 
 }

+ 0 - 26
src/main/java/com/its/op/dao/repository/its/database/TbDbSvrSttsRepository.java

@@ -1,26 +0,0 @@
-package com.its.op.dao.repository.its.database;
-
-import com.its.op.entity.its.database.TbDbSvrStts;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-@Repository
-public interface TbDbSvrSttsRepository extends JpaRepository<TbDbSvrStts, String>, JpaSpecificationExecutor<TbDbSvrStts> {
-
-    @Query("select p from TbDbSvrStts p")
-    List<TbDbSvrStts> findAll();
-
-    @Transactional
-    @Modifying
-    @Query("update TbDbSvrStts p set p.tblsNm = :tblsNm, p.tblsRmndCpct = :tblsRmndCpct, p.useSesn = :useSesn, p.updtDt = :updtDt " +
-           " where p.dbSvrId = :dbSvrId")
-    void updateStts(@Param("dbSvrId") String dbSvrId, @Param("tblsNm") String tblsNm, @Param("tblsRmndCpct") String tblsRmndCpct, @Param("useSesn") String useSesn, @Param("updtDt") String updtDt);
-
-}

+ 0 - 78
src/main/java/com/its/op/dto/its/database/TbDbSvrSttsDto.java

@@ -1,78 +0,0 @@
-package com.its.op.dto.its.database;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.its.op.entity.its.database.TbDbSvrStts;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Builder;
-import lombok.Data;
-import lombok.ToString;
-
-import java.io.Serializable;
-
-/**
- * DB 서버 상태 DTO Class
- */
-@Data
-@ToString
-@Builder
-@ApiModel("TbDbSvrSttsDto(DB 서버 상태)")
-public class TbDbSvrSttsDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty("DB 서버 ID")  // N VARCHAR(30)
-    @JsonProperty("db_svr_id")
-    private String dbSvrId;
-
-    @ApiModelProperty("DB 서버 명")  // Y VARCHAR(50)
-    @JsonProperty("db_svr_nm")
-    private String dbSvrNm;
-
-    @ApiModelProperty("테이블스페이스 명")  // Y VARCHAR(50)
-    @JsonProperty("tbls_nm")
-    private String tblsNm;
-
-    @ApiModelProperty("테이블스페이스 잔여 용량")  // Y VARCHAR(30)
-    @JsonProperty("tbls_rmnd_cpct")
-    private String tblsRmndCpct;
-
-    @ApiModelProperty("사용 세션")  // Y VARCHAR(30)
-    @JsonProperty("use_sesn")
-    private String useSesn;
-
-    //@ApiModelProperty("DB 서버 IP")  // Y VARCHAR(20)
-    //@JsonProperty("db_svr_ip")
-    @JsonIgnore
-    private String dbSvrIp;
-
-    //@ApiModelProperty("DB 서버 PORT")  // Y VARCHAR(5)
-    //@JsonProperty("db_svr_port")
-    @JsonIgnore
-    private String dbSvrPort;
-
-    //@ApiModelProperty("DB 서버 SID")  // Y VARCHAR(30)
-    //@JsonProperty("db_svr_sid")
-    @JsonIgnore
-    private String dbSvrSid;
-
-    @ApiModelProperty("갱신 일시")  // Y VARCHAR(14)
-    @JsonProperty("updt_dt")
-    private String updtDt;
-
-    // Code Description Field
-    public TbDbSvrStts toEntity() {
-        return TbDbSvrStts.builder()
-                .dbSvrId(this.dbSvrSid)
-                .dbSvrNm(this.dbSvrNm)
-                .tblsNm(this.tblsNm)
-                .tblsRmndCpct(this.tblsRmndCpct)
-                .useSesn(this.useSesn)
-                .dbSvrIp(this.dbSvrIp)
-                .dbSvrPort(this.dbSvrPort)
-                .dbSvrSid(this.dbSvrSid)
-                .updtDt(this.updtDt)
-                .build();
-    }
-
-}

+ 0 - 27
src/main/java/com/its/op/dto/its/dbms/TbTbDbmsSttsDto.java

@@ -1,27 +0,0 @@
-package com.its.op.dto.its.dbms;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * DBMS 정보 DTO Class
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class TbTbDbmsSttsDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String DBMS_ID;
-    private Integer INST_ID;
-    private String STTS_TYPE;
-    private String STTS_NAME;
-    private String STTS;
-    private String UPDT_DT;
-
-}

+ 2 - 0
src/main/java/com/its/op/dto/its/dbms/TblSpaceSttsDto.java

@@ -18,6 +18,8 @@ public class TblSpaceSttsDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private String TBLS_NM;
+    private Double TOTAL;
+    private Double FREE;
     private Double TBLS_REMAIN_STTS;
 
 }

+ 0 - 78
src/main/java/com/its/op/entity/its/database/TbDbSvrStts.java

@@ -1,78 +0,0 @@
-package com.its.op.entity.its.database;
-
-import com.its.op.dto.its.database.TbDbSvrSttsDto;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.*;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import java.io.Serializable;
-
-/**
- * DB 서버 상태 Entity Class
- */
-@Getter
-@NoArgsConstructor//(access = AccessLevel.PROTECTED)
-@Builder
-@AllArgsConstructor
-@ApiModel("DB 서버 상태")
-@Entity
-@Table(name = "TB_DB_SVR_STTS")
-public class TbDbSvrStts implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty("DB 서버 ID")  // N VARCHAR(30)
-    @Id
-    @Column(name = "DB_SVR_ID", nullable = false, length = 30)
-    private String dbSvrId;
-
-    @ApiModelProperty("DB 서버 명")  // Y VARCHAR(50)
-    @Column(name = "DB_SVR_NM", length = 50)
-    private String dbSvrNm;
-
-    @ApiModelProperty("테이블스페이스 명")  // Y VARCHAR(50)
-    @Column(name = "TBLS_NM", length = 50)
-    private String tblsNm;
-
-    @ApiModelProperty("테이블스페이스 잔여 용량")  // Y VARCHAR(30)
-    @Column(name = "TBLS_RMND_CPCT", length = 30)
-    private String tblsRmndCpct;
-
-    @ApiModelProperty("사용 세션")  // Y VARCHAR(30)
-    @Column(name = "USE_SESN", length = 30)
-    private String useSesn;
-
-    @ApiModelProperty("DB 서버 IP")  // Y VARCHAR(20)
-    @Column(name = "DB_SVR_IP", length = 20)
-    private String dbSvrIp;
-
-    @ApiModelProperty("DB 서버 PORT")  // Y VARCHAR(5)
-    @Column(name = "DB_SVR_PORT", length = 5)
-    private String dbSvrPort;
-
-    @ApiModelProperty("DB 서버 SID")  // Y VARCHAR(30)
-    @Column(name = "DB_SVR_SID", length = 30)
-    private String dbSvrSid;
-
-    @ApiModelProperty("갱신 일시")  // Y VARCHAR(14)
-    @Column(name = "UPDT_DT", length = 14)
-    private String updtDt;
-
-    public TbDbSvrSttsDto toDto() {
-        return TbDbSvrSttsDto.builder()
-                .dbSvrId(this.dbSvrId)
-                .dbSvrNm(this.dbSvrNm)
-                .tblsNm(this.tblsNm)
-                .tblsRmndCpct(this.tblsRmndCpct)
-                .useSesn(this.useSesn)
-                .dbSvrIp(this.dbSvrIp)
-                .dbSvrPort(this.dbSvrPort)
-                .dbSvrSid(this.dbSvrSid)
-                .updtDt(this.updtDt)
-                .build();
-    }
-
-}

+ 1 - 1
src/main/java/com/its/op/scheduler/ItsApiScheduler.java

@@ -25,7 +25,6 @@ public class ItsApiScheduler {
     private final UnitSttsJobThread unitSttsJobThread;
     private final BaseDbmsJobThread baseDbmsJobThread;
     private final DbmsSttsJobThread dbmsSttsJobThread;
-    //private final DbSvrSttsJobThread dbSvrSttsJobThread;
 
     @PreDestroy
     public void onShutDown() {
@@ -96,6 +95,7 @@ public class ItsApiScheduler {
      */
     @Async
     @Scheduled(cron = "40 0/10 * * * *")  // 10분 주기 작업 실행
+    //@Scheduled(cron = "40 * * * * *")  // 10분 주기 작업 실행
     public void jobDbSvrStts() {
         if (!this.processConfig.isStartSchedule()) {
             return;

+ 0 - 163
src/main/java/com/its/op/scheduler/job/DbSvrSttsJobThread.java

@@ -1,163 +0,0 @@
-package com.its.op.scheduler.job;
-
-import com.its.op.dao.repository.its.database.TbDbSvrSttsRepository;
-import com.its.op.dto.its.database.TbDbSvrSttsDto;
-import com.its.op.entity.its.database.TbDbSvrStts;
-import com.its.utils.ItsUtils;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.util.StopWatch;
-
-import javax.annotation.PostConstruct;
-import java.sql.*;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-@Slf4j
-@AllArgsConstructor
-//@Service
-public class DbSvrSttsJobThread {
-
-    private final TbDbSvrSttsRepository dbSvrSttsRepo;
-    private final String JDBC_DRIVER = "com.tmax.tibero.jdbc.TbDriver";
-    private final String username = "sys";
-    private final String password = "tibero";
-
-    @PostConstruct
-    private void init() {
-        log.info("{}", this);
-    }
-
-    @Async("schJobExecutor")
-    public void run() {
-
-        log.info("START: DbSvrSttsJobThread.run: {}", Thread.currentThread().getName());
-
-        StopWatch stopWatch = new StopWatch();
-        stopWatch.start();
-
-        List<TbDbSvrSttsDto> result = new ArrayList<TbDbSvrSttsDto>();
-        List<TbDbSvrStts> dbms = this.dbSvrSttsRepo.findAll();
-        dbms.forEach(db -> {
-            try {
-                TbDbSvrSttsDto dto = executeDbSvrStts(db);
-                result.add(dto);
-            }
-            catch(Exception e) {
-                log.error("run: Exception, {}, {}", db.getDbSvrId(), e.getMessage());
-            }
-        });
-
-        // 결과 저장
-        result.forEach((obj) -> {
-            this.dbSvrSttsRepo.updateStts(obj.getDbSvrId(), obj.getTblsNm(), obj.getTblsRmndCpct(), obj.getUseSesn(), obj.getUpdtDt());
-        });
-        stopWatch.stop();
-        log.info("--END: DbSvrSttsJobThread.run: {}, {} ms.", Thread.currentThread().getName(), stopWatch.getTotalTimeMillis());
-    }
-
-    TbDbSvrSttsDto executeDbSvrStts(TbDbSvrStts db) throws SQLException {
-        TbDbSvrSttsDto dto = db.toDto();
-        String dbUrl = String.format("jdbc:tibero:thin:@%s:%s:%s", db.getDbSvrIp(), db.getDbSvrPort(), db.getDbSvrSid());
-        String sql1 = 
-                "SELECT A.TABLESPACE_NAME AS TBLS_NM, " +
-                "       100 - ROUND((A.TOTAL - NVL(B.FREE,0))*100/TOTAL,2) AS TBLS_RMND_CPCT " +
-                "  FROM (SELECT X.TABLESPACE_NAME, ROUND((SUM(X.BYTES)/1024/1024),0) AS TOTAL " +
-                "          FROM DBA_DATA_FILES X " +
-                "         GROUP BY X.TABLESPACE_NAME) A, " +
-                "       (SELECT Y.TABLESPACE_NAME, ROUND((SUM(Y.BYTES)/1024/1024),0) AS FREE " +
-                "          FROM DBA_FREE_SPACE Y " +
-                "         GROUP BY Y.TABLESPACE_NAME) B " +
-                " WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+) " +
-                "   AND A.TABLESPACE_NAME IN (   'UTIS_HIST_DATA6' " +
-                "                             , 'UTIS_HIST_INDX' " +
-                "                             , 'UTIS_TBS_DATA' " +
-                "                             , 'UTIS_TBS_INDX' " +
-                "                             , 'TS_BIS01_DAT' " +
-                "                             , 'TS_BIS01_IDX' " +
-                "                             , 'TS_BIS02_DAT' " +
-                "                             , 'TS_BIS02_IDX' " +
-                "                             , 'TS_BIS03_DAT' " +
-                "                             , 'TS_BIS03_IDX' " +
-                "                             , 'TS_BIS04_DAT' " +
-                "                             , 'TS_BIS04_IDX' " +
-                "                             , 'TS_BIS05_DAT' " +
-                "                             , 'TS_BIS05_IDX' " +
-                "                             , 'TS_BIS06_DAT' " +
-                "                             , 'TS_BIS06_IDX' " +
-                "                             , 'TS_EXT01_DAT' " +
-                "                             , 'TS_EXT01_IDX' " +
-                "                             , 'TS_MST01_DAT' " +
-                "                             , 'TS_MST01_IDX' " +
-                "                             , 'ITS_HIST_DATA' " +
-                "                             , 'ITS_HIST_INDX' " +
-                "                             , 'TS_GIS01_DAT' " +
-                "                             , 'TS_SIG01_DAT' " +
-                "                             , 'TS_SIG01_IDX' " +
-                "                             , 'TS_MST01_DAT' " +
-                "                             , 'TS_MST01_IDX' " +
-                "                             , 'TS_ITS02_DAT' " +
-                "                             , 'TS_ITS02_IDX' " +
-                "                             )";
-
-        String sql2 =
-                "SELECT ROUND(RUNNING / TOTAL * 100, 1) AS USE_SESN " +
-                "  FROM (SELECT COUNT(1) AS TOTAL, SUM(DECODE(STATUS, 'RUNNING', 1, 0)) AS RUNNING FROM v$session)";
-
-        Connection conn = null;
-        try {
-            Class.forName(this.JDBC_DRIVER);
-            DriverManager.setLoginTimeout(10);
-            Properties properties = new Properties();
-            properties.put("connectTimeout", "2000");
-            conn = DriverManager.getConnection(dbUrl, this.username, this.password);
-
-            String TBLS_NM = "";
-            double TBLS_RMND_CPCT = 100.0;
-            PreparedStatement stmt1 = conn.prepareStatement(sql1);
-            stmt1.setQueryTimeout(10);
-            ResultSet rs1 = stmt1.executeQuery();
-            while(rs1.next()) {
-                String tblsNm = rs1.getString("TBLS_NM");
-                Double tblsRmndCpct = rs1.getDouble("TBLS_RMND_CPCT");
-                if (TBLS_RMND_CPCT > tblsRmndCpct) {
-                    TBLS_NM = tblsNm;
-                    TBLS_RMND_CPCT = tblsRmndCpct;
-                }
-            }
-            dto.setTblsNm(TBLS_NM);
-            dto.setTblsRmndCpct(String.valueOf(TBLS_RMND_CPCT));
-            rs1.close();
-            stmt1.close();
-
-            PreparedStatement stmt2 = conn.prepareStatement(sql2);
-            stmt2.setQueryTimeout(10);
-            ResultSet rs2 = stmt2.executeQuery();
-            while(rs2.next()) {
-                Double useSesn = rs2.getDouble("USE_SESN");
-                dto.setUseSesn(String.valueOf(useSesn));
-            }
-            rs2.close();
-            stmt2.close();
-        }
-        catch(SQLException e) {
-            log.error("executeDbSvrStts: SQLException, {}, {}, {}", dbUrl, db.getDbSvrIp(), e.getMessage());
-            throw new RuntimeException(dbUrl + e.getMessage(), e);
-        }
-        catch (ClassNotFoundException e) {
-            log.error("executeDbSvrStts: ClassNotFoundException, {}, {}, {}", dbUrl, db.getDbSvrIp(), e.getMessage());
-            throw new RuntimeException(dbUrl + e.getMessage(), e);
-        }
-        finally {
-            if (conn != null) {
-                conn.close();
-            }
-        }
-
-        dto.setUpdtDt(ItsUtils.getSysTime());
-        return dto;
-    }
-
-}

+ 105 - 54
src/main/java/com/its/op/scheduler/job/DbmsSttsJobThread.java

@@ -4,7 +4,7 @@ import com.its.op.config.AppUtils;
 import com.its.op.dao.mapper.bis.BisDbmsSttsMapper;
 import com.its.op.dao.mapper.its.dbms.DbmsSttsMapper;
 import com.its.op.dto.its.dbms.SessionSttsDto;
-import com.its.op.dto.its.dbms.TbTbDbmsSttsDto;
+import com.its.op.dto.its.dbms.TbDbmsSttsDto;
 import com.its.op.dto.its.dbms.TblSpaceSttsDto;
 import com.its.utils.ItsUtils;
 import lombok.AllArgsConstructor;
@@ -15,9 +15,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StopWatch;
 
 import javax.annotation.PostConstruct;
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
 
 @Slf4j
 @AllArgsConstructor
@@ -40,91 +41,141 @@ public class DbmsSttsJobThread {
         StopWatch stopWatch = new StopWatch();
         stopWatch.start();
 
-        //List<TbDbmsSttsDto> dbms = this.dbmsSttsMapper.findAll();
-        List<TbTbDbmsSttsDto> result = new ArrayList<>();
-//        private String DBMS_ID;
-//        private Integer INST_ID;
-//        private String STTS_TYPE;
-//        private String STTS_NAME;
-//        private String STTS;
-//        private String UPDT_DT;
+        AtomicReference<String> itsMaxTblsName = new AtomicReference<>("");
+        AtomicReference<String> bisMaxTblsName = new AtomicReference<>("");
+
+        HashMap<String, TbDbmsSttsDto> dbmsMap = new HashMap<>();
+        List<TbDbmsSttsDto> dbms = this.dbmsSttsMapper.findAll();
+        dbms.forEach((obj) -> {
+            dbmsMap.put(obj.getDbSvrId(), obj);
+            if (obj.getDbSvrId().equals("2")) {
+                itsMaxTblsName.set(obj.getTblsNm());
+            } else if (obj.getDbSvrId().equals("4")) {
+                bisMaxTblsName.set(obj.getTblsNm());
+            }
+        });
 
         String UPDT_DT = ItsUtils.getSysTime();
-
         List<SessionSttsDto> session = this.dbmsSttsMapper.findSessionUsage();
         session.forEach((obj) -> {
-            String STTS_NAME;
+            String dbSvrId;
             if (obj.getINST_ID() == 101) {
-                STTS_NAME = "ITS DB #1";
+                dbSvrId = "1";
             } else if (obj.getINST_ID() == 102) {
-                STTS_NAME = "ITS DB #2";
+                dbSvrId = "2";
             } else {
                 return;
             }
-            TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
-                    .DBMS_ID("ITS")
-                    .INST_ID(obj.getINST_ID())
-                    .STTS_TYPE("SESSION")
-                    .STTS_NAME(STTS_NAME)
-                    .STTS(String.valueOf(obj.getUSE_SESN()))
-                    .UPDT_DT(UPDT_DT)
-                    .build();
-            result.add(data);
+            TbDbmsSttsDto data = dbmsMap.get(dbSvrId);
+            if (data != null) {
+                data.setUseSesn(String.valueOf(obj.getUSE_SESN()));
+                data.setUpdtDt(UPDT_DT);
+            }
         });
 
+        final String[] minTblsName = new String[1];
+        final Double[] minFree = {100.0};
+        final Double[] total = {0.0};
+        final Double[] free = {0.0};
+
+        minTblsName[0] = itsMaxTblsName.get();
         List<TblSpaceSttsDto> tbls = this.dbmsSttsMapper.findTblsUsage();
         tbls.forEach((obj) -> {
-            TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
-                    .DBMS_ID("ITS")
-                    .INST_ID(101)
-                    .STTS_TYPE("SPACE")
-                    .STTS_NAME(obj.getTBLS_NM())
-                    .STTS(String.valueOf(obj.getTBLS_REMAIN_STTS()))
-                    .UPDT_DT(UPDT_DT)
-                    .build();
-            result.add(data);
+            if (obj.getTBLS_NM().contains("UNDO")) {
+                return;
+            }
+            if (!obj.getTBLS_NM().contains("_")) {
+                return;
+            }
+            total[0] += obj.getTOTAL();
+            free[0] += obj.getFREE();
+            if (minFree[0] > obj.getTBLS_REMAIN_STTS()) {
+                minTblsName[0] = obj.getTBLS_NM();
+                minFree[0] = obj.getTBLS_REMAIN_STTS();
+            }
         });
+        Double totalRemain = 100 - ((total[0] - free[0]) * 100 / total[0]);
+        String tblsRmndCpct = String.format("%.2f", totalRemain);
+        TbDbmsSttsDto data1 = dbmsMap.get("1");
+        if (data1 != null) {
+            data1.setTblsRmndCpct(tblsRmndCpct);
+            data1.setUpdtDt(UPDT_DT);
+        }
+        TbDbmsSttsDto data2 = dbmsMap.get("2");
+        if (data2 != null) {
+            data2.setTblsNm(minTblsName[0]);
+            data2.setTblsRmndCpct(String.valueOf(minFree[0]));
+            data2.setUpdtDt(UPDT_DT);
+        }
+        //log.info("ITS DBMS: Total {}, Free {}", total[0], free[0]);
 
+        /**
+         * BIS DBMS STTS
+         */
         boolean isRunBis = Arrays.asList(environment.getActiveProfiles()).contains("bis");
         if (isRunBis) {
             BisDbmsSttsMapper bisDbmsSttsMapper = (BisDbmsSttsMapper) AppUtils.getBean(BisDbmsSttsMapper.class);;
             List<SessionSttsDto> bisSession = bisDbmsSttsMapper.findSessionUsage();
             bisSession.forEach((obj) -> {
-                String STTS_NAME;
+                String dbSvrId;
                 if (obj.getINST_ID() == 101) {
-                    STTS_NAME = "BIS DB #1";
+                    dbSvrId = "3";
                 } else if (obj.getINST_ID() == 102) {
-                    STTS_NAME = "BIS DB #2";
+                    dbSvrId = "4";
                 } else {
                     return;
                 }
-                TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
-                        .DBMS_ID("BIS")
-                        .INST_ID(obj.getINST_ID())
-                        .STTS_TYPE("SESSION")
-                        .STTS_NAME(STTS_NAME)
-                        .STTS(String.valueOf(obj.getUSE_SESN()))
-                        .UPDT_DT(UPDT_DT)
-                        .build();
-                result.add(data);
+                TbDbmsSttsDto data = dbmsMap.get(dbSvrId);
+                if (data != null) {
+                    data.setUseSesn(String.valueOf(obj.getUSE_SESN()));
+                    data.setUpdtDt(UPDT_DT);
+                }
             });
 
+            final String[] bisMinTblsName = new String[1];
+            final Double[] bisMinFree = {100.0};
+            final Double[] bisTotal = {0.0};
+            final Double[] bisFree = {0.0};
+
+            bisMinTblsName[0] = bisMaxTblsName.get();
+
             List<TblSpaceSttsDto> bisTbls = bisDbmsSttsMapper.findTblsUsage();
             bisTbls.forEach((obj) -> {
-                TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
-                        .DBMS_ID("BIS")
-                        .INST_ID(101)
-                        .STTS_TYPE("SPACE")
-                        .STTS_NAME(obj.getTBLS_NM())
-                        .STTS(String.valueOf(obj.getTBLS_REMAIN_STTS()))
-                        .UPDT_DT(UPDT_DT)
-                        .build();
-                result.add(data);
+                if (obj.getTBLS_NM().contains("UNDO")) {
+                    return;
+                }
+                if (!obj.getTBLS_NM().contains("_")) {
+                    return;
+                }
+                bisTotal[0] += obj.getTOTAL();
+                bisFree[0] += obj.getFREE();
+                if (bisMinFree[0] > obj.getTBLS_REMAIN_STTS()) {
+                    bisMinTblsName[0] = obj.getTBLS_NM();
+                    bisMinFree[0] = obj.getTBLS_REMAIN_STTS();
+                }
             });
+            Double bisTotalRemain = 100 - ((bisTotal[0] - bisFree[0]) * 100 / bisTotal[0]);
+            String bisTblsRmndCpct = String.format("%.2f", bisTotalRemain);
+            TbDbmsSttsDto data3 = dbmsMap.get("3");
+            if (data3 != null) {
+                data3.setTblsRmndCpct(bisTblsRmndCpct);
+                data3.setUpdtDt(UPDT_DT);
+            }
+            TbDbmsSttsDto data4 = dbmsMap.get("4");
+            if (data4 != null) {
+                data4.setTblsNm(bisMinTblsName[0]);
+                data4.setTblsRmndCpct(String.valueOf(bisMinFree[0]));
+                data4.setUpdtDt(UPDT_DT);
+            }
+            //log.info("BIS DBMS: Total {}, Free {}", bisTotal[0], bisFree[0]);
         }
 
         // 결과 저장
-        result.forEach((obj) -> {
+//        for (Map.Entry<String, TbDbmsSttsDto> entry : dbmsMap.entrySet()) {
+//            TbDbmsSttsDto obj = entry.getValue();
+//            this.dbmsSttsMapper.updateDbmsStts(obj);
+//        }
+        dbmsMap.forEach((key, obj) -> {
             this.dbmsSttsMapper.updateDbmsStts(obj);
         });
         stopWatch.stop();

+ 1 - 1
src/main/java/com/its/op/service/bis/BisProcessService.java

@@ -73,7 +73,7 @@ public class BisProcessService {
         sttsList.forEach(obj -> {
             TbUnitSystSttsDto stts = result.get(obj.getProcessid());
             if (stts != null) {
-                log.error("{}, {}, {}", obj.getProcessid(), obj.getProcessstatus(), obj.getProcessstatekind());
+                //log.error("{}, {}, {}", obj.getProcessid(), obj.getProcessstatus(), obj.getProcessstatekind());
                 if (("4").equals(obj.getProcessstatekind())) {
                     if (("1").equals(obj.getProcessstatus())) {
                         stts.setRunSts("0");

+ 0 - 39
src/main/java/com/its/op/service/its/database/TbDbSvrSttsService.java

@@ -1,39 +0,0 @@
-package com.its.op.service.its.database;
-
-import com.its.op.dao.mapper.its.dbms.DbmsSttsMapper;
-import com.its.op.dao.repository.its.database.TbDbSvrSttsRepository;
-import com.its.op.dto.its.database.TbDbSvrSttsDto;
-import com.its.op.dto.its.dbms.TbDbmsSttsDto;
-import com.its.op.entity.its.database.TbDbSvrStts;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class TbDbSvrSttsService {
-
-    private final TbDbSvrSttsRepository repo;
-    private final DbmsSttsMapper mapper;
-
-    // 전체 데이터 조회
-    @Transactional(readOnly = true)
-    public List<TbDbSvrSttsDto> findAll() {
-        List<TbDbSvrSttsDto> result = new ArrayList<>();
-        List<TbDbSvrStts> data = this.repo.findAll();
-        for (TbDbSvrStts entity : data) {
-            result.add(entity.toDto());
-        }
-        return result;
-    }
-
-    public List<TbDbmsSttsDto> findAllDbmsStts() {
-        return this.mapper.findAll();
-    }
-
-}

+ 24 - 0
src/main/java/com/its/op/service/its/dbms/TbDbmsSttsService.java

@@ -0,0 +1,24 @@
+package com.its.op.service.its.dbms;
+
+import com.its.op.dao.mapper.its.dbms.DbmsSttsMapper;
+import com.its.op.dto.its.dbms.TbDbmsSttsDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbDbmsSttsService {
+
+    private final DbmsSttsMapper mapper;
+
+    // 전체 데이터 조회
+    // 전체 데이터 조회
+    public List<TbDbmsSttsDto> findAll() {
+        return this.mapper.findAll();
+    }
+
+}

+ 6 - 2
src/main/resources/mybatis/mapper/bis/BisDbmsSttsMapper.xml

@@ -4,11 +4,14 @@
 <mapper namespace="com.its.op.dao.mapper.bis.BisDbmsSttsMapper">
 
     <select id="findSessionUsage" resultType="com.its.op.dto.its.dbms.SessionSttsDto">
+        <![CDATA[
         SELECT INST_ID AS INST_ID, ROUND(COUNT(1) / 400 * 100, 1) AS USE_SESN FROM GV$SESSION GROUP BY INST_ID
+        ]]>
     </select>
 
     <select id="findTblsUsage" resultType="com.its.op.dto.its.dbms.TblSpaceSttsDto">
-        SELECT A.TABLESPACE_NAME AS TBLS_NM,
+        <![CDATA[
+        SELECT A.TABLESPACE_NAME AS TBLS_NM, A.TOTAL AS TOTAL, B.FREE AS FREE,
                100 - ROUND((A.TOTAL - NVL(B.FREE,0))*100/TOTAL,2) AS TBLS_REMAIN_STTS
         FROM (SELECT X.TABLESPACE_NAME, ROUND((SUM(X.BYTES)/1024/1024),0) AS TOTAL
               FROM DBA_DATA_FILES X
@@ -17,7 +20,8 @@
               FROM DBA_FREE_SPACE Y
               GROUP BY Y.TABLESPACE_NAME) B
         WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
-          AND A.TABLESPACE_NAME IN ('TS_BIS03_DAT' , 'TS_BIS03_IDX')
+          AND A.TABLESPACE_NAME NOT IN ('UNDO', 'UNDO0', 'UNDO1', 'USR', 'TEMP', 'SYSTEM')
+        ]]>
     </select>
 
 </mapper>

+ 15 - 24
src/main/resources/mybatis/mapper/its/dbms/DbmsSttsMapper.xml

@@ -12,11 +12,14 @@
     </select>
 
     <select id="findSessionUsage" resultType="com.its.op.dto.its.dbms.SessionSttsDto">
+        <![CDATA[
         SELECT INST_ID AS INST_ID, ROUND(COUNT(1) / 200 * 100, 1) AS USE_SESN FROM GV$SESSION GROUP BY INST_ID
+        ]]>
     </select>
 
     <select id="findTblsUsage" resultType="com.its.op.dto.its.dbms.TblSpaceSttsDto">
-        SELECT A.TABLESPACE_NAME AS TBLS_NM,
+        <![CDATA[
+        SELECT A.TABLESPACE_NAME AS TBLS_NM, A.TOTAL AS TOTAL, B.FREE AS FREE,
                100 - ROUND((A.TOTAL - NVL(B.FREE,0))*100/TOTAL,2) AS TBLS_REMAIN_STTS
         FROM (SELECT X.TABLESPACE_NAME, ROUND((SUM(X.BYTES)/1024/1024),0) AS TOTAL
               FROM DBA_DATA_FILES X
@@ -25,31 +28,19 @@
               FROM DBA_FREE_SPACE Y
               GROUP BY Y.TABLESPACE_NAME) B
         WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
-          AND A.TABLESPACE_NAME IN ('ITS_HIST_DATA' , 'ITS_HIST_INDX')
+          AND A.TABLESPACE_NAME NOT IN ('UNDO', 'UNDO0', 'UNDO1', 'USR', 'TEMP', 'SYSTEM')
+        ]]>
     </select>
 
-    <update id="updateDbmsStts" parameterType="com.its.op.dto.its.dbms.TbTbDbmsSttsDto">
-    MERGE INTO TB_DBMS_STTS L
-    USING (SELECT
-               #{stts.DBMS_ID}   AS DBMS_ID,
-               #{stts.INST_ID}   AS INST_ID,
-               #{stts.STTS_TYPE} AS STTS_TYPE,
-               #{stts.STTS_NAME} AS STTS_NAME,
-               #{stts.STTS}      AS STTS,
-               #{stts.UPDT_DT}   AS UPDT_DT
-           FROM DUAL) M
-       ON (L.DBMS_ID   = M.DBMS_ID
-       AND L.INST_ID   = M.INST_ID
-       AND L.STTS_TYPE = M.STTS_TYPE
-       AND L.STTS_NAME = M.STTS_NAME
-           )
-    WHEN MATCHED THEN
-        UPDATE SET
-                   L.STTS    = M.STTS,
-                   L.UPDT_DT = M.UPDT_DT
-    WHEN NOT MATCHED THEN
-        INSERT (  DBMS_ID,   INST_ID,   STTS_TYPE,   STTS_NAME,   STTS,   UPDT_DT )
-        VALUES (M.DBMS_ID, M.INST_ID, M.STTS_TYPE, M.STTS_NAME, M.STTS, M.UPDT_DT )
+    <update id="updateDbmsStts" parameterType="com.its.op.dto.its.dbms.TbDbmsSttsDto">
+        <![CDATA[
+        UPDATE TB_DBMS_STTS
+           SET TBLS_NM        = #{stts.tblsNm},
+               TBLS_RMND_CPCT = #{stts.tblsRmndCpct},
+               USE_SESN       = #{stts.useSesn},
+               UPDT_DT        = #{stts.updtDt}
+        WHERE DBMS_ID         = #{stts.dbSvrId}
+        ]]>
 </update>
 
 </mapper>