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 |