728x90
1. 오래 실행 중인 SQL 확인 (활성 세션 기준)
SELECT
s.sid,
s.serial#,
s.username,
s.status,
s.osuser,
s.machine,
s.program,
s.sql_id,
s.event,
s.seconds_in_wait,
s.state,
q.sql_text
FROM
v$session s
JOIN
v$sql q ON s.sql_id = q.sql_id
WHERE
s.status = 'ACTIVE'
AND s.username IS NOT NULL
ORDER BY s.seconds_in_wait DESC;
- seconds_in_wait가 클수록 대기 시간이 긴 세션
- event나 state를 보면 대기 이유 확인 가능
2. CPU, 논리 읽기 등 리소스를 많이 쓰는 SQL TOP 10
SELECT *
FROM (
SELECT
sql_id,
executions,
elapsed_time,
cpu_time,
buffer_gets,
disk_reads,
rows_processed,
sql_text
FROM v$sql
WHERE executions > 0
ORDER BY cpu_time DESC
)
WHERE ROWNUM <= 10;
- CPU 또는 I/O 기준으로 리소스를 많이 쓰는 쿼리 찾기
- ORDER BY 기준을 elapsed_time, buffer_gets, disk_reads 등으로 바꿔서 분석 가능
3. 오랫동안 실행 중인 쿼리 (현재 실행 중)
SELECT
s.sid,
s.serial#,
s.username,
s.status,
s.sql_id,
s.last_call_et AS seconds_running,
q.sql_text
FROM
v$session s
JOIN
v$sql q ON s.sql_id = q.sql_id
WHERE
s.status = 'ACTIVE'
AND s.username IS NOT NULL
AND s.last_call_et > 60 -- 60초 이상 실행 중
ORDER BY s.last_call_et DESC;
4. 락을 잡고 있는 세션 확인 (병목의 원인 가능)
SELECT
l.session_id,
s.username,
s.osuser,
s.program,
s.machine,
l.locked_mode,
o.object_name,
o.object_type
FROM
v$locked_object l
JOIN
dba_objects o ON l.object_id = o.object_id
JOIN
v$session s ON l.session_id = s.sid;
728x90
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
'PROCEDURE', 'FUNCTION','PACKAGE' 내용으로 조회할때 (0) | 2024.12.10 |
---|---|
ORA-28002: the password will expire within 7 days (0) | 2024.11.21 |
ORACLE SQLPLUS 접속시 ORA-12154: TNS 오류 발생 (0) | 2023.12.31 |
Centos7 Oracle19c silent 설치 (1) | 2023.12.29 |
oracle imp/exp (0) | 2023.07.19 |