테이블 통계정보가 부정확 할 경우 실행계획이 잘못 생성되어 성능에 이슈가 발생할 수 있다.
그래서 보통 dbms_stats 유틸로 gather_table_stat 패키지를 실행해서 통계정보를 수집하는데
바뀐 통계정보가 바로 반영되어 새로운 실행계획이 바로 적용되지 않을 수 있는데
이 경우 no_invalidate=> false 옵션을 사용하면 즉시 cursor 가 무효화 되어 새로운 실행계획을 바로 적용할수 있다.
* no_invalidate=> true 는 커서를 무효화 하지 않겠단 뜻으로 cursor 가 shared pool 에서 flush 된 후 reload 될때까지 변경되지 않는다.
다만 rac 환경에서는 롤링이 되지않아 특정 노드에서만 쿼리가 느린 현상이 발견 됨.
"_optimizer_invalidation_period" 에 적용된 시간이 지나서야 모든 노드의 cursor 가 무효화가 된다.
'생계 > 튜닝' 카테고리의 다른 글
오라클 AWR 사용하기 (0) | 2023.05.13 |
---|---|
[SQL]열거된 OR 제거하기. IN 사용 (0) | 2020.11.13 |
동일패턴 추가되는 NOT IN 절 (0) | 2019.11.01 |
[SQL] 전월 증감 리포트 (0) | 2019.11.01 |
GROUP BY 로 가공되어 처리범위를 줄여주지 못하는 인라인뷰 (0) | 2019.11.01 |