출처 : http://blog.naver.com/darkturtle/50070269004
B. GATHER_SCHEMA_STATS Procedure
: 스키마 OWNER 의 모든OBJECT 에 대한 통계정보를 수집한다.
전체적으로 GATHER_TABLE_STATS 와 같고 아래 부분이 다르다.
스키마 유저만 지정 하면 GATHER OPTION 이 작동하여 모든 Object 의 정보가 수집 된다.
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percentNUMBER 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 DEFAULTGET_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);
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percentNUMBER 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 DEFAULTGET_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);
Parameter | Description |
Options | 통계정보가 수집될 Object 에 대한 설명 GATHER : 스키마의 모든 Object 에 대해서 수집하라. GATHER AUTO : 필요한 모든 정보를 자동으로 수집하라. GATHER AUTO 시에 설정 가능한 값은 ownname, stattab, statid, objlist, ,statown 만 가능하고 나머지 파라미터는 무시 된다. GATHER STALE : *_tab_modification views 를 통해서 결정된 상태 변경이 많은 테이블만 대상으로 통계정보를 수집한다. GATHER EMPTY : 현재 통계정보가 존재하는 테이블만 대상으로 통계정보를 수집한다. LIST AUTO : GATHER AUTO 옵션으로 진행될 Object list 를 Return 한다. LIST STALE : GATHER STALE 옵션으로 진행될 Object list 를 Return 한다. LIST EMPTY : GATHER EMPTY 옵션으로 진행될 Object list 를 Return 한다. |
Objlist | 통계정보가 상했거나, 없는 Object List |
1. 통계정보가맛간 테이블 리스트 출력
<!--[if !supportLists]--><!--[endif]-->
SQL> setserveroutput on
SQL> declare
mystaleobjs dbms_stats.objecttab;
begin
-- check whether there is any stale objects
dbms_stats.gather_schema_stats(ownname=>'SCOTT', -
options=>'LISTSTALE',objlist=>mystaleobjs);
for i in 1 .. mystaleobjs.count loop
dbms_output.put_line(mystaleobjs(i).objname);
end loop;
end;
/
<!--[if !supportLists]-->2. 자동으로 통계정보수집 시에 대상 테이블 리스트 출력
SQL> setserveroutput on
SQL>declare
mystaleobjs dbms_stats.objecttab;
begin
dbms_stats.gather_schema_stats(ownname=>‘SCOTT’,
options=>'LISTAUTO',objlist=>mystaleobjs);
for i in 1 .. mystaleobjs.count loop
dbms_output.put_line(mystaleobjs(i).objname);
end loop;
end ;
/
PL/SQL proceduresuccessfully completed.
-- 통계정보 생성이 필요한 테이블 리스트업 (DATA 이행등, STALE TABLE LIST 추출)
SELECT *
FROM ALL_TAB_MODIFICATIONS
WHERE TABLE_OWNER IN ( 'SCOTT' )
and INSERTS > 100000 ;
-- 통계정보 생성 스크립트 작성
SELECT 'exec dbms_stats.GATHER_TABLE_STATS(OWNNAME=>'''||table_owner||''',TABNAME=>'''||table_name||''');'
FROM ALL_TAB_MODIFICATIONS
WHERE TABLE_OWNER IN ( 'SCOTT' )
and INSERTS > 100000 ;