내용 목차
본 장에서는 DBMS_STATS 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다.
DBMS_STATS는 데이터베이스 객체의 통계 정보를 수집하고 관리하는 패키지이다. 이 패키지를 사용하면 데이터베이스에 있는 컬럼, 테이블, 데이터 사전(DD: Data Dictionary), 인덱스, 스키마, 시스템 등에 대한 통계 정보를 수집하고 관리(예: 삭제 또는 초기화 등)할 수 있다.
테이블 통계 정보 수집시에 사용자 선택에 따라서 컬럼 각각에 대한 데이터 분포도를 저장한다. 이를 히스토그램이라 하고, 수집 가능한 데이터 타입은 NUMBER, CHAR, VARCHAR, DATE, TIME, TIMESTAMP이다.
사용자는 자신에게 소속된 객체들에 대해서만 통계 정보 수집이 가능하다. ANALYZE ANY 권한을 부여받으면 모든 사용자의 객체에 대한 통계 정보 수집이 가능하다.
본 절에서는 DBMS_STATS 패키지에서 제공하는 프러시저를 알파벳 순으로 설명한다.
통계 정보 히스토리 보유 기간을 변경하는 프러시저이다. 해당 값은 통계 정보 히스토리를 제거하는 시점에 영향을 끼친다. 히스토리를 제거하는 기능은 “39.2.38. PURGE_STATS”를 참고한다.
ALTER_STATS_HISTORY_RETENTION 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.ALTER_STATS_HISTORY_RETENTION ( retention NUMBER );
파라미터
파라미터 | 설명 |
---|---|
retention | 통계 정보 히스토리를 보유할 최대 기간(일 단위)이다. 1 이상의 값이어야 하지만, 특별한 목적을 위해 아래와 같이 값을 지정할 수 있다.
|
테이블 및 로컬 인덱스의 원본 파티션의 통계 정보를 대상 파티션의 통계 정보로 복사하는 프러시저이다.
RANGE 파티션일 경우 파티션 키의 첫 번째 컬럼의 히스토그램이 대상 파티션 바로 이전 파티션까지를 대상으로 수집되었다면 히스토그램도 같이 갱신한다.
COPY_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.COPY_TABLE_STATS ( ownname IN VARCHAR2, tabname IN VARCHAR2, srcpartname IN VARCHAR2, dstpartname IN VARCHAR2, scale_factor IN NUMBER DEFAULT 1, flags IN NUMBER DEFAULT NULL, force IN BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 파티션이 속한 스키마의 이름이다. |
tabname | 파티션이 속한 테이블의 이름이다. |
srcpartname | 통계 정보를 복사할 원본 파티션의 이름이다. |
dstpartname | 통계 정보를 복사할 대상 파티션의 이름이다. |
scale_factor | 원본 파티션의 로우 갯수, 블록 개수 등을 해당 수치만큼 곱하여 대상 파티션에 저장한다. |
flags | 사용하지 않는 파라미터이다. |
force | TRUE로 설정되면, 테이블의 통계 정보가 잠겨 있어도 복사한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 존재하지 않는 테이블 혹은 파티션 이름을 입력한 경우이다. |
통계 정보를 저장할 통계 테이블을 생성하는 프러시저이다.
CREATE_STAT_TABLE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.CREATE_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2, tblspace VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
ownname | 통계 테이블이 속한 스키마의 이름이다. |
stattab | 통계 정보를 저장할 통계 테이블의 이름이다. |
tblspace | 통계 테이블이 속할 테이블 스페이스의 이름이다. (기본값: NULL, NULL일 경우 SYSTEM 테이블 스페이스에 저장된다) |
예외 상황
예외 상황 | 설명 |
---|---|
7068 | 잘못된 스키마를 입력한 경우이다. |
컬럼의 통계 정보를 삭제하는 프러시저이다.
DELETE_COLUMN_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, cascade_parts BOOLEAN DEFAULT TRUE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 컬럼이 속한 테이블의 이름이다. |
colname | 컬럼의 이름이다. |
partname | 통계 정보를 삭제할 파티션의 이름이다. 테이블이 파티션되어 있고, partname의 값이 NULL이면 테이블 수준의 컬럼 통계 정보를 삭제한다. |
cascade_parts | 테이블이 파티션되어 있고, partname이 NULL일 때 TRUE로 설정하면 모든 파티션 수준의 컬럼 통계 정보도 함께 삭제한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 컬럼 통계 정보가 잠겨있어도 삭제한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
데이터베이스에 있는 모든 테이블의 통계 정보를 삭제하는 프러시저이다.
DELETE_DATABASE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_DATABASE_STATS ( no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨있는 테이블 및 관련 객체들의 통계 정보들도 삭제한다. |
모든 데이터 사전의 스키마(SYS, SYSCAT)의 통계 정보를 삭제하는 프러시저이다.
DELETE_DICTIONARY_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_DICTIONARY_STATS ( no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨있는 테이블 및 관련 객체들의 통계 정보들도 삭제한다. |
인덱스의 통계 정보를 삭제하는 프러시저이다.
DELETE_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_INDEX_STATS ( ownname VARCHAR2, idxname VARCHAR2, partname VARCHAR2 DEFAULT NULL, cascade_parts BOOLEAN DEFAULT TRUE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
idxname | 인덱스의 이름이다. |
partname | 통계 정보를 삭제할 파티션의 이름이다. 인덱스가 파티션으로 나누어져 있고, partname의 값이 NULL이면 인덱스 수준의 통계 정보를 삭제한다. |
cascade_parts | 인덱스가 파티션으로 나누어져 있고, partname의 값이 NULL일 때 TRUE로 설정하면 모든 파티션 수준의 통계 정보도 함께 삭제한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 인덱스의 통계 정보가 잠겨있어도 삭제한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
스키마 전체의 통계 정보를 삭제하는 프러시저이다.
DELETE_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_SCHEMA_STATS ( ownname VARCHAR2, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 삭제한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
workload 시스템의 통계 정보를 삭제하고, noworkload 시스템의 통계 정보를 초기화하는 프러시저이다. workload 시스템의 통계 정보는 INTERVAL, START, STOP 옵션으로, noworkload 시스템의 통계 정보는 NOWORKLOAD 옵션으로 수집한다.
DELETE_SYSTEM_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_SYSTEM_STATS ();
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
테이블의 통계 정보를 삭제하는 프러시저이다.
DELETE_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DELETE_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, cascade_parts BOOLEAN DEFAULT TRUE, cascade_columns BOOLEAN DEFAULT TRUE, cascade_indexes BOOLEAN DEFAULT TRUE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 통계 정보를 삭제할 대상 파티션의 이름이다. 파티션으로 나뉘어 있고, partname의 값이 NULL이면 테이블 수준의 통계 정보를 삭제한다. |
cascade_parts | 테이블이 파티션으로 나뉘어 있고, partname이 NULL일 때 TRUE로 설정하면 모든 파티션 수준의 통계 정보도 함께 삭제한다. |
cascade_columns | TRUE로 설정하면 컬럼의 통계 정보도 함께 삭제한다. |
cascade_indexes | TRUE로 설정하면 테이블에 있는 인덱스의 통계 정보도 함께 삭제한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 테이블의 통계 정보가 잠겨있어도 삭제한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
통계 테이블을 삭제하는 프러시저이다.
DROP_STAT_TABLE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.DROP_STAT_TABLE ( ownname VARCHAR2, stattab VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
ownname | 통계 테이블이 속한 스키마의 이름이다. |
stattab | 통계 정보를 저장할 통계 테이블의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
7068 | 잘못된 스키마를 입력한 경우이다. |
지정한 컬럼의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_COLUMN_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
colname | 컬럼의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 컬럼을 입력한 경우이다. |
데이터베이스에 있는 테이블의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_DATABASE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_DATABASE_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
지정한 인덱스의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
indname | 인덱스의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 인덱스를 입력한 경우이다. |
스키마 전체의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_SCHEMA_STATS ( ownname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 스키마를 입력한 경우이다. |
시스템의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_SYSTEM_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
테이블의 통계 정보를 통계 테이블에 저장하는 프러시저이다.
EXPORT_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.EXPORT_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, cascade BOOLEAN DEFAULT TRUE, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
cascade | 테이블이 갖는 컬럼, 인덱스, 파티션의 통계 정보를 저장한다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블을 입력한 경우이다. |
데이터베이스의 모든 객체의 통계 정보를 수집하는 프러시저이다.
GATHER_DATABASE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_DATABASE_STATS ( estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('STAT_ESTIMATE_PERCENT'), block_sample BOOLEAN DEFAULT FALSE, method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'), degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')), cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')), gather_sys BOOLEAN DEFAULT FALSE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), options VARCHAR2 DEFAULT 'GATHER', force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
estimate_percent | 샘플링할 로우의 퍼센트를 정의한다. 0.000001 이상 100 이하의 값을 설정할 수 있다. 0을 입력한 경우에는 optimizer가 테이블에 크기에 따라 적합한 sampling rate을 결정하여 수행한다. |
block_sample | estimate_percent가 100보다 작을 때 로우 샘플링 대신 블록 샘플링을 사용할 수 있다. 블록 샘플링 방식은 로우 샘플링에 비해 표본이 고르게 뽑히지 않기 때문에 estimate_percent가 충분히 크지 않을 때는 기본값인 FALSE로 두어야 한다. |
method_opt | 히스토그램 생성에 대한 옵션으로 설정 방법은 [method_opt 파라미터 설정방법]을 참고한다. |
degree | 병렬 쿼리의 처리 개수를 설정한다. |
cascade | 인덱스에 대해서도 통계 정보를 수집한다. |
gather_sys | SYS 사용자의 테이블에 대해서도 통계 정보를 수집한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
options | 수집할 테이블의 기준을 정한다.
|
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 수집한다. |
[method_opt 파라미터 설정방법]
다음과 같은 형식으로 method_opt 파라미터를 설정할 수 있다.
FOR ALL
FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]
각 옵션에 대한 설명은 다음과 같다.
옵션 | 설명 |
---|---|
INDEXED | 인덱스된 컬럼의 통계 정보를 수집한다. |
HIDDEN | 실제 컬럼이 아닌 functional index로 생성된 컬럼에 대해서 통계 정보를 수집한다. |
size_clause | 히스토그램을 생성할 때 길이를 설정하는 데 필요한 절이다. |
FOR COLUMNS
FOR COLUMNS [size_clause] column [size_clause] [,column [size_clause]...]
각 옵션에 대한 설명은 다음과 같다.
옵션 | 설명 |
---|---|
size_clause | 히스토그램을 생성할 때 길이를 설정하는 데 필요한 절이다. |
size_clause
size_clause := SIZE {integer | REPEAT | AUTO}
각 항목에 대한 설명은 다음과 같다.
항목 | 설명 |
---|---|
integer | 히스토그램 버킷의 수 이다. 1~256개까지 설정할 수 있다. |
REPEAT | 히스토그램이 있는 경우에만 히스토그램의 정보를 수집한다. |
AUTO | 시스템에서 자동으로 값을 결정한다. |
예외 상황
예외 상황 | 설명 |
---|---|
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
모든 데이터 사전의 스키마(SYS, SYSCAT) 객체의 통계 정보를 수집하는 프러시저이다.
GATHER_DICTIONARY_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_DICTIONARY_STATS ( estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('STAT_ESTIMATE_PERCENT'), block_sample BOOLEAN DEFAULT FALSE, method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'), degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')), cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')), no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
estimate_percent | 샘플링할 로우의 퍼센트를 정의한다. 0.000001 이상 100 이하의 값을 설정할 수 있다. 0을 입력한 경우에는 optimizer가 테이블에 크기에 따라 적합한 sampling rate을 결정하여 수행한다. |
block_sample | estimate_percent가 100보다 작을 때 로우 샘플링 대신 블록 샘플링을 사용할 수 있다. 블록 샘플링 방식은 로우 샘플링에 비해 표본이 고르게 뽑히지 않기 때문에 estimate_percent가 충분히 크지 않을 때는 기본값인 FALSE로 두어야 한다. |
method_opt | 히스토그램 생성에 대한 옵션이다. 파라미터를 설정하는 방법은 [method_opt 파라미터 설정방법]을 참고한다. |
degree | 병렬 쿼리의 처리 개수를 설정한다. |
cascade | 인덱스에 대해서도 통계 정보를 수집한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 수집한다. |
예외 상황
예외 상황 | 설명 |
---|---|
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
인덱스의 통계 정보를 수집하는 프러시저이다.
GATHER_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_INDEX_STATS ( ownname VARCHAR2, idxname VARCHAR2, partname VARCHAR2 DEFAULT NULL, estimate_percent NUMBER DEFAULT to_estimate_percent_type ( get_param ('STAT_ESTIMATE_PERCENT')), degree NUMBER DEFAULT to_degree_type(get_param('STAT_DEGREE')), no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
idxname | 인덱스의 이름이다. |
partname | 파티션의 이름이다. |
estimate_percent | 샘플링할 로우의 퍼센트를 정의한다. 0.000001 이상 100 이하의 값을 설정할 수 있다. 0을 입력한 경우에는 optimizer가 테이블에 크기에 따라 적합한 sampling rate을 결정하여 수행한다. |
degree | 병렬 쿼리의 처리 개수를 설정한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 인덱스의 통계 정보가 잠겨 있어도 수집한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
스키마의 모든 객체의 통계 정보를 수집하는 프러시저이다.
GATHER_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_SCHEMA_STATS ( ownname VARCHAR2, estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('STAT_ESTIMATE_PERCENT'), block_sample BOOLEAN DEFAULT FALSE, method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'), degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')), cascade BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')), no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
estimate_percent | 샘플링할 로우의 퍼센트를 정의한다. 0.000001 이상 100 이하의 값을 설정할 수 있다. 0을 입력한 경우에는 optimizer가 테이블에 크기에 따라 적합한 sampling rate을 결정하여 수행한다. |
block_sample | estimate_percent가 100보다 작을 때 로우 샘플링 대신 블록 샘플링을 사용할 수 있다. 블록 샘플링 방식은 로우 샘플링에 비해 표본이 고르게 뽑히지 않기 때문에 estimate_percent가 충분히 크지 않을 때는 기본값인 FALSE로 두어야 한다. |
method_opt | 히스토그램 생성에 대한 옵션이다. 파라미터를 설정하는 방법은 [method_opt 파라미터 설정방법]을 참고한다. |
degree | 병렬 쿼리의 처리 개수를 설정한다. |
cascade | 인덱스에 대해서도 통계 정보를 수집한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 수집한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
시스템의 통계 정보를 수집하는 프러시저이다. 이 프러시저를 사용하려면 DBA 권한이 필요하다.
GATHER_SYSTEM_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_SYSTEM_STATS ( gathering_mode VARCHAR2 DEFAULT 'NOWORKLOAD', interval NUMBER DEFAULT 60, limit VARCHAR2 DEFAULT '3G' );
파라미터
파라미터 | 설명 |
---|---|
gathering_mode | NOWORKLOAD, INTERVAL, START/STOP 옵션을 지원한다. 각 옵션에 대한 설명은 다음의 [gathering_mode 파라미터 설정 옵션]을 참조한다. |
interval | gathering_mode가 INTERVAL일 때 시스템의 성능을 측정하는 시간을 분 단위로 나타낸다. (기본값: 60분) |
limit | gathering_mode가 NOWORKLOAD일 때 임의의 입출력을 수행해 볼 최대 데이터양을 Byte 단위로 나타낸다. 이때 단위는 K(Kilo Byte), M(Mega Byte), G(Giga Byte), T(Tera Byte) 등을 사용할 수 있다. 캐시 버퍼(데이터베이스의 캐시, 운영체제의 캐시 등)의 크기보다 큰 값을 사용해야 좀 더 정확한 정보를 얻을 수 있다. (기본값: 3G) |
[gathering_mode 파라미터 설정 옵션]
gathering_mode 파라미터에 설정할 수 있는 각 옵션에 대한 설명은 다음과 같다.
옵션 | 설명 |
---|---|
NOWORKLOAD | 시스템의 CPU와 입출력 성능을 측정한다. 즉 시스템의 통계 정보 중 CPUSPEED, SEEKTM, TRFSPEED를 수집한다.
이 모드에서 시스템의 통계 정보를 수집하면 데이터베이스 크기에 따라 몇 분이 걸릴 수 있다. 이를 해결하기 위해 limit 파라미터를 사용하여 수집 시간을 조절할 수 있다. |
INTERVAL | interval 파라미터에 설정된 시간 동안 시스템의 성능을 측정한다. workload 시스템의 통계 정보인 SBLKRDTM, MBLKRDTM, MBLKRDCNT를 수집한다. 필요하다면 gathering_mode 파라미터의 옵션을 STOP으로 설정하여 interval 파라미터에 설정한 시간이 모두 지나가기 전에 수집을 일찍 마칠 수 있다. |
START, STOP | START와 STOP 옵션 간의 시스템 성능을 측정한다. workload 시스템의 통계 정보인 SBLKRDTM, MBLKRDTM, MBLKRDCNT를 수집한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20000 | 권한이 부족한 경우이다. |
20023 | 잘못된 gathering_mode 파라미터(NOWORKLOAD, INTERVAL, START, STOP만 가능)를 사용한 경우이다. |
20026 | 잘못된 파라미터 값을 입력한 경우이다. |
20027 | _DD_AUX_STATS 통계 테이블의 내용이 이상한 경우이다. |
테이블의 통계 정보를 수집하는 프러시저이다.
GATHER_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('STAT_ESTIMATE_PERCENT'), block_sample BOOLEAN DEFAULT FALSE, method_opt VARCHAR2 DEFAULT get_param('STAT_METHOD_OPT'), degree NUMBER DEFAULT to_degree_type (get_param('STAT_DEGREE')), cascade_indexes BOOLEAN DEFAULT to_boolean(get_param('STAT_CASCADE')), no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), granularity VARCHAR2 DEFAULT 'ALL', force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 현재 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 파티션의 이름이다. |
estimate_percent | 샘플링할 로우의 퍼센트를 정의한다. 0.000001 이상 100 이하의 값을 설정할 수 있다. 0을 입력한 경우에는 optimizer가 테이블에 크기에 따라 적합한 sampling rate을 결정하여 수행한다. |
block_sample | estimate_percent가 100보다 작을 때 로우 샘플링 대신 블록 샘플링을 사용할 수 있다. 블록 샘플링 방식은 로우 샘플링에 비해 표본이 고르게 뽑히지 않기 때문에 estimate_percent가 충분히 크지 않을 때는 기본값인 FALSE로 두어야 한다. |
method_opt | 히스토그램 생성에 대한 옵션이다. 파라미터를 설정하는 방법은 [method_opt 파라미터 설정방법]을 참고한다. |
degree | 병렬 쿼리의 처리 개수를 설정한다. |
cascade_indexes | 인덱스에 대해서도 통계 정보를 수집한다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
granularity | 통계 정보를 수집하는 대상을 가리킨다.
|
force | TRUE로 설정하면 테이블의 통계 정보가 잠겨 있어도 수집한다. |
예외 상황
예외 상황 | 설명 |
---|---|
OBJECT_NOT_EXISTS | 객체가 존재하지 않는 경우이다. |
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 있는 지정한 컬럼의 통계 정보를 가져오는 프러시저이다.
GET_COLUMN_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GET_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, distcnt OUT NUMBER, density OUT NUMBER, nullcnt OUT NUMBER, avgclen OUT NUMBER );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
colname | 컬럼의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
distcnt | 컬럼 내 서로 다른 값들의 개수이다. |
density | 컬럼 값들의 밀도이다. |
nullcnt | 컬럼 내 NULL 개수이다. |
avgclen | byte 단위로 나타낸 컬럼의 평균길이이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 컬럼을 입력한 경우이다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 있는 지정한 인덱스의 통계 정보를 가져오는 프러시저이다.
GET_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GET_INDEX_STATS ( ownname VARCHAR2, idxname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown GET_TABLE_STATSVARCHAR2 DEFAULT NULL, numrows OUT NUMBER, numlblks OUT NUMBER, numdist OUT NUMBER, clstfct OUT NUMBER, idxlevel OUT NUMBER );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
idxname | 인덱스의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
numrows | 인덱스의 로우 개수이다. |
numblks | 인덱스의 블록 개수이다. |
numlblks | 인덱스의 리프블록 개수이다. |
numdist | 인덱스 내 서로 다른 값들의 개수이다. |
clstfct | 인덱스의 클러스터링 팩터이다. 0에서 1 사이의 값으로 정규화되어 있다. |
idxlevel | 인덱스의 높이이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20007 | 잘못된 인덱스를 입력한 경우이다. |
20003 | 잘못된 파티션을 입력한 경우이다. |
20004 | 파티션 인덱스가 아닌데 파티션 이름을 지정한 경우이다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 있는 지정된 테이블의 통계 정보를 가져오는 프러시저이다.
GET_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GET_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, numrows OUT NUMBER, numblks OUT NUMBER, avgrlen OUT NUMBER );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
numrows | 테이블의 로우 개수이다. |
numblks | 테이블의 블록 개수이다. |
avgrlen | 테이블의 평균 로우 길이이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블 혹은 파티션을 입력한 경우이다. |
20004 | 파티션 테이블이 아닌데 파티션을 입력한 경우이다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
통계 테이블에 있는 지정한 컬럼의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_COLUMN_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
colname | 컬럼의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 컬럼 통계 정보가 잠겨있어도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 컬럼을 입력한 경우이다. |
통계 테이블에 있는 모든 테이블의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_DATABASE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_DATABASE_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
통계 테이블에 있는 지정한 인덱스의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_INDEX_STATS ( ownname VARCHAR2, indname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
indname | 인덱스의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 인덱스의 통계 정보가 잠겨있어도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 인덱스를 입력한 경우이다. |
통계 테이블에 있는 스키마 전체의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_SCHEMA_STATS ( ownname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 스키마를 입력한 경우이다. |
통계 테이블에 있는 시스템의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_SYSTEM_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_SYSTEM_STATS ( stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
통계 테이블에 있는 테이블의 통계 정보를 데이터 사전에 저장하는 프러시저이다.
IMPORT_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.IMPORT_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, stattab VARCHAR2, statid VARCHAR2 DEFAULT NULL, cascade BOOLEAN DEFAULT TRUE, statown VARCHAR2 DEFAULT NULL, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
cascade | 테이블이 갖는 컬럼, 인덱스, 파티션의 통계 정보를 저장한다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 테이블의 통계 정보가 잠겨있어도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블을 입력한 경우이다. |
해당 테이블과 소속된 인덱스, 파티션, 컬럼의 통계 정보들을 잠그는 프러시저이다. 잠겨진 통계 정보는 수집 혹은 삭제, 복사가 불가능하다.
단일 테이블에 대한 수집, 삭제, 복사 (GATHER_TABLE_STATS, DELETE_TABLE_STATS 등)에 대해서는 에러가 발생하고 , 여러 객체에 대한 수집, 삭제, 복사 (GATHER_SCHEMA_STATS, DELETE_DATABASE_STATS 등)에 대해서는 건너뛰어 진행한다.
LOCK_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.LOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블을 입력한 경우이다. |
해당 스키마에 소속된 테이블, 인덱스, 파티션, 컬럼의 통계 정보들을 잠그는 프러시저이다. 잠겨진 통계 정보는 수집 혹은 삭제, 복사가 불가능하다.
단일 테이블에 대한 수집, 삭제, 복사 (GATHER_TABLE_STATS, DELETE_TABLE_STATS 등)에 대해서는 에러가 발생하고 , 여러 객체에 대한 수집, 삭제, 복사 (GATHER_SCHEMA_STATS, DELETE_DATABASE_STATS 등)에 대해서는 건너뛰어 진행한다.
LOCK_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.LOCK_SCHEMA_STATS ( ownname VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20002 | 잘못된 스키마를 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 사용자가 입력한 지정된 컬럼에 대한 임의의 통계 정보를 기록하는 프러시저이다.
SET_COLUMN_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.SET_COLUMN_STATS ( ownname VARCHAR2, tabname VARCHAR2, colname VARCHAR2, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, distcnt NUMBER, density NUMBER, nullcnt NUMBER, avgclen NUMBER, no_invalidate BOOLEAN DEFAULT to_boolean(SET_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
colname | 컬럼의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
distcnt | 컬럼 내 서로 다른 값들의 개수이다. |
density | 컬럼 값들의 밀도이다. |
nullcnt | 컬럼 내 NULL 개수이다. |
avgclen | byte 단위로 나타낸 컬럼의 평균길이이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 컬럼 통계 정보가 잠겨있어도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 컬럼을 입력한 경우이다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 사용자가 입력한 지정된 인덱스에 대한 임의의 통계 정보를 기록하는 프러시저이다.
SET_INDEX_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.SET_INDEX_STATS ( ownname VARCHAR2, idxname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, numrows NUMBER, numlblks NUMBER, numdist NUMBER, clstfct NUMBER, idxlevel NUMBER, no_invalidate BOOLEAN DEFAULT to_boolean(SET_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
idxname | 인덱스의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
numrows | 인덱스의 로우 개수이다. |
numblks | 인덱스의 블록 개수이다. |
numlblks | 인덱스의 리프블록 개수이다. |
numdist | 인덱스 내 서로 다른 값들의 개수이다. |
clstfct | 인덱스의 클러스터링 팩터이다. 0에서 1 사이의 값으로 정규화되어 있다. |
idxlevel | 인덱스의 높이이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 인덱스의 통계 정보가 잠겨있어도 저장한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 파티션을 입력한 경우이다. |
20004 | 파티션 인덱스가 아닌데 파티션 이름을 입력한 경우이다. |
20007 | 해당 인덱스가 비활성화되어 있거나 통계 정보를 저장할 수 없는 형식의 인덱스이다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
데이터 사전(DD: Data Dictionary) 또는 통계 테이블에 사용자가 입력한 지정된 테이블에 대한 임의의 통계 정보를 기록하는 프러시저이다.
SET_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.SET_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2 DEFAULT NULL, stattab VARCHAR2 DEFAULT NULL, statid VARCHAR2 DEFAULT NULL, statown VARCHAR2 DEFAULT NULL, numrows NUMBER, numblks NUMBER, avgrlen NUMBER, no_invalidate BOOLEAN DEFAULT to_boolean(SET_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
partname | 파티션의 이름이다. |
stattab | 통계 테이블의 이름이다. |
statid | 통계 테이블 내에서 구분할 통계 정보 ID이다. |
statown | 통계 테이블이 속한 스키마의 이름이다. |
numrows | 테이블의 로우 개수이다. |
numblks | 테이블의 블록 개수이다. |
avgrlen | 테이블의 평균 로우 길이이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 테이블의 통계 정보가 잠겨있어도 수정한다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블 혹은 파티션을 입력한 경우이다. |
20004 | 해당 테이블은 파티션된 테이블이 아니다. |
20025 | 잘못된 통계 테이블을 입력한 경우이다. |
지정된 시점보다 오래된 통계 정보 히스토리들을 제거하는 프러시저이다. 이 프러시저 수행을 하려면 SYSDBA 혹은 ANALYZE ANY 권한이 필요하다.
스키마의 모든 객체의 통계 정보를 지정된 시간대(as_of_timestamp)로 복원하는 프러시저이다.
RESTORE_SCHEMA_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.RESTORE_SCHEMA_STATS ( ownname VARCHAR2, as_of_timestamp TIMESTAMP WITH TIME ZONE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
as_of_timestamp | 복원할 통계 정보의 시간대이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 잠겨 있는 테이블 및 관련 객체들의 통계 정보들도 복원한다. |
테이블의 통계 정보를 지정된 시간대(as_of_timestamp)로 복원하는 프러시저이다. 이 프러시저는 연관된 인덱스와 컬럼들의 통계 정보들까지 복원한다.
RESTORE_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.RESTORE_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2, as_of_timestamp TIMESTAMP WITH TIME ZONE, no_invalidate BOOLEAN DEFAULT to_boolean(get_param('STAT_NO_INVALIDATE')), force BOOLEAN DEFAULT FALSE );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
as_of_timestamp | 복원할 통계 정보의 시간대이다. |
no_invalidate | TRUE로 설정하면 관련된 Physical Plan을 삭제하지 않는다. |
force | TRUE로 설정하면 테이블의 통계 정보가 잠겨 있어도 복원한다. |
DBMS_STATS 패키지의 디폴트 파라미터의 값을 변경하는 프러시저이다.
SET_PARAM 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.SET_PARAM ( pname VARCHAR2, pval VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
pname | 파라미터의 이름이다. |
pval | 파라미터의 설정 값이다.
|
예외 상황
예외 상황 | 설명 |
---|---|
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
시스템의 통계 값을 수동으로 설정하는 프러시저이다.
SET_SYSTEM_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.SET_SYSTEM_STATS ( pname VARCHAR2, pvalue VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
pname | 파라미터의 이름이다. |
pvalue | 파라미터의 설정 값이다. 다음은 파라미터에 대한 설명이다.
|
예외 상황
예외 상황 | 설명 |
---|---|
20000 | DBA 권한이 없는 경우이다. |
20021 | 잘못된 파라미터 값을 입력한 경우이다. |
20022 | 잘못된 파라미터 이름을 입력한 경우이다. |
해당 테이블과 소속된 인덱스, 파티션, 컬럼의 통계 정보들에 대한 잠금을 해제하는 프러시저이다. 잠금이 해지된 통계 정보는 수집 혹은 삭제, 복사가 다시 가능해진다.
UNLOCK_TABLE_STATS 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.UNLOCK_TABLE_STATS ( ownname VARCHAR2, tabname VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
ownname | 스키마의 이름이다. NULL일 경우 이 프러시저를 호출한 스키마의 이름이다. |
tabname | 테이블의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
20003 | 잘못된 테이블을 입력한 경우이다. |
본 절에서는 DBMS_STATS 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.
DBMS_STATS 패키지의 디폴트 파라미터의 값을 반환하는 함수이다.
프로토타입
DBMS_STATS.GET_PARAM ( pname VARCHAR2 ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
pname | 파라미터의 이름이다. |
예외 상황
예외 상황 | 설명 |
---|---|
BAD_INPUT_VALUE | 잘못된 파라미터 값을 입력한 경우이다. |
사용 가능한 가장 오래된 통계 정보 히스토리의 저장 시점을 반환한다. 사용자는 통계 정보를 이 시점보다 예전으로 복원할 수 없다.
GET_STATS_HISTORY_AVAILABILITY 함수의 세부 내용은 다음과 같다.
프로토타입
DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY RETURN TIMESTAMP WITH TIME ZONE;