출처  :  http://kr.forums.oracle.com/forums/thread.jspa?threadID=477126&tstart=90




제품 : ORACLE SERVER

작성날짜 : 2006-07-21



PURPOSE
------------------------------------------------------------------------------------------------

이 문서는 10g의 new feature인 자동 통계정보 수집(Automatic Optimizer Statistics Collection)에 대한
소개와 기능에 대한 자료이다.




Explanation
------------------------------------------------------------------------------------------------

1. 개요

Optimizer statistics는 GATHER_STATS_JOB에 의해서 자동으로 수집된다. 이 JOB은 SYS 소유로서
OBJECT_TYPE이 JOB이다. 이 JOB은 통계정보가 없거나 stale 상태의 통계정보를 갖는 DB 내의
모든 OBJECT들에 대한 통계정보들을 수집한다.


2. 자동 통계정보 수집을 위한 설정과 방식

1) STATISTICS_LEVEL = TYPICAL | ALL

2) 통계정보들은 predefined GATHER_STATS_JOB에 의해 수집된다.

3) JOB이 수행될 때 JOB은 다음과 같은 사항들을 결정한다.

- missing 또는 stale 상태의 통계정보를 갖는 object를 결정한다.
- 좋은 통계정보를 생성하기 위해 필요한 적당한 sampling percentage.
- histogram과 histogram의 사이즈를 요구하는 적절한 column.
- 통계정보 수집에 대한 parallelism의 degree.
- 어느 object에 대한 통계정보를 수집할지에 대한 우선순위


3. GATHER_STATS_JOB에 대한 설명

이 job은 데이타베이스 생성 시점에 생성되고 스케줄러에 의해 관리된다. GATHER_STATS_JOB 은
DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC procedure를 call함으로써 통계정보를 수집한다.

이 프로시져는 'GATHER AUTO' 옵션을 사용한 DBMS_STATS.GATHER_DATABASE_STATS procedure와
아주 유사한 형태로 동작한다. 이것과 다른 점은 GATHER_DATABASE_STATS_JOB_PROC procedure는
통계정보를 수집해야 할 Object에 대해 우선순위를 두고 순서대로 처리한다.

즉, 가장 많이 통계정보가 update가 되어야 할 object를 가장 먼저 처리하는 것이다. 이것은 maintenance
window가 close되기 전에 가장 필요한 통계정보가 먼저 수집되도록 하기 위함이다.


4. Dictionary Objects에 대한 통계정보

1) Oracle Database 10g부터 최적의 performance 결과를 얻기 위해 dictionary table들에 대한
통계정보도 수집할 수 있다.  언제라도, DBMS_STATS.GATHER_{SCHEMA|DATABASE}_STATS procedure를
사용하여 dictionary table들에 대한 통계정보를 수집하는 것이 가능하다.
이 때 GATHER_SYS argument는 TRUE로 셋팅되어 있어야 한다.

2) DBMS_STATS.GATHER_DICTIONARY_STATS라 하는 새로운 procedure도 사용하는 것이 가능하다.
이것을 사용하기 위해서는 ANALYZE ANY DICTIONARY 라는 새로운 system privilege가 있어야 한다.
이 권한은 만약 어떤 user가 SYSDBA 권한이 없는 경우 dictionary object와 fixed object들을 analyze할 수 있도록 한다.

3) GATHER_DATABASE_STATS라는 프로시져는 GATHER_FIXED라 불리우는 새로운 argument를 가진다.
이 값은 default로 FALSE로 셋팅된다. 즉, 기본적으로 fixed table들에 대해서는 통계정보를 생성하지 않도록 한다.
전형적인 System WorkLoad가 있는 동안에는 fixed table들에 대하여 한번만 analyze하면 충분하다.

4) GATHER_FIXED_OBJECTS_STATS라는 procedure를 사용하여 fixed table들에 대한 통계정보를 모으는
것도 가능하다. 또한 모든 fixed table들에 대하여 통계정보를 delete하는 것도 가능하고, fixed table에 통계정보를
export 또는 import하는 것도 가능하다.



Example
------------------------------------------------------------------------------------------------

none



Reference Documents
------------------------------------------------------------------------------------------------

<Note:266040.1>
 
 



 

+ Recent posts