Statspack 

: Database에 대한 부하 및 resource 사용량의 trend 분석이나 성능 문제 분석을 위하여 사용되는 tool
perfstat 사용자가 생성되고 perfstat에 성능 관련 정보 저장

- Standard Edition : statspack 설치 필요
- Enterprise Edition : statspack 설치할 필요 X
  -- AWR (Automatic Workload Repository)

    : Enterprise Edition은 AWR이 파티셔닝 기능과 성능 수집하여 스냅샷으로 만들어 일정기간 보관 자동으로 이루어짐

      (스냅샷 보관 주기 8일)

 

 

SYSAUX Tablespace

: 오라클 10g 버전부터 나온 테이블스페이스, 기존의 시스템 테이블스페이스에서 저장되고 관리되어 오던 여러 요소들 가운데 일부 또는 별도의 테이블스페이스의 생성을 요구하는 이들 요소를 한 곳에 저장, 관리하는 기능을 제공

Statspack 패키지, 정보 저장 공간 (PERFSTAT 유저 생성)


statspack 설치

(sqlplus로 sys로 로그인하여 설치)

 

1. job_queue_processes  확인

스냅샷이 언제 돌아가는지 확인

- value(값)가 0 이면 수행되고 있는 job가 없는 것

select * from v$parameter
where name like '%job%'

- value가 이미 있으면 job이 돌아가고 있다는 것을 확인 (→ statspack 설치 X)

 

value 가 있으면 현재 수행되고 있는 job을 확인

select * from dba_jobs

 

job 딕셔너리 확인

select * from dict
where table_name like '%SCHEDULE%'

 

확인된 job 딕셔너리

DBA_SCHEDULER_JOBS

 


2. 기설치 확인

select * from dba_users
where username = 'PERFSTAT'

조회했을 경우 PERFSTAT 유저가 있다면 statspack가 설치가 된 것


3. 설치할 Tablespace 확인   

-- SYSAUX 테이블 스페이스 (SYSAUX에 statspack 설치)
테이블스페이스 별 freespace 확인

SELECT A.TABLESPACE_NAME
     , SUM(A.BYTES)/(1024*1024) AS "Total(MB)"
     , trunc((SUM(A.BYTES)/(1024*1024))-NVL(SUM(SZ_MB),0), 2) AS "USED(MB)"
     , trunc(NVL(SUM(SZ_MB),0), 2) AS "FREE(MB)"
     , trunc(NVL(( 1. - SUM(SZ_MB)/(SUM(A.BYTES)/(1024*1024)) ) * 100,100),2) AS "USAGE(%)"
  FROM DBA_DATA_FILES A
     , (SELECT FILE_ID, SUM(BYTES)/(1024*1024) AS SZ_MB
          FROM DBA_FREE_SPACE
         GROUP BY FILE_ID ) B
 WHERE A.FILE_ID = B.FILE_ID (+)
   AND A.TABLESPACE_NAME NOT in (select tablespace_name from dba_tablespaces where contents = 'UNDO')
 GROUP BY A.TABLESPACE_NAME
 ORDER BY 5 DESC

 


4. statspack 설치

ORACLE_HOME 확인
- Windows 확인 방법
 제어판 > 모든 제어판 항목 > 시스템 > 고급 시스템 설정 > 환경변수 확인 (ORACLE_HOME 확인) 후 접속하여 다음 실

- Linux 확인 방법

.bash_profile 에서 ORACLE_HOME 확인

 

ORACLE_HOME 접속 후 sys로 sql 접속 (sqlplus / as sysdba)

 

인스턴스 확인

select instance_name from v$instance;

 

@spcreate.sql 수행해서 설치 (sys 접속)

SQL> @spcreate.sql
Enter value for perfstat_password: perfstat
Enter value for default_tablespace: [perfstat 용 테이블스페이스 입력, 엔터시 default 테이블스페이스로 지정]
Enter value for temporary_tablespace: [perfstat 용 템프 테이블스페이스 입력 , 엔터시 default 템프 테이블스페이스로 지정]

 


5. job 등록

perfstat 계정으로 접속해서 @spauto.sql 로 디폴트 1시간마다 수집하는 job 등록

하루치 레포트 출력 필요

spauto.sql : 배치 스크립트 (1시간마다 작동이 기본)

 

현재 job 권한이 없을 경우 sys로 로그인 후 권한 부여

계정 권한 확인

 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'PERFSTAT'

Job 생성 권한이 없음

 

Sys로 접속 후  job 권한 부여

 grant create any job to PERFSTAT;

 

perfstat로 접속 후 @spauto.sql 실행

 

 

 

 

6. dba_jobs 에서 등록된 job 확인

 -- job 확인
 select * from dba_jobs

 

 

7.  수동 스냅샷 찍는 법

begin
 statspack.snap;
end;
/

 


8. 스냅샷 확인 

스냅샷이 언제 찍혔는지 확인

 select * from STATS$SNAPSHOT
 order by snap_time desc  --snap_time 기준으로 출력

 

'DB ORACLE 공부 기록' 카테고리의 다른 글

Client Tool에서 GUI 실행  (0) 2022.08.17
Statspack 삭제  (0) 2022.07.01
데이터베이스 STARTUP  (0) 2022.06.24
Data Block, Extent, Segment, Tablespace  (0) 2022.05.27
ORACLE SCN, CKPT(Checkpoint)  (0) 2022.05.26

+ Recent posts