|
|
@@ -15,7 +15,6 @@ import org.springframework.util.StopWatch;
|
|
|
import javax.annotation.PostConstruct;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
-import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
@Slf4j
|
|
|
@AllArgsConstructor
|
|
|
@@ -38,84 +37,89 @@ public class DbmsSttsJobThread {
|
|
|
StopWatch stopWatch = new StopWatch();
|
|
|
stopWatch.start();
|
|
|
|
|
|
- AtomicReference<String> itsMaxTblsName = new AtomicReference<>("");
|
|
|
- AtomicReference<String> bisMaxTblsName = new AtomicReference<>("");
|
|
|
+ HashMap<String, TbDbmsSttsDto> sessionMap = new HashMap<>();
|
|
|
+ HashMap<String, TbDbmsSttsDto> tbsMap = new HashMap<>();
|
|
|
|
|
|
- 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());
|
|
|
+ if ("1".equals(obj.getDbSvrId()) || "2".equals(obj.getDbSvrId())) {
|
|
|
+ sessionMap.put(obj.getDbSvrId(), obj);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ tbsMap.put(obj.getTblsNm(), obj);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
String UPDT_DT = ItsUtils.getSysTime();
|
|
|
List<SessionSttsDto> session = this.dbmsSttsMapper.findSessionUsage();
|
|
|
session.forEach((obj) -> {
|
|
|
- String dbSvrId;
|
|
|
- if (obj.getINST_ID() == 101) {
|
|
|
- dbSvrId = "1";
|
|
|
- } else if (obj.getINST_ID() == 102) {
|
|
|
- dbSvrId = "2";
|
|
|
- } else {
|
|
|
- return;
|
|
|
- }
|
|
|
- TbDbmsSttsDto data = dbmsMap.get(dbSvrId);
|
|
|
+ String dbSvrId = String.valueOf(obj.getINST_ID());
|
|
|
+ TbDbmsSttsDto data = sessionMap.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};
|
|
|
+ Double minFree = 100.0;
|
|
|
+ Double total = 0.0;
|
|
|
+ Double free = 0.0;
|
|
|
|
|
|
- minTblsName[0] = itsMaxTblsName.get();
|
|
|
List<TblSpaceSttsDto> tbls = this.dbmsSttsMapper.findTblsUsage();
|
|
|
- tbls.forEach((obj) -> {
|
|
|
- if (obj.getTBLS_NM().contains("UNDO")) {
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!obj.getTBLS_NM().contains("_")) {
|
|
|
- return;
|
|
|
+ for (TblSpaceSttsDto obj : tbls) {
|
|
|
+ total += obj.getTOTAL();
|
|
|
+ free += obj.getFREE();
|
|
|
+ if (minFree > obj.getTBLS_REMAIN_STTS()) {
|
|
|
+ minFree = obj.getTBLS_REMAIN_STTS();
|
|
|
}
|
|
|
- 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();
|
|
|
+ TbDbmsSttsDto data = tbsMap.get(obj.getTBLS_NM());
|
|
|
+ if (data != null) {
|
|
|
+ Double totalRemain = 100 - obj.getTBLS_REMAIN_STTS();
|
|
|
+ String tblsRmndCpct = String.format("%.2f", totalRemain);
|
|
|
+ data.setTblsRmndCpct(tblsRmndCpct);
|
|
|
+ data.setUpdtDt(UPDT_DT);
|
|
|
}
|
|
|
- });
|
|
|
- Double totalRemain = 100 - ((total[0] - free[0]) * 100 / total[0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ Double totalRemain = 100 - ((total - free) * 100 / total);
|
|
|
String tblsRmndCpct = String.format("%.2f", totalRemain);
|
|
|
- TbDbmsSttsDto data1 = dbmsMap.get("1");
|
|
|
+ TbDbmsSttsDto data1 = sessionMap.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]);
|
|
|
|
|
|
// 결과 저장
|
|
|
-// for (Map.Entry<String, TbDbmsSttsDto> entry : dbmsMap.entrySet()) {
|
|
|
-// TbDbmsSttsDto obj = entry.getValue();
|
|
|
-// this.dbmsSttsMapper.updateDbmsStts(obj);
|
|
|
-// }
|
|
|
- dbmsMap.forEach((key, obj) -> {
|
|
|
- this.dbmsSttsMapper.updateDbmsStts(obj);
|
|
|
+ sessionMap.forEach((key, obj) -> {
|
|
|
+ updateDbmsStts(obj);
|
|
|
});
|
|
|
+ tbsMap.forEach((key, obj) -> {
|
|
|
+ updateDbmsStts(obj);
|
|
|
+ });
|
|
|
+
|
|
|
stopWatch.stop();
|
|
|
log.info("--END: DbmsSttsJobThread.run: {}, {} ms.", Thread.currentThread().getName(), stopWatch.getTotalTimeMillis());
|
|
|
}
|
|
|
|
|
|
+ public void updateDbmsStts(TbDbmsSttsDto obj) {
|
|
|
+ try {
|
|
|
+ if (obj.getUpdtDt() == null) {
|
|
|
+ obj.setUpdtDt(ItsUtils.getSysTime());
|
|
|
+ }
|
|
|
+ if (obj.getDbSvrNm() == null) {
|
|
|
+ obj.setDbSvrNm("");
|
|
|
+ }
|
|
|
+ if (obj.getUseSesn() == null) {
|
|
|
+ obj.setUseSesn("");
|
|
|
+ }
|
|
|
+ if (obj.getTblsRmndCpct() == null) {
|
|
|
+ obj.setTblsRmndCpct("");
|
|
|
+ }
|
|
|
+ this.dbmsSttsMapper.updateDbmsStts(obj);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("Error updating: {}", obj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|