두 기간 간 AWR diff(compare period) 보고서
Oracle성능명령어
-- Interactive: @?/rdbms/admin/awrddrpt.sql (RAC: awrgdrpt.sql)
-- From a script: period 1 (good) = <bid1>-<eid1>, period 2 (bad) = <bid2>-<eid2>
SET LINESIZE 8000 PAGESIZE 0 TRIMSPOOL ON HEADING OFF FEEDBACK OFF
SPOOL /tmp/awr_diff.txt
SELECT output
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_TEXT(
dbid1 => (SELECT dbid FROM v$database), inst_num1 => 1,
bid1 => <bid1>, eid1 => <eid1>,
dbid2 => (SELECT dbid FROM v$database), inst_num2 => 1,
bid2 => <bid2>, eid2 => <eid2>));
SPOOL OFF
-- HTML: DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML하는 일
두 스냅샷 범위를 나란히 놓고 DB time, 대기 이벤트, load profile, SQL별 통계의 백분율 차이를 보여 준다. "어제는 괜찮았는데 오늘은 느리다"에 직접 답한다.
사용 시점
업그레이드/패치, 파라미터 변경, 배포, 통계 수집 후 회귀 분석, 두 날의 같은 시간대 비교.
주의
Diagnostics Pack 라이선스가 필요하다. 비교 기간은 길이가 같고 워크로드가 비슷해야 하며, 그렇지 않으면 차이 값이 오해를 일으킨다. 서로 다른 데이터베이스(예: prod vs test)를 비교하려면 awrextr.sql/awrload.sql로 AWR 데이터를 옮기고 해당 dbid2를 지정한다.