[RDS ORACLE] How to manage StatsPack automatically.
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