Oracle을 실행하는 Amazon RDS DB 인스턴스의 성능 통계를 확인하려면 어떻게 해야 하나요?

3분 분량
0

Oracle을 실행하는 Amazon Relational Database Service(RDS) 인스턴스의 성능을 분석하고 조정하고 싶습니다. Oracle을 실행하는 Amazon RDS 인스턴스의 성능 통계를 확인하려면 어떻게 해야 하나요?

간략한 설명

Amazon RDS DB 인스턴스에서 Oracle Statspack을 사용하여 성능 데이터를 수집, 저장 및 표시할 수 있습니다. Statspack은 Statspack 스냅샷을 기반으로 보고서를 생성하며, 이를 사용하여 일정 기간 동안 DB 인스턴스의 성능을 분석할 수 있습니다. 자세한 내용은 Oracle Statspack에 대한 Oracle 설명서를 참조하세요.

해결 방법

Amazon RDS에서 Oracle Statspack 사용

1.    Statspack이 설치되어 있고 PERFSTAT 계정이 Statspack과 연결되어 있는 경우 3단계로 건너뜁니다. Statspack이 설치되어 있지 않고 PERFSTAT 계정이 존재하는 경우, 이 명령을 실행하여 계정을 삭제합니다.

SQL> DROP USER perfstat CASCADE;

2.    DB 옵션 그룹에 Statspack 옵션을 추가합니다. 옵션 그룹이 없는 경우 새 옵션 그룹을 생성한 다음 옵션 그룹을 DB 인스턴스에 할당합니다.

3.    Statspack 옵션을 추가하면 Oracle을 실행하는 Amazon RDS 인스턴스가 자동으로 Statspack을 설치합니다. 그러면 데이터베이스 통계를 수집하고 보고서를 생성할 수 있는 perfstat 사용자가 생성됩니다. 그러나 perfstat 사용자는 기본적으로 잠겨 있습니다. perfstat 사용자의 잠금을 해제하려면 Amazon RDS 기본 사용자로 DB 인스턴스에 로그인한 다음 다음과 유사한 쿼리를 실행하여 perfstat 사용자의 비밀번호를 재설정합니다.

ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;

참고: new_password를 자신의 비밀번호로 바꾸어야 합니다.

4.    Oracle Database 12c 릴리스 2(12.2) 이하를 사용하는 경우 이 단계를 건너뜁니다. Oracle Database 19c 이상을 사용하는 경우, 이 문을 실행하여 PERFSTAT 계정에 CREATE JOB 권한을 부여합니다.

GRANT CREATE JOB TO PERFSTAT;

5.    Oracle 버그 28523746으로 인해 PERFSTAT.STATS$IDLE_EVENT의 유휴 대기 이벤트가 채워지지 않을 수 있습니다. PERFSTAT.STATS$IDLE_EVENT 테이블의 유휴 대기 이벤트가 채워지는지 확인하려면 이 문을 실행합니다.

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;

6.    perfstat 사용자로 로그인한 상태에서 이 명령을 실행하여 수동으로 스탯스팩 스냅샷을 생성합니다.

SQL> exec statspack.snap (i_snap_level => 7, i_modify_parameter => 'TRUE');

참고: Statspack 스냅샷 캡처 수준을 변경하여 더 자세한 정보를 얻을 수도 있습니다. 이 예제 명령은 SQL에 대한 사용량, 행 잠금 및 세그먼트 수준 I/O 통계를 포함하는 레벨 7의 Statspack 스냅샷을 생성합니다.

7.    선택 사항으로, Statspack 스냅샷을 자동으로 생성하도록 Oracle을 구성합니다. 이 절차는 시간당 하나의 Statspack 스냅샷을 자동으로 생성하는 작업을 생성합니다.

SQL> set serveroutput on
SQL> variable jn number;
SQL> execute dbms_job.submit (:jn, 'statspack.snap;', sysdate, 'trunc(SYSDATE+1/24,''HH24'')');
SQL> execute dbms_output.put_line ('statspack job number:' || :jn);
SQL> commit;

6.    사용 가능한 Statspack 스냅샷을 확인하려면 이 명령을 실행합니다.

SQL> set linesize 32767;
SQL> alter session set nls_date_format = 'YYYY/MM/DD HH24:MI:SS';
SQL> select snap_id, snap_time from stats$snapshot order by 1;
    SNAP_ID SNAP_TIME
---------- -------------------
        :: ::
        11 2019/06/03 03:18:30
        12 2019/06/03 04:18:30
        :: ::

7.    두 개 이상의 Statspack 스냅샷이 생성된 후에는 다음과 유사한 명령을 실행하여 Statspack 보고서를 생성합니다.

SQL> exec RDSADMIN.RDS_RUN_SPREPORT (11,12);

참고: 이 예제 명령은 SNAP_ID 11 및 12를 사용하여 보고서를 생성하며, 보고서 이름은 trace/ORCL_spreport와 유사합니다.

_

.lst.

8.    보고서를 보고 다운로드하려면 Amazon RDS 콘솔을 연 다음 탐색 창에서 데이터베이스를 선택합니다. DB 인스턴스를 선택한 다음 로그 및 이벤트 탭을 선택합니다.

9.    저장된 Statspack 스냅샷은 자동으로 삭제되지 않으므로 DB 인스턴스의 저장 공간을 소모할 수 있습니다. Statspack 스냅샷을 수동으로 제거하려면 이와 유사하게 시작 SNAP_ID 및 끝 SNAP_ID를 지정합니다.

SQL> execute statspack.purge(<INITIAL_SNAP_ID>, <END_SNAP_ID>);

Amazon RDS에서 Oracle Statspack 사용 중지

1.    스냅샷 자동 생성을 중지하려면 생성한 작업을 삭제합니다. 작업 번호를 얻으려면 다음 명령을 실행합니다.

SQL> select job, what FROM user_jobs;

2.    작업을 삭제하려면 다음 명령을 실행합니다.

SQL> execute dbms_job.remove (<job_id>);

참고: job_id을 자신의 작업 ID로 바꾸어야 합니다.

](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html#USER_WorkingWithOptionGroups.RemoveOption)DB 옵션 그룹에서 Statspack 옵션을 제거[하면 perfstat 사용자 및 저장된 모든 Statspack 스냅샷이 제거됩니다.


관련 정보

Oracle Statspack