

# Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack"></a>

Oracle 옵션(STATSPACK)은 Oracle Statspack 성능 통계 기능을 설치하고 활성화합니다. Oracle Statspack은 성능 데이터를 수집, 저장 및 표시하는 SQL, PL/SQL 및 SQL\$1Plus 스크립트의 모음입니다. Oracle Statspack 사용에 대한 자세한 정보는 Oracle 설명서의 [Oracle Statspack](http://docs.oracle.com/cd/E13160_01/wli/docs10gr3/dbtuning/statsApdx.html) 단원을 참조하십시오.

**참고**  
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 설정
<a name="Appendix.Oracle.Options.Statspack.setting-up"></a>

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

**Oracle Statspack을 설정하려면**

1. SQL 클라이언트에서 관리 계정으로 Oracle DB에 로그인합니다.

1. Statspack이 설치되어 있는지 여부에 따라 다음 작업 중 하나를 수행합니다.
   + Statspack이 설치되어 있고 `PERFSTAT` 계정이 Statspack과 연결된 경우 4단계로 건너뜁니다.
   + Statspack이 설치되어 있지 않고 `PERFSTAT` 계정이 있는 경우 다음과 같이 계정을 삭제합니다.

     ```
     DROP USER PERFSTAT CASCADE;
     ```

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

1. Statspack 옵션을 옵션 그룹에 추가합니다. [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 단원을 참조하십시오.

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

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

   ```
   ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;
   ```

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

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

   ```
   GRANT CREATE JOB TO PERFSTAT;
   ```

1. `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 보고서 생성
<a name="Appendix.Oracle.Options.Statspack.generating-reports"></a>

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

**Statspack 보고서를 생성하려면**

1. SQL 클라이언트에서 `PERFSTAT` 계정으로 Oracle DB에 로그인합니다.

1. 다음 방법 중 하나를 사용하여 스냅샷을 생성합니다.
   + Statspack 스냅샷을 수동으로 생성합니다.
   + 지정된 시간 간격 후에 Statspack 스냅샷을 만드는 작업을 생성합니다. 예를 들어, 다음 작업은 Statspack 스냅샷을 1시간마다 생성합니다.

     ```
     VARIABLE jn NUMBER;
     exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')');
     COMMIT;
     ```

1. 다음 쿼리를 사용하여 스냅샷을 봅니다.

   ```
   SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
   ```

1. Amazon RDS 프로시저 `rdsadmin.rds_run_spreport`를 실행하여 *begin\$1snap* 및 *end\$1snap을* 스냅샷 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`가 됩니다.

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

   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
   ```

1. (선택 사항) 

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

   또는 RDS 콘솔에서 Statspack 보고서를 다운로드합니다. DB 인스턴스 세부 정보의 **로그** 섹션으로 이동하여 **다운로드**를 선택합니다. 다음 예제는 `trace/ORCL_spreport_1_2.lst`를 보여줍니다.  
![\[RDS 콘솔에서 Oracle 로그 파일 목록을 표시합니다. trace/ORCL_spreport_1_2.lst 추적 파일은 동그라미로 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/statspack1.png)

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

## Statspack 스냅샷 제거
<a name="Appendix.Oracle.Options.Statspack.removing-files"></a>

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

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