내용으로 건너뛰기

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. Statspack 옵션을 DB 옵션 그룹에 추가합니다. 옵션 그룹이 없는 경우, 새 옵션 그룹을 만든 다음 해당 옵션 그룹을 DB 인스턴스에 할당합니다.

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

    ALTER USER perfstat IDENTIFIED BY <new_password> ACCOUNT UNLOCK;

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

  4. Oracle Database 12c Release 2(12.2) 이하 버전을 사용하는 경우 이 단계를 건너뛰십시오. Oracle Database 19c 이상을 사용하는 경우, 이 문을 실행하여 PERFSTAT 계정에 CREATE JOB 권한을 부여합니다.

    GRANT CREATE JOB TO PERFSTAT;
  5. Oracle Bug 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 사용자로 로그인한 상태로, 이 명령을 실행하여 Statspack 스냅샷을 수동으로 찍습니다.

    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;
  8. 사용 가능한 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
            :: ::
  9. 2개를 초과하는 Statspack 스냅샷이 만들어진 뒤에는 다음과 비슷한 명령을 실행하여 Statspack 보고서를 만듭니다.

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

    참고: 이 예제 명령은 SNAP_ID 11 및 12를 사용하여 보고서를 만들고, 보고서 이름은 trace/ORCL_spreport _ .lst와 비슷합니다.

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

  11. 저장된 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

AWS 공식업데이트됨 4년 전