728x90
커서 생성과 무효화
오라클 문서는 신규 커서가 입력되고 예전 커서가 무효화 되는 64가지의 원인을 설명한다. 여기서는 몇가지만 살펴 보자.
1. 옵티마이저 환경
옵티마이저 모드가 변경 ( ALL ROWS vs FIRST_ROWS ) 되면, 신규 실행계획이 생성된다.
2. Outline Mismatch
SQL 문이 수행되는 신규 환경에 다른 outline이 제공되면 기존의 커서와 해당 실행계획은 재생성 된다.
3. NLS- 사용자 신분
다른 NLS환경에서 SQL문을 실행하면 다른 정렬 및 필터링이 사용된다. 따라서 모든 객체가 기존과 같이 사용된다고 당연하게 생각할 수 있다. 예를 들면 Function based indexs 추가로 다른 스키마에서 동일 SQL문을 구문분석(parsing)하면, 다른 의미(semantics)에서 오는 커서는 당연히 적합하지 않다.
4. 카디날리티 피드백
바인드 집합에 대해서 다른 실행계획을 갖는 것으로 결정하면 신규 커서가 생성되던지. 또는 커서가 이미 존재하는 경우, 이전 실행 계획을 품은 자식 커서가 무효화되고 대체될 것이다.
5. 바인드 미스매치
가장 원하지 않는 사유. 바인드 미스매치는 바인드 변수에 관한 무언가가 다르다는 것을 의미한다. 리스트가 길고, 길이 마이그레이션(Length Migration)과 데이터 타입 차이가 가장 흔한 이유다.
728x90
반응형
'Oracle > Admin' 카테고리의 다른 글
[Oracle] ora.diskmon offline (0) | 2024.07.15 |
---|---|
[Oracle] Mutex (0) | 2024.06.14 |
[Oracle] v$sqlarea vs v$sql cusor sharing 테스트 (0) | 2024.06.14 |
[Oracle] 병렬 프로세스 간 데이터 분배 비교 방식과 PQ_DISTRIBUTE 힌트 사용 (1) | 2024.06.13 |
[Oracle] CRS (grid infrastructure) 구동 시 참고 (0) | 2024.05.27 |