

# Automatic Workload Repository(AWR)를 사용하여 성능 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.AWR"></a>

Oracle은 성능 데이터 수집과 보고서 생성을 위해 Automatic Workload Repository(AWR)를 사용할 것을 권장합니다. AWR에는 Oracle Database Enterprise Edition과 Diagnostics and Tuning 팩용 라이선스가 필요합니다. AWR을 활성화하려면 `CONTROL_MANAGEMENT_PACK_ACCESS` 초기화 파라미터를 `DIAGNOSTIC` 또는 `DIAGNOSTIC+TUNING`으로 설정합니다.

## RDS에서 AWR 보고서 작업
<a name="Appendix.Oracle.CommonDBATasks.AWRTechniques"></a>

`awrrpt.sql`과 같은 스크립트를 실행하면 AWR 보고서를 생성할 수 있습니다. 이러한 스크립트는 데이터베이스 호스트 서버에 설치됩니다. Amazon RDS에서는 호스트에 직접 액세스할 수 없습니다. 그러나 설치된 다른 Oracle Database에서 SQL 스크립트의 복사본을 가져올 수 있습니다. 

`SYS.DBMS_WORKLOAD_REPOSITORY` PL/SQL 패키지에서 프로시저를 실행하여 AWR을 사용할 수도 있습니다. 이 패키지를 사용하여 기준 요소 및 스냅샷을 관리하고 ASH 및 AWR 보고서를 표시할 수 있습니다. 예를 들어 텍스트 형식으로 AWR 보고서를 생성하려면 `DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT` 프로시저를 실행합니다. 그러나 AWS Management Console에서는 이러한 AWR 보고서에 연결할 수 없습니다.

AWR로 작업할 때 `rdsadmin.rdsadmin_diagnostic_util` 프로시저를 사용하는 것이 좋습니다. 이러한 프로시저를 사용하여 다음을 생성할 수 있습니다.
+ AWR 보고서
+ 활성 세션 기록(ASH) 보고서
+ 자동 데이터베이스 진단 모니터(ADDM) 보고서
+ AWR 데이터의 Oracle Data Pump Export 덤프 파일

`rdsadmin_diagnostic_util` 프로시저는 보고서를 DB 인스턴스 파일 시스템에 저장합니다. 콘솔에서 이러한 보고서에 액세스할 수 있습니다. 또한 `rdsadmin.rds_file_util` 프로시저를 사용하여 보고서에 액세스할 수 있고, S3 통합 옵션을 사용하여 Amazon S3에 복사된 보고서에 액세스할 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 및 [Amazon S3 통합](oracle-s3-integration.md) 섹션을 참조하세요.

다음 Amazon RDS for Oracle DB 엔진 버전에서 `rdsadmin_diagnostic_util` 프로시저를 사용할 수 있습니다.
+ 모든 Oracle Database 21c 버전
+ 19.0.0.0.ru-2020-04.rur-2020-04.r1 이상의 Oracle Database 19c 버전

복제 시나리오에서 진단 보고서를 사용하는 방법을 설명하는 블로그를 보려면 [Amazon RDS for Oracle 읽기 전용 복제본에 대한 AWR 보고서 생성](https://aws.amazon.com/blogs/database/generate-awr-reports-for-amazon-rds-for-oracle-read-replicas/)을 참조하세요.

## 진단 유틸리티 패키지의 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonAWRParam"></a>

`rdsadmin_diagnostic_util` 패키지로 AWR 및 ADDM을 관리할 때는 일반적으로 다음 파라미터를 사용합니다.


| 파라미터 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
| `begin_snap_id` | `NUMBER` | — | 예 | 시작 스냅샷의 ID입니다. | 
| `end_snap_id` | `NUMBER` | — | 예 | 종료 스냅샷의 ID입니다. | 
| `dump_directory` | `VARCHAR2` | `BDUMP` | 아니요 | 보고서를 작성하거나 파일을 내보낼 디렉터리입니다. 기본이 아닌 디렉터리를 지정하는 경우 `rdsadmin_diagnostic_util` 프로시저를 실행하는 사용자에게 디렉터리에 대한 쓰기 권한이 있어야 합니다. | 
| `p_tag` | `VARCHAR2` | — | 아니요 | `incremental` 또는 `daily`와 같이 백업의 목적이나 용도를 나타내기 위해 백업을 구별하는 데 사용할 수 있는 문자열입니다.<br />최대 30자까지 지정할 수 있습니다. 유효한 문자는 `a-z`, `A-Z`, `0-9`, 밑줄(`_`), 대시(`-`), 마침표(`.`)입니다. 태그는 대/소문자를 구분하지 않습니다. RMAN은 태그를 입력할 때 사용된 대/소문자에 관계없이 항상 대문자로 태그를 저장합니다.<br />태그는 고유할 필요가 없으므로 여러 백업이 동일한 태그를 가질 수 있습니다. 태그를 지정하지 않으면 RMAN은 `TAG{{YYYYMMDDTHHMMSS}}` 형식을 사용하여 기본 태그를 자동으로 할당합니다. 여기서 {{YYYY}}는 연도, {{MM}}은 월, {{DD}}는 일, {{HH}}는 시간(24시간 형식), {{MM}}은 분, {{SS}}는 초입니다. 날짜 및 시간은 RMAN이 백업을 시작한 때를 나타냅니다. 예를 들어 기본 태그 `TAG20190927T214517`이 있는 백업은 2019-09-27 21:45:17에 시작된 백업을 나타냅니다.<br />`p_tag` 파라미터는 다음 RDS for Oracle DB 엔진 버전에서 지원됩니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html) | 
| `report_type` | `VARCHAR2` | `HTML` | 아니요 | 보고서의 형식입니다. 유효 값은 `TEXT` 및 `HTML`입니다. | 
| `dbid` | `NUMBER` | — | 아니요 | Oracle에 대한 `DBA_HIST_DATABASE_INSTANCE` 보기에 표시되는 유효한 데이터베이스 식별자(DBID)입니다. 이 파라미터를 지정하지 않으면 RDS가 `V$DATABASE.DBID` 보기에 표시된 현재 DBID를 사용합니다.  | 

