1. 개요
Oracle 데이터베이스는 8.1.6 버전부터 기본적으로 Statspack이라는 데이터 수집, 보고 툴을 제공한다. Statspack은 기존의 Bstat/Estat에 비해 수집된 진단 자료가 영구 테이블에 저장되어 있다는 점에서 보다 우수하다.
이 자료는 Oracle 데이터베이스 8 기준이다.
2. 설치
- dba 권한을 가진 계정
- $ORACLE_HOME/rdbms/admin/spcreate.sql 실행
- DIsk I/O를 고려하여 설치 대상 Tablespace와 임시 Tablespace 결정
- perfstat 계정 패스워드는 변경 권고
- timed_statistics = true로 설정되어야 함
성능 수집에 대한 보다 자세한 내용은 $ORACLE_HOME/rdbms/admin/spdoc.txt을 확인.
3. statspack.snap 프로시저 수행
다음은 10분마다 statspack.snap 프로시저를 통해 정보를 수집하는 shell script이다. (perfstat 패스워드는 tiger로 수정하였다)
#!/bin/sh sqlplus -s internal << EOF alter system set timed_statistics=true; quit EOF while true do sqlplus -s perfstat/tiger << EOF execute statspack.snap; quit EOF sleep 600 done
4. 보고서 생성
해당 기간의 snap_id를 확인한 후 $ORACLE_HOME/rdbms/admin/spreport.sql를 실행한다. 보고서가 발행되면 WARNING, ERROR가 없는지 확인해 보자.
다음 SQL은 날짜별로 snap_id의 min/max 및 시간을 확인한다.
select instance_number , to_char(snap_time,'yyyy/mm/dd') "DATE" , min(snap_id) , max(snap_id) , to_char(min(snap_time),'hh24:mi:ss') min_time , to_char(max(snap_time),'hh24:mi:ss') max_time , to_char(startup_time, 'mm/dd hh24:mi') startup from stats$snapshot group by instance_number, to_char(snap_time,'yyyy/mm/dd'), startup_time