Active Session History를 이용한 TOP SQL 분석
DB Version : Oracle 11.2.0.2
OS Version : AIX 6.1
* TOP 10 Event (RAC)
- 현재 일자 -1 부터 보기(AND SAMPLE_TIME >= TRUNC(SYSDATE) -1)
SELECT
SAMPLE_TIME
, INST_ID
, EVENT
, TOT_COUNT
, DECODE(RANK, 1, 'TOP',NULL) "RANK"
FROM (
SELECT
TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)') "SAMPLE_TIME"
, INST_ID
, EVENT
, COUNT(*) "TOT_COUNT"
, RANK() OVER(PARTITION BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID ORDER BY COUNT(*) DESC, EVENT) "RANK"
FROM GV$ACTIVE_SESSION_HISTORY
WHERE EVENT IS NOT NULL
AND SAMPLE_TIME >= TRUNC(SYSDATE) -1
GROUP BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID, EVENT
HAVING COUNT(*) > 10
)
WHERE RANK <= 10
ORDER BY 1, 2, RANK;
SAMPLE_TIME
, INST_ID
, EVENT
, TOT_COUNT
, DECODE(RANK, 1, 'TOP',NULL) "RANK"
FROM (
SELECT
TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)') "SAMPLE_TIME"
, INST_ID
, EVENT
, COUNT(*) "TOT_COUNT"
, RANK() OVER(PARTITION BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID ORDER BY COUNT(*) DESC, EVENT) "RANK"
FROM GV$ACTIVE_SESSION_HISTORY
WHERE EVENT IS NOT NULL
AND SAMPLE_TIME >= TRUNC(SYSDATE) -1
GROUP BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID, EVENT
HAVING COUNT(*) > 10
)
WHERE RANK <= 10
ORDER BY 1, 2, RANK;
* TOP 10 SQL (RAC)
- 현재 일자 -1 부터 보기(AND SAMPLE_TIME >= TRUNC(SYSDATE) -1)
SELECT
DISTINCT
A.SAMPLE_TIME
, A.INST_ID
, A.SQL_ID
, A.TOT_COUNT
, DECODE(A.RANK, 1, 'TOP',NULL) "RANK"
, B.SQL_TEXT
FROM (
SELECT
TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)') "SAMPLE_TIME"
, INST_ID
, SQL_ID
, COUNT(*) "TOT_COUNT"
, RANK() OVER(PARTITION BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID ORDER BY COUNT(*) DESC, SQL_ID) "RANK"
FROM GV$ACTIVE_SESSION_HISTORY
WHERE SQL_ID IS NOT NULL
AND SAMPLE_TIME >= TRUNC(SYSDATE) -1
GROUP BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID, SQL_ID
HAVING COUNT(*) > 10
) A,
GV$SQL B
WHERE 1=1
AND A.SQL_ID = B.SQL_ID
AND A.INST_ID = B.INST_ID
AND RANK <= 10
ORDER BY 1, 2, RANK;
DISTINCT
A.SAMPLE_TIME
, A.INST_ID
, A.SQL_ID
, A.TOT_COUNT
, DECODE(A.RANK, 1, 'TOP',NULL) "RANK"
, B.SQL_TEXT
FROM (
SELECT
TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)') "SAMPLE_TIME"
, INST_ID
, SQL_ID
, COUNT(*) "TOT_COUNT"
, RANK() OVER(PARTITION BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID ORDER BY COUNT(*) DESC, SQL_ID) "RANK"
FROM GV$ACTIVE_SESSION_HISTORY
WHERE SQL_ID IS NOT NULL
AND SAMPLE_TIME >= TRUNC(SYSDATE) -1
GROUP BY TO_CHAR(SAMPLE_TIME, 'YY/MM/DD(DY)'), INST_ID, SQL_ID
HAVING COUNT(*) > 10
) A,
GV$SQL B
WHERE 1=1
AND A.SQL_ID = B.SQL_ID
AND A.INST_ID = B.INST_ID
AND RANK <= 10
ORDER BY 1, 2, RANK;
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
14 | External Table 기능을 사용해 파일 읽기 | 명품관 | 2017.04.05 | 965 |
13 | DB에 생성된 ROLE의 생성 정보 확인 [2] | 명품관 | 2016.05.31 | 928 |
12 | Oracle VMSTAT을 이용한 CPU 사용량 활용법 | 에밀리오 | 2016.07.14 | 908 |
11 | OS 터미널 접속 없이 오라클 접속을 통해 OS CPU 사용율 모니터링 하기 [3] | 명품관 | 2020.12.22 | 830 |
10 | ORA-3136 inbound connection time out & JDBC Io exception: Connection reset [1] | Talros | 2023.02.24 | 746 |
9 | SQL Plan Management(SPM) - 3 Manual Plan Capture | 명품관 | 2020.06.01 | 675 |
8 | Python 을 이용해 파일 업로드 해 보기 [1] | Talros | 2023.04.19 | 627 |
7 | SQL Plan Management(SPM) - 2 DBMS_SPM.CONFIG로 필터링 | 명품관 | 2020.03.26 | 609 |
6 | default 값을 포함한 컬럼 추가시 오라클 버전별 개선 사항 [1] | 명품관 | 2023.01.17 | 592 |
5 | ORA-28014: Cannot Drop Administrative Users 에러 현상 [1] | 명품관 | 2023.03.27 | 475 |
4 | mbr(multi block read) 과 sbr(single block read) 사이에 과연 어떤 방식을 선택해야 할까요? [1] | 명품관 | 2022.09.16 | 370 |
3 | 수집된 통계가 바로 반영되지 않고 원할 때 반영하도록 하는 방식 | 명품관 | 2023.04.04 | 297 |
2 | Result Cache(oracle11g NF) [6] | ocm10gr2 | 2016.03.14 | 273 |
1 | Windows 접속 에러 ORA-12638 [1] | Talros | 2024.02.14 | 125 |