콘텐츠로 이동

DBMS STATS

DBMS_STATS#

DBMS_STATS 패키지는 통계 정보를 조회 및 변경할 수 있는 인터페이스를 제공한다. 저장 프로시저 및 함수를 이용해서 통계 정보를 구축하고 갱신할 수 있으며, 개별의 칼럼, 인덱스, 테이블 또는 시스템 별로 통계 자료를 설정하거나 삭제할 수 있다.

DBMS_STATS 패키지를 구성하는 프로시저와 함수는 아래의 표와 같이 제공한다.

프로시저 및 함수 설명
COPY_TABLE_STATS 파티션의 통계 정보를 새로운 파티션에 복사한다.
DELETE_COLUMN_STATS 특정 테이블의 칼럼에 대한 통계 자료를 삭제한다.
DELETE_DATABASE_STATS 모든 테이블에 대한 통계 자료를 삭제한다.
DELETE_INDEX_STATS 특정 인덱스에 대한 통계 자료를 삭제한다.
DELETE_TABLE_STATS 특정 테이블에 대한 통계 자료를 삭제한다.
DELETE_SYSTEM_STATS 데이터베이스 시스템에 대한 통계 자료를 삭제한다.
GATHER_DATABASE_STATS 모든 테이블에 대한 통계 자료를 수집한다.
GATHER_INDEX_STATS 특정 인덱스에 대한 통계 자료를 수집한다.
GATHER_SYSTEM_STATS 데이터베이스 시스템에 대한 통계 자료를 수집한다.
GATHER_TABLE_STATS 특정 테이블에 대한 통계 자료를 수집한다.
GET_COLUMN_STATS 특정 테이블의 칼럼에 대한 통계 자료를 조회한다.
GET_INDEX_STATS 특정 인덱스에 대한 통계 자료를 조회한다.
GET_SYSTEM_STATS 데이터베이스 시스템에 대한 통계 자료를 조회한다.
GET_TABLE_STATS 특정 테이블에 대한 통계 자료를 조회한다.
LOCK_TABLE_STATS 특정 테이블의 통계를 잠근다.
SET_COLUMN_STATS 특정 테이블의 칼럼에 대한 통계 자료를 변경한다.
SET_INDEX_STATS 특정 인덱스에 대한 통계 자료를 변경한다.
SET_PRIMARY_KEY_STATS 특정 테이블의 PRIMARY KEY INDEX에 대한 통계 자료를 변경한다.
SET_SYSTEM_STATS 데이터베이스 시스템에 대한 통계 자료를 변경한다.
SET_TABLE_STATS 특정 테이블에 대한 통계 자료를 변경한다.
SET_UNIQUE_KEY_STATS 특정 테이블의 UNIQUE KEY INDEX에 대한 통계 자료를 변경한다.
UNLOCK_TABLE_STATS 특정 테이블의 통계 잠금을 해제한다.

SET_PRIMARY_KEY_STATS#

이 프로시저는 PRIMARY KEY INDEX에 대한 통계 자료를 변경한다.

구문#

SET_PRIMARY_KEY_STATS (
  ownname       VARCHAR(128),
  tabname       VARCHAR(128),
  keycount      BIGINT DEFAULT NULL,
  numpage       BIGINT DEFAULT NULL,
  numdist       BIGINT DEFAULT NULL,
  clusteringfactor BIGINT DEFAULT NULL,
  indexheight   BIGINT DEFAULT NULL,
  avgslotcnt    BIGINT DEFAULT NULL,
  no_invalidate BOOLEAN DEFAULT FALSE );

파라미터#

이름 입출력 데이터 타입 설명
ownname IN VARCHAR(128) 인덱스 소유자의 이름
tabname IN VARCHAR(128) 통계자료를 변경할 테이블의 이름
keycount IN BIGINT 인덱스의 레코드 개수
numpage IN BIGINT 인덱스의 페이지 개수
numdist IN BIGINT 인덱스에서 고유한 키의 개수
clusteringfactor IN BIGINT 인덱스에 부합하게 데이터가 정렬되어 있는 정도
indexheight IN BIGINT 인덱스의 루트에서 리프 노드까지의 깊이
avgslotcnt IN BIGINT 인덱스 리프 노드에 저장된 레코드의 평균 개수
no_invalidate IN BOOLEAN 통계 자료가 수집된 인덱스들과 관련된 모든 쿼리들의 실행 계획을 재구축할지 여부.
기본값은 FALSE이며, 실행 계획을 재구축한다. 만약 재구축하지 않으려면, TRUE를 입력한다.

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.

