본문 바로가기
DB/Oracle

DB에 몸 담고 있다면 꼭 해야할 공부 10

by Lohen 2016. 2. 4.

DB에 몸 담고 있다면 꼭 해야할 공부 10



1.      Troubleshooting: server upgrade results in slow query performance: 160089.1

 

 문서는 software 업그레이드 또는 데이터베이스 이관시 성능 저하 진단  시작포인트를 설명하고 있다.

 

 문서는 오직 쿼리의 성능에 대해서 다룬다  database 성능이 아니다.

일반적으로 upgrade전에 문제에 대해서 보다 빠른 접근을 위해서 관련정보를 기록해둘 것을 권고한다. : 167086.1 : tips for avoiding upgrade related query problems

 

● known issue

  Note 258167.1 Upgrading from 8.1.X to 9.X - Potential Query Tuning Related Issues

  Note 295819.1 Upgrading from 9i to 10g - Potential Query Tuning Related Issues

 

1.파라메터의 변화가 있는가?

                1) 과거로 돌릴  있는가?

 

2.어떤 optimizer가 사용되는가?

                1) 가장 쉬운 방법으로 set autot trace explain  해서 cost 나오면 cbo 사용된 것이다.

           66484.1 which optimizer is used?

 

             세션 단위의 파라메터 지정은 플랜을 변경할  있다.

             가장 신뢰할  있는 플랜은 sql_trace 또는  event:10046 덤프해서 얻는 플랜이다.

             참고로 세션이 exit 해야 플랜정보가 확실히 덤프에 기록된다.

   

             플랜은 tkprof 통해서 얻을  있다( tkprof 실행시점의 플랜을 생성하기 때문에

             파라메터 설정에 의해서 영향을 받을  있다)

 

3.통계정보 체크

CBO 사용된다면 새로운 버전에서 모든 오브젝트에 대해서 통계정보가 생성 되어 있어야 한다 새로운 옵티마이져를 이용해서 통계를 수집해야 한다일반적으로 어플리케이션은 동일버전에서 생성된 통계정보를 이용할  가장 유리한 플랜을 세울  있다그러나 새로운 통계를생성하면 통계에 의해서 성능의 저하가 유발 되었다는 증가는 사라지게 된다.

 

                Note 44961.1 Statistics Gathering: frequency and strategy guidelines

 

4.droped/creaed/rebuilt 오브젝트가 있는가?

  새로운 모든 스크립트가 정상적인가?

  생성 또는 컴파일이 실패한 오브젝트 또는 없어진 오브젝트는 없는가?

 

5.실행계획 체크

● 업그레이드 전후 비교

Please refer to: Note 223806.1 Query with unchanged execution plan is slower after database upgrade for examples of how to handle this.

 

● 일반적인 솔루션/시도할  있는 것들..

 

6.옵티마이져 변경

            옵티마이져가 좋은 플랜을 생성할  있도록 수정한다. (rbo or cbo(all_rows/first_rows)

 

7.통계 재생성

● skewed 컬럼에 대해서 히스토그램 생성

● 새로운 optimizer 기능 비활성화

 

  Example:

    <Parameter:OPTIMIZER_FEATURES_ENABLE>    = Database version upgraded from. See below.

    <Parameter:COMPLEX_VIEW_MERGING>         = FALSE/TRUE

    <Parameter:STAR_TRANSFORMATION_ENABLED> = FALSE/TRUE

    <Parameter:OPTIMIZER_INDEX_COST_ADJ>      < 100

    <Parameter:OPTIMIZER_INDEX_CACHING>       = value between 1 and 100

    <Event:10127> If remote joins are involved, this can disable the optimizer choosing them

 

8.힌트 사용

9.쿼리 재작성

                 ● 튜닝 : 163563.1 : resolving query tuning issues

 

► <Parameter:OPTIMIZER_FEATURES_ENABLE>

 파라메터는 옵티마이져의 중요한 기능을 제어하기 때문에 매우 중요한 파라메터이다.

Note 62337.1Init.ora Parameter "OPTIMIZER_FEATURES_ENABLE" Reference Note

 

10053 trace 이용하여 옵티마이져가 참조하는 파라메터를 조사할  있다,.

 

REFERENCES

==============================================================================

Note 258167.1 Upgrading from 8.1.X to 9.X - Potential Query Tuning Related Issues

Note 295819.1 Upgrading from 9i to 10g - Potential Query Tuning Related Issues

Note 223806.1 Query with unchanged execution plan is slower after database upgrade

Note 167086.1 Tips for avoiding upgrade related query problems

Note 233112.1 START HERE> Diagnosing Query Tuning Problems Using a Decision Tree

Note 372431.1 TROUBLESHOOTING: Tuning a New Query

Note 179668.1 TROUBLESHOOTING: Tuning Slow Running Queries

Note 163563.1 ADVANCED Query Tuning: Resolving Query Tuning Issues

Note 199083.1 Query Handling and Tuning Overview

Note 179668.1 Suggested Query Tuning Workflow

Note 66484.1 Which Optimizer is Used? .

 

 

2.      Upgrading from 8.1.x to 9.x potential query tuning related issues: 258167.1

 

CBO 계속 성능이 개선되어 일반적으로 쿼리의 성능을 향상 시킨다그러나 특수한 경우 성능을 악화시키는 경우도 발생한다.  8.1에서 9iupgrade  경우 성능이 악화  가능성에 대하여

논의해보자..

 

 문서는 CBO 촛점이 되어 있지만 일부는 RBO에도 영향을   있다.

 

1.중요한 변화

8i에서 9i upgrade 이후 쿼리에 문제가 있다면 다음과 같은 변화에 대한 이해를 해야 한다.

 

► subquery unnesting 강화

  (_unnest_subquery = true): 258945.1

 

► complex view merge 강화

  (_complex_view_merging =true) : 258946.1

 

► bitmap index 없더라도 b*tree 인덱스에 대해서 bitmap plans 활용

  (_b_tree_bitmap_plans=true) : 259126.1

 

만약  히든 파라메터의 true 인하여 쿼리의 플랜이 악성으로 풀리는 경우 application 수정 가능하다면 application 수정하는 것이 최선이다그러나 패키지 또는 application 수정할  없는 상황이라면 init.ora에서 파라메터를 통해서 비활성 시킬   있다또는OPTIMIZER_FEATURES_ENABLE=8.1.7  설정하여 이전 플랜으로 돌아갈 수도 있다그러나 반듯이 과거와 플랜이 동일함을 보장하지못한다.

 

따라서 신기능은 Upgrade전에 반듯이 테스트 되어야 한다.

 

167086.1 : tips for avoiding upgrade related query problems

 

REFERENCES

==============================================================================

160089.1 why are my queries slow after upgrading my database?

223806.1 query with unchanged execution plan is slower after database upgrade

261079.1 internal script setting individual parameters seperately to mimic setting

         optimizer_features_enable=8.1.x

        

반응형

'DB > Oracle' 카테고리의 다른 글

oracle flash_recovery_area  (0) 2016.02.04
ODP.Net Bulk Insert  (0) 2016.02.04
dump ora-01461 LANG 값은 LONG 열에 삽입할 때만 바인드할 수 있습니다.  (0) 2016.02.04
오라클 gmt 시간 조회  (0) 2016.02.04
오라클 sys 암호 설정  (0) 2016.02.04