- CollectDB 다중 신호 수집 → S&P Global AIS API 단일 수집으로 전환 - sig_src_cd + target_id 이중 식별자 → mmsi(VARCHAR) 단일 식별자 - t_vessel_latest_position → t_ais_position 테이블 전환 - 레거시 배치/유틸 ~30개 클래스 삭제 (VesselAggregationJobConfig, ShipKindCodeConverter 등) - AisTargetCacheManager 기반 캐시 이중 구조 (최신위치 + 트랙 버퍼) - CacheBasedVesselTrackDataReader + CacheBasedTrackJobListener 신규 추가 - VesselStaticStepConfig: 정적정보 CDC 변경 검출 + hourly job 편승 - SignalKindCode enum: vesselType/extraInfo 기반 선종 자동 분류 - WebSocket/STOMP 전체 mmsi 전환 (StompTrackStreamingService ~40곳) - 모니터링/성능 최적화 코드 mmsi 기반 전환 - DataSource 설정 통합 (snpdb 단일 DB) - AreaBoundaryCache Polygon→Geometry 캐스트 수정 (MULTIPOLYGON 지원) - ConcurrentHashMap 적용 (VesselTrackStepConfig 동시성 버그 수정) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
86 lines
2.4 KiB
SQL
86 lines
2.4 KiB
SQL
-- 실패한 배치 Job 조회 및 분석
|
|
|
|
-- 1. 실패한 Job 목록 (최근 50개)
|
|
SELECT
|
|
'=== FAILED JOBS (Recent 50) ===' as category,
|
|
bje.JOB_EXECUTION_ID,
|
|
bji.JOB_NAME,
|
|
bje.START_TIME,
|
|
bje.END_TIME,
|
|
bje.STATUS,
|
|
bje.EXIT_CODE,
|
|
LEFT(bje.EXIT_MESSAGE, 100) as EXIT_MESSAGE_SHORT,
|
|
-- Job Parameters 표시
|
|
(SELECT string_agg(PARAMETER_NAME || '=' || PARAMETER_VALUE, ', ')
|
|
FROM BATCH_JOB_EXECUTION_PARAMS
|
|
WHERE JOB_EXECUTION_ID = bje.JOB_EXECUTION_ID
|
|
AND IDENTIFYING = 'Y') as PARAMETERS
|
|
FROM BATCH_JOB_EXECUTION bje
|
|
JOIN BATCH_JOB_INSTANCE bji ON bje.JOB_INSTANCE_ID = bji.JOB_INSTANCE_ID
|
|
WHERE bje.STATUS = 'FAILED'
|
|
ORDER BY bje.JOB_EXECUTION_ID DESC
|
|
LIMIT 50;
|
|
|
|
-- 2. 실패한 Step 상세 정보
|
|
SELECT
|
|
'=== FAILED STEPS ===' as category,
|
|
bse.STEP_EXECUTION_ID,
|
|
bse.JOB_EXECUTION_ID,
|
|
bji.JOB_NAME,
|
|
bse.STEP_NAME,
|
|
bse.STATUS,
|
|
bse.READ_COUNT,
|
|
bse.WRITE_COUNT,
|
|
bse.COMMIT_COUNT,
|
|
bse.ROLLBACK_COUNT,
|
|
bse.READ_SKIP_COUNT,
|
|
bse.PROCESS_SKIP_COUNT,
|
|
bse.WRITE_SKIP_COUNT,
|
|
LEFT(bse.EXIT_MESSAGE, 100) as EXIT_MESSAGE_SHORT
|
|
FROM BATCH_STEP_EXECUTION bse
|
|
JOIN BATCH_JOB_EXECUTION bje ON bse.JOB_EXECUTION_ID = bje.JOB_EXECUTION_ID
|
|
JOIN BATCH_JOB_INSTANCE bji ON bje.JOB_INSTANCE_ID = bji.JOB_INSTANCE_ID
|
|
WHERE bse.STATUS = 'FAILED'
|
|
ORDER BY bse.STEP_EXECUTION_ID DESC
|
|
LIMIT 50;
|
|
|
|
-- 3. Job 타입별 실패 통계
|
|
SELECT
|
|
'=== FAILURE STATISTICS BY JOB ===' as category,
|
|
bji.JOB_NAME,
|
|
COUNT(*) as FAILED_COUNT,
|
|
MAX(bje.END_TIME) as LAST_FAILURE_TIME
|
|
FROM BATCH_JOB_EXECUTION bje
|
|
JOIN BATCH_JOB_INSTANCE bji ON bje.JOB_INSTANCE_ID = bji.JOB_INSTANCE_ID
|
|
WHERE bje.STATUS = 'FAILED'
|
|
GROUP BY bji.JOB_NAME
|
|
ORDER BY FAILED_COUNT DESC;
|
|
|
|
-- 4. Step별 실패 통계
|
|
SELECT
|
|
'=== FAILURE STATISTICS BY STEP ===' as category,
|
|
STEP_NAME,
|
|
COUNT(*) as FAILED_COUNT,
|
|
MAX(END_TIME) as LAST_FAILURE_TIME
|
|
FROM BATCH_STEP_EXECUTION
|
|
WHERE STATUS = 'FAILED'
|
|
GROUP BY STEP_NAME
|
|
ORDER BY FAILED_COUNT DESC;
|
|
|
|
-- 5. 최근 24시간 실패 현황
|
|
SELECT
|
|
'=== LAST 24 HOURS ===' as category,
|
|
COUNT(*) as FAILED_JOBS_24H
|
|
FROM BATCH_JOB_EXECUTION
|
|
WHERE STATUS = 'FAILED'
|
|
AND START_TIME >= CURRENT_TIMESTAMP - INTERVAL '24 hours';
|
|
|
|
-- 6. 전체 상태 요약
|
|
SELECT
|
|
'=== STATUS SUMMARY ===' as category,
|
|
STATUS,
|
|
COUNT(*) as COUNT
|
|
FROM BATCH_JOB_EXECUTION
|
|
GROUP BY STATUS
|
|
ORDER BY COUNT DESC;
|