select address, hash_value, executions, loads, version_count, invalidations, parse_calls
from v$sqlarea
where sql_id='3zhcy1fagtrgv';
ADDRESS HASH_VALUE EXECUTIONS LOADS VERSION_COUNT INVALIDATIONS PARSE_CALLS
---------------- ---------- ---------- ---------- ------------- ------------- -----------
00000000C9875588 2499599867 3 1 1 0 3
현재 excutions가 3이고 loads가 1이고 parse_calls가 3이고 invalidations가 0임
라이브러리 캐시에 1번 적재되었고 3번 실행중 한번은 하드파싱, 2번은 소프트파싱되었고 무효화된적은 없는 쿼리라는 뜻임
parse_calls : 라이브러리 캐시에서 SQL 커서를 찾으려고 요청한 횟수
loads : 하드파싱을 거친 SQL 실행계획을 라이브러리 캐시에 적재한 횟수
executions : SQL을 수행한 횟수
invalidations : 커서가 무효화된 횟수, 커서가 참조하고 있는 오브젝트에 중요한 변화가 일어났음을 의미함
파티션 split 후 재확인
SQL> alter table PTABLE4 split partition p_max at ('202202') into (partition p202201, partition p_max);
Table altered.
SQL>
select address, hash_value, executions, loads, version_count, invalidations, parse_calls
from v$sqlarea
where sql_id='3zhcy1fagtrgv';
ADDRESS HASH_VALUE EXECUTIONS LOADS VERSION_COUNT INVALIDATIONS PARSE_CALLS
---------------- ---------- ---------- ---------- ------------- ------------- -----------
00000000C9875588 2499599867 3 1 1 1 3
현재 다른건 그대로이고 invalidations가 1로 변경됨
SQL>
-- sql 2번 실행
select col2, col1 from ptable4
where col2 in (select c1 from imsitb);
-- 확인
select address, hash_value, executions, loads, version_count, invalidations, parse_calls
from v$sqlarea
where sql_id='3zhcy1fagtrgv';
ADDRESS HASH_VALUE EXECUTIONS LOADS VERSION_COUNT INVALIDATIONS PARSE_CALLS
---------------- ---------- ---------- ---------- ------------- ------------- -----------
00000000F415D6C8 2499599867 2 2 1 1 2
loads가 2로 변했고 invaildations가 1이고 executions과 parse_calls는 초기화된 뒤 다시 2로 카운트됨
커서가 무효화 된 뒤(invaildations : 1) 라이브러리 캐시에 새로 load 되었고(loads : 2)
새로 load 된 이후 두번 실행됨(executions : 2) 그리고 하드파싱1번에 소프트파싱 1번됨(parse_calls)
파티션 split 시 결론
파티션을 split 하면 커서가 무효화되고 라이브러리 캐시에 새로 로드되게 된다.
=> 실행계획도 변경될 가능성이 있다.(새로 라이브러리 캐시에 로드되고 파싱을 새로 하기때문)
파티션 drop 시 결론
파티션 split 시와 동일하게
파티션을 drop 하면 커서가 무효화되고 라이브러리 캐시에 새로 로드되게 된다.
=> 실행계획도 변경될 가능성이 있다.(새로 라이브러리 캐시에 로드되고 파싱을 새로 하기때문)
파티션 add 시 결론
파티션 split, drop 시와 동일하게
파티션을 add 하면 커서가 무효화되고 라이브러리 캐시에 새로 로드되게 된다.
=> 실행계획도 변경될 가능성이 있다.(새로 라이브러리 캐시에 로드되고 파싱을 새로 하기때문)
+ 본문에 넣진않았지만 파티션 exchange 도 동일하게 무효화된다.
--> 즉 partiton split, drop, add, exchange 수행 시 모두 sql 커서가 무효화 되고 라이브러리 캐시에 새로 로드됨으로써
실행계획이 변할 수 있다.
'Oracle > Admin' 카테고리의 다른 글
[Oracle] single grid 환경에서의 oracle 재기동 방법 (0) | 2024.09.19 |
---|---|
[Oracle] 10046 event Trace 분석 (3) | 2024.09.06 |
[Oracle] ADRCI (0) | 2024.08.17 |
[Oracle] OCR VIGING DISK 재구성 (0) | 2024.08.14 |
[Oracle]GPnP(grid plug n play) (0) | 2024.08.14 |