Oracle Statspack - Amazon Relational Database Service

Oracle Statspack

Oracle 옵션(STATSPACK)은 Oracle Statspack 성능 통계 기능을 설치하고 활성화합니다. Oracle Statspack은 성능 데이터를 수집, 저장 및 표시하는 SQL, PL/SQL 및 SQL*Plus 스크립트의 모음입니다. Oracle Statspack 사용에 대한 자세한 정보는 Oracle 설명서의 Oracle Statspack 단원을 참조하십시오.

참고

Oracle Statspack은 Oracle에서 더 이상 지원되지 않으며 어드밴스 Automatic Workload Repository(AWR)로 대체되었습니다. AWR은 Diagnostics Pack을 구입한 Oracle Enterprise Edition 고객만 사용할 수 있습니다. Amazon RDS의 Oracle DB 엔진과 함께 Oracle Statspack을 사용할 수 있습니다. Amazon RDS 읽기 전용 복제본에서는 Oracle Statspack을 실행할 수 없습니다.

Oracle Statspack 설정

Statspack 스크립트를 실행하려면 Statspack 옵션을 추가해야 합니다.

Oracle Statspack을 설정하려면
  1. SQL 클라이언트에서 관리 계정으로 Oracle DB에 로그인합니다.

  2. Statspack이 설치되어 있는지 여부에 따라 다음 작업 중 하나를 수행합니다.

    • Statspack이 설치되어 있고 PERFSTAT 계정이 Statspack과 연결된 경우 4단계로 건너뜁니다.

    • Statspack이 설치되어 있지 않고 PERFSTAT 계정이 있는 경우 다음과 같이 계정을 삭제합니다.

      DROP USER PERFSTAT CASCADE;

      그렇지 않으면 Statspack 옵션을 추가하려고 하면 오류와 RDS-Event-0058이 생성됩니다.

  3. Statspack 옵션을 옵션 그룹에 추가합니다. 옵션 그룹에 옵션 추가 단원을 참조하십시오.

    Amazon RDS는 자동으로 DB 인스턴스에 Statspack 스크립트를 설치한 다음 PERFSTAT 계정을 설정합니다.

  4. 다음 SQL 문을 사용하여 암호를 재설정하고 pwd를 새 암호로 바꿉니다.

    ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;

    PERFSTAT 사용자 계정을 사용하여 로그인하고 Statspack 스크립트를 실행할 수 있습니다.

  5. 다음 명령문을 사용하여 CREATE JOB 권한을 PERFSTAT 계정에 부여합니다.

    GRANT CREATE JOB TO PERFSTAT;
  6. PERFSTAT.STATS$IDLE_EVENT 테이블의 유휴 대기 이벤트가 채워져 있는지 확인합니다.

    Oracle 버그 28523746 때문에 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;

Statspack 보고서 생성

Statspack 보고서는 두 개의 스냅샷을 비교합니다.

Statspack 보고서를 생성하려면
  1. SQL 클라이언트에서 PERFSTAT 계정으로 Oracle DB에 로그인합니다.

  2. 다음 방법 중 하나를 사용하여 스냅샷을 생성합니다.

    • Statspack 스냅샷을 수동으로 생성합니다.

    • 지정된 시간 간격 후에 Statspack 스냅샷을 만드는 작업을 생성합니다. 예를 들어, 다음 작업은 Statspack 스냅샷을 1시간마다 생성합니다.

      VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
  3. 다음 쿼리를 사용하여 스냅샷을 봅니다.

    SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
  4. Amazon RDS 프로시저 rdsadmin.rds_run_spreport를 실행하여 begin_snapend_snap을 스냅샷 ID로 바꿉니다.

    exec rdsadmin.rds_run_spreport(begin_snap,end_snap);

    예를 들어, 다음 명령은 Statspack 스냅샷 1과 2 사이의 간격을 기반으로 보고서를 생성합니다.

    exec rdsadmin.rds_run_spreport(1,2);

    Statspack 보고서의 파일 이름에는 두 스냅샷의 번호가 포함됩니다. 예를 들어, Statspack 스냅샷 1과 2를 사용하여 생성한 보고서 파일의 이름은 ORCL_spreport_1_2.lst가 됩니다.

  5. 출력을 모니터링하여 오류가 있는지 확인합니다.

    Oracle Statspack은 보고서를 실행하기 전에 검사를 수행합니다. 따라서 명령 출력에 오류 메시지가 표시될 수도 있습니다. 예를 들어 Statspack 스냅샷 시작 값이 종료 값보다 큰 잘못된 범위를 기반으로 보고서를 생성하려고 할 수 있습니다. 이 경우 출력에 오류 메시지가 표시되지만 DB 엔진은 오류 파일을 생성하지 않습니다.

    exec rdsadmin.rds_run_spreport(2,1); * ERROR at line 1: ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.

    Statspack 스냅샷에 잘못된 숫자를 사용하는 경우 출력에 오류가 표시됩니다. 예를 들어 스냅샷 1과 50에 대한 보고서를 생성하려고 하지만 스냅샷 50이 없는 경우 출력에 오류가 표시됩니다.

    exec rdsadmin.rds_run_spreport(1,50); * ERROR at line 1: ORA-20000: Could not find both snapshot IDs
  6. (선택 사항)

    보고서를 검색하려면 Oracle 추적 파일을 사용한 작업의 설명과 같이 추적 파일 프로시저를 호출합니다.

    또는 RDS 콘솔에서 Statspack 보고서를 다운로드합니다. DB 인스턴스 세부 정보의 로그 섹션으로 이동하여 다운로드를 선택합니다. 다음 예제는 trace/ORCL_spreport_1_2.lst를 보여줍니다.

    RDS 콘솔에서 Oracle 로그 파일 목록을 표시합니다. trace/ORCL_spreport_1_2.lst 추적 파일은 동그라미로 표시됩니다.

    보고서를 생성하는 동안 오류가 발생하면 DB 엔진은 보고서와 동일한 명명 규칙을 사용하지만, .err이라는 확장명을 지정합니다. 예를 들어, Statspack 스냅샷 1과 7을 사용하여 보고서를 생성하는 동안 오류가 발생한 경우 보고서 파일의 이름은 ORCL_spreport_1_7.err이 됩니다. 표준 스냅샷 보고서와 동일한 기법을 사용하여 오류 보고서를 다운로드할 수 있습니다.

Statspack 스냅샷 제거

여러 Oracle Statspack 스냅샷을 제거하려면 다음 명령을 사용합니다.

exec statspack.purge(begin snap, end snap);