예제#

iSQL> EXEC DBMS_STATS.SET_PRIMARY_KEY_STATS( 'SYS', 'T1', 1, 2, 3, 4, 5, 6, TRUE );
__SYS_IDX_ID_148 c integer;
Execute success.

SET_UNIQUE_KEY_STATS#

이 프로시저는 UNIQUE KEY INDEX에 대한 통계 자료를 변경한다.

구문#

SET_UNIQUE_KEY_STATS (
  ownname       VARCHAR(128),
  tabname       VARCHAR(128),
  colnamelist   VARCHAR(32000),
  keycount      BIGINT DEFAULT NULL,
  numpage       BIGINT DEFAULT NULL,
  numdist       BIGINT DEFAULT NULL,
  clusteringfactor BIGINT DEFAULT NULL,
  indexheight   BIGINT DEFAULT NULL,
  avgslotcnt    BIGINT DEFAULT NULL,
  no_invalidate     BOOLEAN DEFAULT FALSE );

파라미터#

이름 입출력 데이터 타입 설명
ownname IN VARCHAR(128) 인덱스 소유자의 이름
tabname IN VARCHAR(128) 통계 자료를 변경할 테이블의 이름
colnamelist IN VARCHAR(32000) 통계 자료를 변경할 칼럼 이름의 리스트. UNIQUE KEY INDEX를 생성할 때 컬럼에 DESC를 명시한 경우 colnamelist에도 대문자로 명시해야 한다.
keycount IN BIGINT 인덱스의 레코드 개수
numpage IN BIGINT 인덱스의 페이지 개수
numdist IN BIGINT 인덱스에서 고유한 키의 개수
clusteringfactor IN BIGINT 인덱스에 부합하게 데이터가 정렬되어 있는 정도
indexheight IN BIGINT 인덱스의 루트에서 리프 노드까지의 깊이
avgslotcnt IN BIGINT 인덱스 리프 노드에 저장된 레코드의 평균 개수
no_invalidate IN BIGINT 통계 자료가 수집된 인덱스들과 관련된 모든 쿼리들의 실행 계획을 재구축할지 여부. 기본값은 FALSE이며, 실행 계획을 재구축한다. 만약 재구축하지 않으려면, TRUE를 입력한다.

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.

예제#

iSQL> EXEC DBMS_STATS.SET_UNIQUE_KEY_STATS( 'SYS', 'T1', 'C1,C2', 1, 2, 3, 4, 5, 6, TRUE );
__SYS_IDX_ID_149
Execute success.

LOCK_TABLE_STATS#

이 프로시저는 특정 테이블의 통계를 잠근다.

구문#

LOCK_TABLE_STATS (
  ownname VARCHAR(128),
  tabname VARCHAR(128) );

파라미터#

이름 입출력 데이터 타입 설명
ownname IN VARCHAR(128) 테이블 소유자의 이름
tabname IN VARCHAR(128) 통계 자료를 변경할 테이블의 이름

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.

예제#

iSQL> EXEC DBMS_STATS.LOCK_TABLE_STATS( 'SYS', 'T1' );
Execute success.

UNLOCK_TABLE_STATS#

이 프로시저는 특정 테이블의 통계 잠금을 해제한다.

구문#

UNLOCK_TABLE_STATS (
  ownname VARCHAR(128),
  tabname VARCHAR(128) );

파라미터#

이름 입출력 데이터 타입 설명
ownname IN VARCHAR(128) 테이블 소유자의 이름
tabname IN VARCHAR(128) 통계 자료를 변경할 테이블의 이름

결과값#

저장 프로시저이므로 결과값을 반환하지 않는다.

예외#

예외를 발생시키지 않는다.

예제#

iSQL> EXEC DBMS_STATS.UNLOCK_TABLE_STATS( 'SYS', 'T1' );
Execute success.