1. 순간적인(1~2분 사이) 과다 실행된 SQL 찾기
* 잠잠하던 DB서버의 CPU가 특정시간 대에 갑자기 사용률이 증가했을 때, 해당 시간대에 문제가 된 SQL 원인을 찾아야 함
* 하지만 AWR(Automatic Workload Repository), ADDM(Automatic Database Diagnostic Monitor)은 수집주기가 30분으로 길어서, 5분 이내 순간적인 SQL 부하는 찾기가 어려움
* 이런 경우 ASH(Active Session History)를 통해서 조회가 가능함
* ASH는 실시간(1초)마다 수집하기 때문에 SQL_ID가 많이 보이는 쿼리를 의심할 수 있음
2. (예시) 2022년 05월02일 03시30분 ~ 03시35분 사이 많이 수행된 SQL 찾기
SELECT *
FROM (
SELECT MAX(SAMPLE_TIME),
SQL_ID,
COUNT(*) AS CNT,
SQL_OPNAME,
(SELECT SQL_TEXT
FROM V$SQL S
WHERE S.SQL_ID = H.SQL_ID
AND ROWNUM <= 1)
FROM V$ACTIVE_SESSION_HISTORY H
WHERE SESSION_TYPE = 'FOREGROUND'
AND SQL_EXEC_ID IS NOT NULL
AND SAMPLE_TIME >= TO_DATE('202205020330','YYYYMMDDHH24MI')
AND SAMPLE_TIME <= TO_DATE('202205020335','YYYYMMDDHH24MI')
GROUP BY SQL_ID, SQL_OPNAME
)
WHERE 1=1
AND ROWNUM <= 10 /* 상위 10개 쿼리 */
'회사 개발 정리' 카테고리의 다른 글
[오라클 Oracle] 테이블 스페이스 용량 확인 (0) | 2023.03.15 |
---|---|
[오라클 Oracle] 스케쥴러 Job 생성하기 (0) | 2023.03.10 |
[오라클 Oracle] 플래시백(FlashBack) (0) | 2023.03.10 |
[오라클 Oracle] Lock 발생 테이블 찾기 (0) | 2023.03.10 |