optimizer_features_enable 파라메타 관련 0 0 1,425

by 우태열 [Oracle Tuning] 파라메타 [2015.09.05 18:06:11]


반갑습니다.

분류를 튜닝이라고 했지만, 애매모합니다.

아래와 같이 파라메타를 바꾸면
alter session set optimizer_features_enable = '10.2.0.1';

실행 계획이 10.2.0.1에서의 결과와 동일하게 나오는지 알고싶습니다.

이유는
오라클 튜닝을 학습하려고 책을 구입했는데
책의 실습환경은 오라클 10g R2라고 나와있고,
저가 실습하는 환경은
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 입니다.

아무래도 실습의 결과를 확인하려면 동일한 환경이 좋겠지만, 오라클을 다시 깔기는 그렇고..
해서 인터넷을 뒤져서 확인해보니
위의 파라메타를 바꾸면 된다고 나와있는데,

실행계획을 dbms_xplan.display를 outline으로 확인해보니
OPTIMIZER_FEATURES_ENABLE는 바뀌어 있는데
실행계획은 동일하네요.

혹 아니면  11g 에서 explain plan 실행시
10g R2에서의 결과와 동일하게 나오게 하는 좋은 방법이 있는지 알고 싶습니다.

저 생각이 너무 터무니 없는 생각이 아니길 바랍니다....

혹 아니면 11g에서 튜닝을 학습/실습하기 좋은 서적있으면 추천부탁드립니다.

쩝..개발만 하다 오라클을 파볼려구하니 처음부터 어렵네요.

아래는 사용한  쿼리와  플랜입니다

explain plan
for
select c1, c2, c3
  from subquery_t2 t2
 where c1 >= :b1 and c1 <= :b2
 and exists ( select /*+ no_unest */
           'x'
           from subquery_t1 t1
          where t1.c4 = t2.c1 )
;
select *
from table(dbms_xplan.display(null, null, 'outline'))


;

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1366364322

----------------------------------------------------------------------------------------------------
| Id  | Operation        | Name     | Rows  | Bytes | Cost (%CPU)| Time    |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |      |   625 | 10625 |   197   (1)| 00:00:03 |
|*  1 |  FILTER         |      |    |    |  |    |
|*  2 |   HASH JOIN SEMI       |      |   625 | 10625 |   197   (1)| 00:00:03 |
|   3 |    TABLE ACCESS BY INDEX ROWID| SUBQUERY_T2    |  1250 | 15000 | 13   (0)| 00:00:01 |
|*  4 |     INDEX RANGE SCAN       | PK_SUQUERY_2    |  2250 |    |  7   (0)| 00:00:01 |
|*  5 |    INDEX RANGE SCAN       | SUBQUERY_T1_IDX_01 | 40000 |   195K|   183   (0)| 00:00:03 |
----------------------------------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      USE_HASH(@"SEL$5DA710D3" ")
      LEADING(@"SEL$5DA710D3" " ")
      INDEX(@"SEL$5DA710D3" " ("SUBQUERY_T1"."C4" "SUBQUERY_T1"."C5"))
      INDEX_RS_ASC(@"SEL$5DA710D3" " ("SUBQUERY_T2"."C1"))
      OUTLINE(@"SEL$2")
      OUTLINE(@"SEL$1")
      UNNEST(@"SEL$2")
      OUTLINE_LEAF(@"SEL$5DA710D3")
      ALL_ROWS
      DB_VERSION('11.2.0.1')
      OPTIMIZER_FEATURES_ENABLE('11.2.0.1')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(TO_NUMBER(:B1)<=TO_NUMBER(:B2))
   2 - access("T1"."C4"="T2"."C1")
   4 - access("C1">=TO_NUMBER(:B1) AND "C1"<=TO_NUMBER(:B2))
   5 - access("T1"."C4">=TO_NUMBER(:B1) AND "T1"."C4"<=TO_NUMBER(:B2))

40 rows selected.

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1366364322

----------------------------------------------------------------------------------------------------
| Id  | Operation        | Name     | Rows  | Bytes | Cost (%CPU)| Time    |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |      |   625 | 10625 |   197   (1)| 00:00:03 |
|*  1 |  FILTER         |      |    |    |  |    |
|*  2 |   HASH JOIN SEMI       |      |   625 | 10625 |   197   (1)| 00:00:03 |
|   3 |    TABLE ACCESS BY INDEX ROWID| SUBQUERY_T2    |  1250 | 15000 | 13   (0)| 00:00:01 |
|*  4 |     INDEX RANGE SCAN       | PK_SUQUERY_2    |  2250 |    |  7   (0)| 00:00:01 |
|*  5 |    INDEX RANGE SCAN       | SUBQUERY_T1_IDX_01 | 40000 |   195K|   183   (0)| 00:00:03 |
----------------------------------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      USE_HASH(@"SEL$5DA710D3" ")
      LEADING(@"SEL$5DA710D3" " ")
      INDEX(@"SEL$5DA710D3" " ("SUBQUERY_T1"."C4" "SUBQUERY_T1"."C5"))
      INDEX_RS_ASC(@"SEL$5DA710D3" " ("SUBQUERY_T2"."C1"))
      OUTLINE(@"SEL$2")
      OUTLINE(@"SEL$1")
      UNNEST(@"SEL$2")
      OUTLINE_LEAF(@"SEL$5DA710D3")
      ALL_ROWS
      DB_VERSION('11.2.0.1')
      OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
      IGNORE_OPTIM_EMBEDDED_HINTS
      END_OUTLINE_DATA
  */

즐거운 주말되세요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입