테마
본사 레거시 DB의 야간 통계 잡 PKG_STATS.NIGHTLY는 매일 23:40에 목록 표 STATS_TARGET의 테이블을 이름순으로 하나씩 모은다. 스케줄러 이력은 석 달째 매일 SUCCEEDED다.
3월 4일 DBA는 상품가격 개편(3월 ~ 5월) 동안 CF05의 통계가 흔들리지 않게 잠갔다. 6월 12일 조민우가 점장 화면을 보다가 CF10의 LAST_ANALYZED가 3월 3일인 것을 발견했다.
STATS_TARGET의 목록(이름순): CF01 · CF02 · CF05 · CF07 · CF10 · CF12 · CF13 · CF15 · CF18CF05 상품가격: 157행 · 5블록 · 3월 4일부터 STATTYPE_LOCKED = ALLCF10 판매: 500,000행 · 4,583블록 · 하루 약 700건씩 늘어난다 · CF18 일별상품재고: 매일 408행씩 늘어난다PROCEDURE NIGHTLY IS -- PKG_STATS · 매일 23:40 (DBMS_SCHEDULER)
BEGIN
FOR t IN (SELECT TABLE_NAME FROM STATS_TARGET ORDER BY TABLE_NAME) LOOP
DBMS_STATS.GATHER_TABLE_STATS('PUP', t.TABLE_NAME);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
PKG_LOG.WRITE('NIGHTLY', '통계 수집 경고 : ' || SQLERRM); -- 잡은 '성공'으로 끝난다
END;
-- 3월 4일 10:12 · DBA : 가격 개편 동안 CF05 통계가 흔들리지 않게
EXEC DBMS_STATS.LOCK_TABLE_STATS('PUP', 'CF05');
[PKG_LOG — NIGHTLY (최근 사흘)]
06-09 23:40:01 NIGHTLY 시작
06-09 23:40:02 통계 수집 경고 : ORA-20005: object statistics are locked (stattype = ALL)
06-10 23:40:01 NIGHTLY 시작
06-10 23:40:02 통계 수집 경고 : ORA-20005: object statistics are locked (stattype = ALL)
06-11 23:40:01 NIGHTLY 시작
06-11 23:40:02 통계 수집 경고 : ORA-20005: object statistics are locked (stattype = ALL)
[DBA_SCHEDULER_JOB_RUN_DETAILS — NIGHTLY] STATUS SUCCEEDED · 3월 4일부터 100일 연속
[USER_TAB_STATISTICS — 목록 순서대로 · 6월 12일 09:00]
TABLE_NAME LAST_ANALYZED STATTYPE_LOCKED STALE_STATS
CF01 06-11 23:40 - NO
CF02 06-11 23:40 - NO
CF05 03-04 10:12 ALL NO
CF07 03-03 23:41 - NO
CF10 03-03 23:41 - YES
CF12 03-03 23:42 - YES
CF13 03-03 23:42 - YES
CF15 03-03 23:42 - YES
CF18 03-03 23:42 - YES
CF05 하나를 잠갔는데 그 뒤의 여섯 테이블까지 3월에 멈춘 이유와, 잡이 100일 동안 성공으로 끝난 이유를 쓰시오.CF05의 잠금은 어떻게 할지와 그 근거도 쓰시오.