HeeLee_DBA
Oracle - version_count 증가로 인한 shared_pool 부족 문제 본문
특정 쿼리로 인한 library cache lock 및 cursor: pin S wait on X 이벤트가 발생함.
-- 임시조치
-- shared memory 부족으로 인해 DB 접속 실패 날 경우(ORA-04031: unable to allocate nn bytes of shared memory)
ps -ef | grep oracle
kill -9 PID 로 PGA 공간 확보 필요
-- 전체 메모리 flush(권장하진 않음) : 기존 대용량 쿼리들이 메모리에서 지워지면서 새로 parsing 할때 부하가 옴
alter system flush shared_pool;
-- 메모리 점유율 높은 sql purge
select sql_id, hash_value, round(sharable_mem/1024/1024) || 'M' MB, module , version_count, loaded_versions,
'exec dbms_shared_pool.purge('''||address||','||hash_value||''',''C'');'
from v$sqlarea
where sharable_mem >= 10 * 1024 * 1024
and last_active_time > SYSDATE - 7
order by sharable_mem desc;
exec dbms_shared_pool.purge ('00000001BE7D4860,759585230 ','C');
'00000001BE7D4860,759585230': 커서의 주소
'C' : 커서 (SQL 커서)
'P' : PL/SQL 프로시저, 함수, 패키지 등
-- 문제 쿼리 version_count 확인
select t1.sql_id ,t1.sql_text, t1.version_count, t1.optimizer_mode, t1.address, t1.hash_value
from v$sqlarea t1
where t1.sql_text like '%문제 쿼리%'
and t1.sql_text not like '%v$sql%';
parse_calls : 라이브러리 캐시에서 SQL 커서를 찾으려는 요청 횟수
loads : 하드파싱을 거친 SQL 실행계획을 라이브러리 캐시에 적재한 횟수
executions : SQL을 수행한 횟수
invalidations : 커서가 무효화된 횟수, 커서가 참조하고 있는 오브젝트에 중요한 변화가 일어났음을 의미함
is_bind_senstive : bind 변수 값에 따라 실행계획이 변경되어야 하는지 결정하고 실행계획이 변경된다면 "Y" 로 표시됨
select * from v$sql_shared_cursor
where sql_id = 'SQL_ID'
-- BIND 변수 확인 쿼리
SELECT NAME , POSITION , DATATYPE_STRING , VALUE_STRING
FROM DBA_HIST_SQLBIND
WHERE SQL_ID = 'SQL_ID'
ORDER BY snap_id ASC;
* bind capture가 이루어지는 시점
SQL 문장이 hard parse되는 시점에 bind variable이 사용되고 bind 값이 부여된 경우(was_captured가 no인경우 바인드 캡쳐를 못한거기 때문에 바인드 변수를 사용했는지 확인 필요)
bind capture가 이루어진 이후, bind값이 변경된 경우. 단, 오라클의 성능상의 오버헤드를 최소화하기 위해 15분 이상의 간격을 두고 capture를 수행한다.
즉, bind capture된 값이 항상 최신의 값을 나타내는 것은 아니다.

참조 : https://m.post.naver.com/viewer/postView.naver?volumeNo=32129399&memberNo=18071586
자식커서로 인한 높은 파싱율 - 뮤텍스 대기를 초래하는 자식 커서 문제 해결.
[BY 데이터브이] “Resolving Child Cursor Issues Resulting In Mutex Waits” https://www.usn-it.de/wp...
m.post.naver.com
'Oracle' 카테고리의 다른 글
Oracle - SQL Monitor Active Report (0) | 2024.06.11 |
---|---|
ORA-12805: parallel query server died unexpectedly (0) | 2023.02.07 |
ORA-603 (skgxpvfynet: mtype: 61 process 24645 failed because of a resource problem in the OS) (0) | 2022.11.24 |
ORA-00600 내부 오류코드 kdsgrp1 (3) | 2022.11.18 |
Oracle - 슬로우 쿼리(Slow Query) 조회 쿼리 (3) | 2022.10.26 |