본문 바로가기

DataBase/Oracle

DBMS_STATS 패키지

DBMS_STATS 패키지

DBMS_STATS 패키지는 옵티마이저에서 스키마나 DB에 있는 모든 스키마 객체에 대한 통계뿐만 아니라 클러스터를 제외한 인덱스, 테이블, 컬럼과 파티션에 대한 통계정보를 수집하고 통계정보에 대한 검색, 수정, 익스포트, 임포트 등이 가능하다.

dbms_stats 패키지는 통계정보를 수집하기 위해 다음 프로시저들을 사용한다.

프로시저 설 명
GATHER_INDEX_STATS 인덱스 통계정보 수집
GATHER_TABLE_STATS 테이블, 컬럼, 인덱스 통계정보 수집
GATHER_SCHEMA_STATS 스키마 내의 모든 객체에 대한 통계정보 수집
GATHER_DATABASE_STATS DB 내의 모든 객체에 대한 통계정보 수집
GATHER_SYSTEM_STATS 시스템에 대한 CPU, I/O 통계정보 수집

SQL> exec dbms_stats.gather_database_stats;
 
PL/SQL procedure successfully completed.
 
SQL> exec dbms_stats.gather_system_stats;
 
PL/SQL procedure successfully completed.
 
SQL> exec dbms_stats.gather_schema_stats('SCOTT');
 
PL/SQL procedure successfully completed.
 
SQL> exec dbms_stats.gather_table_stats('SCOTT','EMP');
 
PL/SQL procedure successfully completed.
 
SQL> exec dbms_stats.gather_table_stats('SCOTT','EMP',NULL,50,TRUE,'FOR ALL COLUMNS',2,'DEFAULT',TRUE);
 
PL/SQL procedure successfully completed.
SQL>

여기서 ('SCOTT','EMP',NULL,50,TRUE,'FOR ALL COLUMNS',2,'DEFAULT',TRUE)가 의미하는 내용은 다음과 같다.

'SCOTT'통계 정보를 수집할 DB 사용자의 이름
'EMP'통계 정보를 수집할 테이블
NULL분할 테이블인지 여부
50테이블 행의 50% 데이터로 통계정보 수집
TRUE불록에 대한 통계정보 수집 여부
'FOR ALL COLUMNS'모든 컬럼에 대한 통계정보 수집
2통계정보 수집에서 병렬 질의 프로세스 2개 사용
'DEFAULT'통계정보 수집시 테이블과 분할 정보 이용
TRUE인덱스가 있으면 함께 통계정보 수집

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

[펌]ANALYZE ?  (0) 2008.10.06
ANALYZE 명령어  (0) 2008.10.06
HINT관련설명  (0) 2008.10.06
일수구하는쿼리...  (0) 2008.09.30
시노님(SYNONYM) 이란?  (0) 2008.09.10