AWS/RDS Oracle

[RDS ORACLE] How to manage StatsPack automatically.

learndba 2024. 9. 20. 11:53

 

Statspack을 설정하기 위해서는 여러가지 절차가 필요함.

 

 

1. 우선 PERFSTAT 유저가 있는지 확인한다.

select * from dba_users where username='PERFSTAT';

 

 

2. 없으면 Statspack 옵션이 추가되어 있지 않아서 그런 것이므로 option group에서 설정해주자.

 

 

한 1분정도 이후에 1번에 있는 SQL문을 실행시켜보면 해당 계정이 생성됨을 볼 수 있음.

 

Default tablespace : sysaux

이므로 sysaux tablespace가 점점 커지는 것은 당연한 일임.

 

 

3. 계정 unlock 및 패스워드 변경 , 권한 부여 

alter user PERFSTAT identified by "password" account unlock;
Grant create job to PERFSTAT;

 

 

4. PERFSTAT.STAT$IDLE_EVENT 테이블에 데이터가 들어와있는지 확인

-- 없는 경우 아래와 같이 DML문 수행 필요

Insert Into PERFSTAT.STATS$IDLE_EVENT (EVENT)
Select Name from V$Event_Name Where Wait_Class='IDLE'
Minus
Select Event From PERFSTAT.STATS$IDLE_EVENT;

Commit;

 

 

5. snapshot 생성 및 삭제하는 방법.

-- PERFSTAT 유저로 접속 후 실행

begin
 statspack.snap;
end;
/

begin
  statspack.purge(days);
end;
/

 

-- 자동으로 관리하지 않고, 잠깐 보기 위해서는 이렇게 스냅샷을 생성하면 된다.

 

 

6. 자동으로 snapshot을 관리하기 위한 몇 가지 체크 사항

 1) 어느 정도 주기로 계속 생성할 것인가? (interval) 

 2)  어느 정도 보관을 할 것 인가? (retention)

 3)  job_process_queue 파라미터가 job 자동으로 수행할만한 값을 가졌는가? (0이상이여야 함)

 

다음 수치들을 고려하고 순서에 맞게 따라오면 된다.

 

 

1) snapshot 자동생성 

-- PERFSTAT 유저로 접속 후 실행

Variable jn Number;
 exec dbms_job.sumit(:jn, 'statspack.snap;', SYSDATE, 'TRUNC(SYSDATE + 1.5/24/6,''MI'')');
commit;

 

15분에 한 번씩 생성이 목적이였기 때문에, 시간 단위를 MI를 사용하였음. 

HH24를 사용하게 되면 ora-12012 ora-12005같은 에러를 발생하게됨.

 

수행시간보다 다음 수행시간이 더 적게 나타나기 때문.

select sysdate, trunc(sysdate + 1.5/24/6, 'MI') from dual;
-- sysdate : 2024-09-20 오전 11:32:50
-- trunc(sysdate + 1.5/24/6, 'MI') : 2024-09-20 오전 11:48:00

select sysdate, trunc(sysdate + 1.5/24/6, 'HH24') from dual;
-- sysdate : 2024-09-20 오전 11:34:10
-- trunc(sysdate + 1.5/24/6, 'MI') : 2024-09-20 오전 11:00:00

 

 

2) snapshot 자동 삭제

-- PERFSTAT 유저로 접속 후 실행

Variable jn Number;
 exec dbms_job.sumit(:jn, 'statspack.purge(60);', SYSDATE, 'TRUNC(SYSDATE + 1,''HH24'')');
commit;

 

 

이렇게 하면 기본적으로 statspack으로 snapshot을 관리할 수 있다.

 

 

7. 그 외 알아두면 좋을 것들 

 

1) 날짜 계산하기

 

SYSDATE + 7
-- 일주일에 1번

SYSDATE + 1
-- 하루에 1번

SYSDATE + 1/24
-- 1시간에 1번

SYSDATE + 1/24/60
-- 1분에 1회

SYSDATE + 1/24/4
-- 15분에 1회

 

 

2) failure시에 체크해볼 만한 사항

- alert_$ORACLE_SID.log 확인

- interval수행이 최초 수행보다 적지 않은지 확인하기

- job_process_queue 수치 확인하기 (0보다 큰지 확인)

 

 

3) dbms_job pakcage 안의 프로시저들

- summit  -- job을 등록
- broken   -- job중지 및 실행 (중지 : broken -> true, 실행 : broken -> false)
- change   -- job 속성 변경
- run   -- job 실행
- remove   -- job 삭제

 

 

 

참고)

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.Statspack.html

 

Oracle Statspack - Amazon Relational Database Service

Oracle Statspack Oracle 옵션(STATSPACK)은 Oracle Statspack 성능 통계 기능을 설치하고 활성화합니다. Oracle Statspack은 성능 데이터를 수집, 저장 및 표시하는 SQL, PL/SQL 및 SQL*Plus 스크립트의 모음입니다. Oracle

docs.aws.amazon.com