시스템 통계 수집(gathering system statististics)
■ 개요
시스템 통계 수집은 정기적으로 이루어져야 한다.
시스템 통계 수집은 기존 실행계획을 무효화하지 않는다.
■ 프로시저
dbms_stats.gather_system_stats: 시스템 통계 수집
dbms_stats.set_system_stats: 명시적으로 직접 설정
dbms_stats.get_system_stats: 시스템 통계 정보를 확인
gathering_mode:
- noworkload | interval
- start | stop
noworkload: 기본값, 몇분 정도 걸릴 수 있고 DB크기에 따라 다르다.
DB와 테이블스페이스 생성 후 gather_system_stats('noworkload')를 실행할 것을 권장한다.
interval: 지정된 간격동안 시스템 작업을 캡쳐한다.
start | stop: 시작 정지를 지정할 수 있다. 예를 들어 시작 후 작업을 걸고 stop하여 정확한 통계를 수집할 수 있다.
※10gR2부터는 시작 시 시스템 통계 필수 부분이 자동으로 수집된다
■ 시스템 통계 수집 예제1
exec dbms_stats.gather_system_stats(interval => 120, stattab => 'mystats',statid => 'OLTP'); --첫째날 낮
exec dbms_stats.gather_system_stats(interval => 120, stattab => 'mystats',statid => 'BATCH'); --첫째날 밤
exec dbms_stats.import_system_stats(stattab='mystats',statid='OLTP'); --낮에는 이 통계를 사용하도록 dictionary에 import
exec dbms_stats.import_system_stats(stattab='mystats',statid='DW'); --밤에는 이 통계를 사용하도록 dictionary에 import
※위 작업 전에 먼저 통계용 테이블을 dbms_stats.create_stat_table 을 통해 만들어야 한다.
■ 시스템 통계 수집 예제2
exec dbms_stats.gather_system_stats(gathering_mode => 'start');
workload 수행
exec dbms_stats.gather_system_stats(gathering_mode => 'stop');
위 예제는 해당 워크로드가 수행될 때의 시스템 통계를 수집하는 것이 목적이다.