Programming/Oracle

오라클 히든 파라미터(optimizer_adaptive_cursor_sharing, optimizer_extended_cursor_sharing_rel)

초록깨비 2022. 5. 17. 18:12
728x90

_optimizer_adaptive_cursor_sharing

 

  오라클11G 부터 Bind Peeking 기능 단점을 보완하기 위해 바인드 변수 값에 따라

 

  실행계획을 여러 가지로 관리할 있도록 하는 파라미터이다 

 

 

  Bind 값이 바뀌면 유연하게 처리 하겠다는 의미로 

 

  Bind 변수의 값에 따라 오라클 적절한 Child Cursor생성하여 이에 맞는 

  실행 계획을 생성(새로운 Child Cursor)한다.

 

  Bind Peeking 의한 부작용이 없어지게 되지만, 조건절에 쓰인 컬럼에 Histogram 있고,

 

  Histogram 분포도에 따라 실행 계획에 차이가 있을 있다고 판단된다는 조건이 중요하다

  (적절한 Histogram 없으면 의미가 없다)

 

 

 

1) 기본값 

  optimizer_adaptive_cursor_sharing = TRUE

  optimizer_extended_cursor_sharing_rel = SIMPLE

 

2) sys계정으로 접속(또는 sqlplus '/as sysdba'  등의 Admin계정으로 접속)

 

  - PL/SQL DEVELOPER에서는 connect us : SYSDBA 선택 후 SYS계정으로 접속

 

3) 쿼리 실행(sys계정으로 접속하여 확인!) 


   SELECT KSPPINM, KSPPSTVL
    FROM X$KSPPI X, X$KSPPCV Y
  WHERE X.INDX = Y.INDX
     AND X.KSPPINM LIKE '%optimizer_adaptive_cursor_sharing%'    
     AND SUBSTR(X.KSPPINM, 1, 1) = '_'     

 

4) 파라미터 변경(system계정으로 접속)

   ALTER SYSTEM SET "_optimizer_adaptive_cursor_sharing" = FALSE;

   ALTER SYSTEM SET "_optimizer_extended_cursor_sharing_rel"= "NONE"

 

 

 

 

5) 확인 

    select sql_id,

            count(*) cnt

     from   v$sql_shared_cursor 

   group by sql_id

   having count(*) > 10

   order by cnt desc ;

 

6) 히스토그램 통계 사용 : 버킷이 1이 아니면 사용중인것으로 판단 

   

728x90