#!/usr/bin/env bash
#==============================================================================
# 18화 실습 (08) — 같은 날 연속 두 판 : 옛 판(C18-OLD) → 지금 판(C18-NOW) → awrddrpt (Git Bash)   소요 약 2 × MIN + 2 분 (기본 22분)
#
#   쓰는 법 (이 폴더에서) : ./08_옛판_지금판.sh            (컨테이너 C=… · 판 길이 MIN=… · 기본 10분)
#
#   옛 판  C18-OLD  부하 발생기 3세션 · 생각 시간 0 · 런 내내 '나쁜 판' 셋
#                   SPIKE_KIND=NL,LIT,LOOP = Q2 rev00 (06화 · 100만 번 왕복) · Q4 lit (11화 · 클릭마다 하드 파싱) · P1 rev00 (13화 · 행마다 INSERT)
#                   — LOCK(N1 핫픽스 + 행 쥐기)은 넣지 않는다 : 01화의 N1 은 MAX+1 이었다. 그 장애는 12화에 들어온 것이다
#   지금 판 C18-NOW 같은 3세션 · 같은 씨앗 · 같은 가중치 · STEADY (전부 현재판)
#   판마다 08_구간_스냅샷_SYSDBA.sql 이 +1분 · +(MIN-1)분에 AWR 루트 스냅샷을 찍는다 → 08b 가 두 구간을 비교한다
#
#   ⚠️ 발생기에 01화의 rev00 이 전부 들어 있지는 않다 — Q1 · Q3 · N1 은 늘 현재판이다 (발생기는 15화에 만들었다).
#      그래서 옛 판은 '01화의 시스템' 이 아니라 '고친 것 셋을 되돌린 시스템' 이다. 리포트(T5-003)에 그렇게 적는다.
#==============================================================================
set -u
C="${C:-ora-hanorder}"
MIN="${MIN:-10}"
HERE="$(cd "$(dirname "$0")" && pwd)"
L1="$HERE/../../00_자료준비/고객사/L1_ora-hanorder"
LOG="${LOGDIR:-${TMPDIR:-/tmp}/c18_logs}"
mkdir -p "$LOG"

one() {
  local note="$1"
  echo "== $note  ($(date +%H:%M:%S))"
  MSYS_NO_PATHCONV=1 docker exec -i "$C" sqlplus -s / as sysdba < "$HERE/08_구간_스냅샷_SYSDBA.sql" > "$LOG/$note.snap.log" 2>&1 &
  local sp=$!
  if [ "$note" = "C18-OLD" ]; then
    ( cd "$L1" && PROFILE=SPIKE MINUTES="$MIN" SESSIONS=3 THINK_MS=0 SPIKE_AT=0 SPIKE_LEN="$MIN" SPIKE_KIND=NL,LIT,LOOP NOTE="$note" C="$C" ./05_부하_돌리기.sh > "$LOG/$note.run.log" 2>&1 )
  else
    ( cd "$L1" && PROFILE=STEADY MINUTES="$MIN" SESSIONS=3 THINK_MS=0 NOTE="$note" C="$C" ./05_부하_돌리기.sh > "$LOG/$note.run.log" 2>&1 )
  fi
  wait $sp
  grep -E "^run |^S1|^S2|ORA-" "$LOG/$note.snap.log"
  grep -E "^session|ORA-" "$LOG/$note.run.log" | head -5
}

one C18-OLD
one C18-NOW
echo "== awrddrpt (08b) → $LOG/awr_diff_C18.txt"
MSYS_NO_PATHCONV=1 docker exec -i "$C" sqlplus -s / as sysdba < "$HERE/08b_awrddrpt_SYSDBA.sql" > "$LOG/awr_diff_C18.txt" 2>&1
grep -n "first  =\|second =" "$LOG/awr_diff_C18.txt" | head -3
echo "== 두 구간 요약 (08c)"
MSYS_NO_PATHCONV=1 docker exec -i "$C" sqlplus -s / as sysdba < "$HERE/08c_두_구간_요약_SYSDBA.sql"