rdsadmin\_diagnostic\_util 패키지로 ASH를 관리할 때는 일반적으로 다음 파라미터를 사용합니다.


| 파라미터 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
| `begin_time` | `DATE` | — | 예 | ASH 분석의 시작 시간입니다. | 
| `end_time` | `DATE` | — | 예 | ASH 분석의 종료 시간입니다. | 
| `slot_width` | `NUMBER` | `0` | 아니요 | ASH 보고서의 “Top Activity” 섹션에 사용되는 슬롯의 지속 시간(초)입니다. 이 파라미터를 지정하지 않으면 `begin_time`과 `end_time` 사이의 시간 간격이 10개 이하의 슬롯을 사용합니다. | 
| `sid` | `NUMBER` | Null | 아니요 | 세션 ID입니다. | 
| `sql_id` | `VARCHAR2` | Null | 아니요 | SQL ID입니다. | 
| `wait_class` | `VARCHAR2` | Null | 아니요 | 대기 클래스 이름입니다. | 
| `service_hash` | `NUMBER` | Null | 아니요 | 서비스 이름 해시입니다. | 
| `module_name` | `VARCHAR2` | Null | 아니요 | 모듈 이름입니다. | 
| `action_name` | `VARCHAR2` | Null | 아니요 | 작업 이름입니다. | 
| `client_id` | `VARCHAR2` | Null | 아니요 | 데이터베이스 세션의 애플리케이션별 ID입니다. | 
| `plsql_entry` | `VARCHAR2` | Null | 아니요 | PL/SQL 진입점입니다. | 

## AWR 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.GenAWRReport"></a>

AWR 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 AWR 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `awrrpt_101_106.txt`입니다. AWS Management Console에서 이 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');
```

다음 예에서는 스냅샷 범위 63–65에 대한 HTML 보고서를 생성합니다. 출력 HTML 파일의 이름은 `awrrpt_63_65.html`입니다. 이 프로시저는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 보고서를 작성합니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');
```

## AWR 데이터를 덤프 파일로 추출
<a name="Appendix.Oracle.CommonDBATasks.ExtractAWR"></a>

AWR 데이터를 덤프 파일로 추출하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_extract` 프로시저를 사용합니다. 이 함수는 PDB 수준에서만 사용할 수 있습니다.

다음 예에서는 스냅샷 범위 101–106을 추출합니다. 출력 덤프 파일의 이름은 `awrextract_101_106.dmp`입니다. 콘솔을 통해 이 파일에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);
```

다음 예에서는 스냅샷 범위 63–65를 추출합니다. 출력 덤프 파일의 이름은 `awrextract_63_65.dmp`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');
```

## ADDM 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ADDM"></a>

ADDM 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.addm_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_101_106.txt`입니다. 콘솔을 통해 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);
```

다음 예에서는 스냅샷 범위 63–65에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_63_65.txt`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `ADDM_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');
```

## ASH 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ASH"></a>

ASH 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.ash_report` 프로시저를 사용합니다.

다음 예에서는 14분 전부터 현재 시간까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 파일의 이름은 `ashrpt{{begin_time}}{{end_time}}.txt` 형식을 사용하며, 여기서 `{{begin_time}}` 및 `{{end_time}}`은 `YYYYMMDDHH24MISS` 형식을 사용합니다. 콘솔을 통해 파일에 액세스할 수 있습니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>     SYSDATE-14/1440,
        end_time       =>     SYSDATE,
        report_type    =>     'TEXT');
END;
/
```

다음 예에서는 2019년 11월 18일 오후 6시 7분부터 2019년 11월 18일 오후 6시 15분까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 HTML 보고서의 이름은 `ashrpt_20190918180700_20190918181500.html`입니다. 보고서는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>    TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'),
        end_time       =>    TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'),
        report_type    =>    'html',
        dump_directory =>    'AWR_RPT_DUMP');
END;
/
```

## 콘솔 또는 CLI에서 AWR 보고서 액세스
<a name="Appendix.Oracle.CommonDBATasks.AWRConsole"></a>

AWS Management Console 또는 AWS CLI를 사용하여 AWR 보고서에 액세스하거나 덤프 파일을 내보낼 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.