Oracle plan_hash_value가 0 값을 가지는 이유

2021. 11. 23. 11:13IT

728x90

보통 plan_hash_value의 값은 큰 값을 가지고 있는데, 가끔 조회해 보면 0 인 값이 나오는 경우가 있다.
0 이라고 해서 비정상적인 것은 아니며 정상적인 값으로 해석할 수 있다.

plan_hash_value 라는게 쿼리가 수행할때 하나의 참조용 경로이긴한데, Query가 bind 변수를 사용하고 커서가 구문을 분석하게 되지만  실행계획 생성이 bind 값이 제공될때 실행 시간까지 연기되기 때문에 발생 할 수 있다, 

즉, 쿼리가 bind 되어 실행 될때 까지 계획이 없으므로 0 값으로 나타난다.
또 다른 이유로는 Query가 PL/SQL 블록인 경우 plan_hash_value가 0 인 경우도 발생한다,

 

 

plan_hash_value가 0인 sql_id
plan_hash_value가 0인 sql_id

 

 

위 쿼리에 sql_text까지 넣어보자.

insert into 구문인 경우에도 plan_hash_value가 0인 것을 볼 수 있다.

INSERTO INTO 구문인 경우에도 plan_hash_value 가 0
INSERTO INTO 구문인 경우에도 plan_hash_value 가 0

 

이런 이유 때문에 plan_hash_value 가 0값을 가진다.

 

반응형