Oracle 11g에서는 "Preference"라는 새로운 개념을 통해
다음과 같이 훨씬 직관적이고 깔끔한 방법을 쓸 수 있다.
원하는 테이블에 대해 통계정보 수행시 CASCADE, DEGREE,
ESTIMATE_PERCENT, METHOD_OPT, NO_INVALIDATE,
GRANULARITY, PUBLISH, INCREMENTAL, STALE_PERCENT
등 개별로 설정하여 좀더 편리성을 제공 해 주고 있다.
-- 특정 테이블에 대한 설정 ( new 11g )
Syntax
DBMS_STATS.SET_TABLE_PREFS (
ownname IN VARCHAR2,
tabname IN VARCHAR2,
pname IN VARCHAR2,
pvalue IN VARCHAR2 );
pname Parameters
Preference name. The default value for following preferences can be set:
CASCADE, DEGREE, ESTIMATE_PERCENT, METHOD_OPT, NO_INVALIDATE, GRANULARITY, PUBLISH, INCREMENTAL, STALE_PERCENT
-- 아래와 같이 한번만 설정
EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'SHWOO_T1', 'ESTIMATE_PERCENT', '30');
EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'SHWOO_T1', 'DEGREE', '10');
EXEC DBMS_STATS.SET_TABLE_PREFS(USER,'SHWOO_T1','METHOD_OPT', 'FOR ALL INDEXED COLUMNS SIZE AUTO');
-- 개별 통계정보 설정 내용확인. ( new 11g )
Syntax
DBMS_STATS.GET_PREFS (
pname IN VARCHAR2,
ownname IN VARCHAR2 DEFAULT NULL, tabname IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
SELECT DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT' , USER, 'SHWOO_T1') FROM DUAL;
SELECT DBMS_STATS.GET_PREFS('DEGREE' , USER, 'SHWOO_T1') FROM DUAL;
SELECT DBMS_STATS.GET_PREFS('METHOD_OPT' , USER, 'SHWOO_T1') FROM DUAL;
SELECT DBMS_STATS.GET_PREFS('GRANULARITY' , USER, 'SHWOO_T1') FROM DUAL;
-- 전체 현재 통계정보 설정 내용확인.
Syntax
DBMS_STATS.GET_PARAM (
pname IN VARCHAR2)
RETURN VARCHAR2;
SELECT DBMS_STATS.GET_PARAM('DEGREE') FROM DUAL;
SELECT DBMS_STATS.GET_PARAM('METHOD_OPT') FROM DUAL;
SELECT DBMS_STATS.GET_PARAM('GRANULARITY') FROM DUAL;
SELECT DBMS_STATS.GET_PARAM('ESTIMATE_PERCENT') FROM DUAL;
SELECT DBMS_STATS.GET_PARAM('CASCADE') FROM DUAL;
SELECT DBMS_STATS.GET_PARAM('NO_INVALIDATE') FROM DUAL;
-- Schema 또는 TABLE 레벨에서 통계 정보 수집
Syntax
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percent NUMBER DEFAULT to_estimate_percent_type (get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE,
obj_filter_list ObjectTab DEFAULT NULL);
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percent NUMBER DEFAULT to_estimate_percent_type (get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE'),
force BOOLEAN DEFAULT FALSE,
obj_filter_list ObjectTab DEFAULT NULL);
Syntax
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type (get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'), -- or 'FOR ALL COLUMNS SIZE 1',
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
EX Syntax )
EXEC DBMS_STATS.GATHER_TABLE_STATS ( ownname => 'SHWOO', tabname => 'SHWOO_T1', -
estimate_percent=> 100, granularity=>'ALL', degree=> 4 , cascade=>true );
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER); -- USER : 수행하는 기본 DEFAULT 유저
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'SHWOO_T1');
아래 참고 사이트에서 더 많은 DBMS_STATS 에 대한 New 11g 를 확인 할 수 있다.
참고사이트 : http://psoug.org/reference/dbms_stats.html
http://ukja.tistory.com/86
댓글 없음:
댓글 쓰기