

# Amazon RDS for Oracle 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.Oracle"></a>

Amazon RDS 콘솔 또는 API를 사용하여 Oracle 알림 로그, 감사 파일 및 추적 파일에 액세스할 수 있습니다. 파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 단원을 참조하십시오.

제공되는 Oracle 감사 파일은 표준 Oracle 감사 파일입니다. Amazon RDS는 Oracle FGA(세밀한 감사) 기능을 지원합니다. 하지만 로그 액세스는 `SYS.FGA_LOG$` 테이블에 저장되고 `DBA_FGA_AUDIT_TRAIL` 보기를 통해 액세스 가능한 FGA 이벤트에 대한 액세스를 제공하지 않습니다.

DB 인스턴스에 사용 가능한 Oracle 로그 파일을 나열하는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) API 작업에서는 `MaxRecords` 파라미터를 무시하고 최대 1,000개의 레코드를 반환합니다. 호출은 `LastWritten`을(를) 밀리초 단위의 POSIX 날짜로 반환합니다.

**Topics**
+ [보존 일정](#USER_LogAccess.Concepts.Oracle.Retention)
+ [Oracle 추적 파일을 사용한 작업](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)
+ [Amazon CloudWatch Logs에 Oracle 로그 게시](#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [알림 로그 및 Listener 로그에 액세스하기](#USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog)

## 보존 일정
<a name="USER_LogAccess.Concepts.Oracle.Retention"></a>

로그 파일이 매우 커질 경우 Oracle 데이터베이스 엔진이 커진 파일들을 순환시킬 수 있습니다. 감사 또는 추적 파일을 보존하려면 해당 파일을 다운로드해야 합니다. 파일을 로컬에 저장하면 Amazon RDS 스토리지 비용이 절감되고 데이터에 사용할 수 있는 공간이 늘어납니다.

다음 표에서는 Amazon RDS의 Oracle 알림 로그, 감사 파일 및 추적 파일에 대한 보존 일정을 보여줍니다.


****  

| 로그 유형 | 보존 일정 | 
| --- | --- | 
|  알림 로그  |   텍스트 알림 로그는 매일 교체되며 Amazon RDS에서 30일간 보존합니다. XML 알림 로그는 7일 이상 보관됩니다. `ALERTLOG` 보기를 사용하여 이 로그에 액세스할 수 있습니다.  | 
|  감사 파일  |   감사 파일의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 감사 파일을 삭제할 수 있습니다.  | 
|  추적 파일  |  추적 파일의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 추적 파일을 삭제할 수 있습니다.  | 
|  리스너 로그  |   리스너 로그의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 리스너 로그를 삭제할 수 있습니다.  | 

**참고**  
감사 파일과 추적 파일의 보존 구성은 동일합니다.

## Oracle 추적 파일을 사용한 작업
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles"></a>

추적 파일을 만들고 새로 고치고 액세스하고 삭제하기 위한 Amazon RDS 절차의 설명을 확인할 수 있습니다.

**Topics**
+ [파일 나열](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest)
+ [추적 파일 생성 및 세션 추적](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating)
+ [추적 파일 검색](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving)
+ [추적 파일 제거](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging)

### 파일 나열
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest"></a>

`background_dump_dest` 경로 내에 있는 임의의 파일에 대한 액세스를 허용하기 위해 두 절차 중 하나를 사용할 수 있습니다. 첫 번째 절차는 현재 `background_dump_dest`에 있는 모든 파일의 목록을 포함한 보기를 새로 고칩니다.

```
1. EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;
```

보기가 새로 고쳐지면 다음 보기를 쿼리하여 결과에 액세스합니다.

```
1. SELECT * FROM rdsadmin.tracefile_listing;
```

이전 프로세스를 대체하는 프로세스는 `FROM table`을 사용하여 테이블과 같은 형식으로 되어 있는 관계형 데이터가 아닌 데이터를 스트리밍하여 데이터베이스 디렉터리 내용을 나열하는 것입니다.

```
1. SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'));
```

다음 쿼리는 로그 파일의 텍스트를 표시합니다.

```
1. SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));
```

읽기 전용 복제본에서 `V$DATABASE.DB_UNIQUE_NAME`을 쿼리하여 BDUMP 디렉터리의 이름을 가져옵니다. 고유 이름이 `DATABASE_B`인 경우 BDUMP 디렉터리는 `BDUMP_B`입니다. 다음 예제에서는 복제본에서 BDUMP 이름을 쿼리한 다음 이 이름을 사용하여 `alert_DATABASE.log.2020-06-23`의 콘텐츠를 쿼리합니다.

```
1. SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL;
2. 
3. BDUMP_VARIABLE
4. --------------
5. BDUMP_B
6. 
7. SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));
```

### 추적 파일 생성 및 세션 추적
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating"></a>

`ALTER SESSION`에 대한 제한이 없으므로, Oracle에서 추적 파일을 생성하는 다양한 표준 메서드를 Amazon RDS DB 인스턴스에도 그대로 사용할 수 있습니다. 더 높은 액세스 권한이 필요한 추적 파일에 대해서는 다음 프로시저가 제공됩니다.


****  

|  Oracle 메서드  |  Amazon RDS 메서드 | 
| --- | --- | 
|  `oradebug hanganalyze 3 `  |  `EXEC rdsadmin.manage_tracefiles.hanganalyze; `  | 
|  `oradebug dump systemstate 266 `  |  `EXEC rdsadmin.manage_tracefiles.dump_systemstate;`  | 

여러 표준 메서드를 사용하여 Amazon RDS의 Oracle DB 인스턴스에 연결된 개별 세션을 추적할 수 있습니다. 세션 추적 기능을 활성화하기 위해 `DBMS_SESSION` 및 `DBMS_MONITOR` 등 Oracle에서 제공한 PL/SQL 패키지의 하위 프로그램을 실행할 수 있습니다. 자세한 내용은 Oracle 문서의 [세션 추적 기능 활성화](https://docs.oracle.com/database/121/TGSQL/tgsql_trace.htm#GUID-F872D6F9-E015-481F-80F6-8A7036A6AD29) 단원을 참조하십시오.

### 추적 파일 검색
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving"></a>

Amazon RDS에서 관리되는 외부 테이블의 표준 SQL 쿼리를 사용하여 `background_dump_dest`에 있는 추적 파일을 검색할 수 있습니다. 이 메서드를 사용하려면 특정 추적 파일에 대한 이 테이블의 위치를 설정하는 프로시저를 실행해야 합니다.

예를 들어 이전에 언급한 `rdsadmin.tracefile_listing` 보기를 사용하여 시스템 상의 모든 추적 파일을 나열할 수 있습니다. 그러면 다음 프로시저를 사용하여 의도한 추적 파일을 가리키도록 `tracefile_table` 보기를 설정할 수 있습니다.

```
1. EXEC rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');
```

다음 예제에서는 제공된 파일로 위치가 설정된 현재 스키마에서 외부 테이블을 만듭니다. SQL 쿼리를 사용하여 콘텐츠를 로컬 파일로 가져올 수 있습니다.

```
1. SPOOL /tmp/tracefile.txt
2. SELECT * FROM tracefile_table;
3. SPOOL OFF;
```

### 추적 파일 제거
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging"></a>

추적 파일이 누적되면서 디스크 공간을 낭비할 수 있습니다. Amazon RDS는 기본적으로 7일 이상 지난 추적 파일 및 덤프 파일을 제거합니다. `show_configuration` 절차를 사용하여 추적 파일 보존 기간을 보고 설정할 수 있습니다. 구성 결과를 볼 수 있도록 `SET SERVEROUTPUT ON` 명령을 실행해야 합니다.

다음 예제에서는 현재 추적 파일 보존 기간을 표시한 다음, 새 추적 파일 보존 기간을 설정합니다.

```
 1. # Show the current tracefile retention
 2. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
 3. NAME:tracefile retention
 4. VALUE:10080
 5. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
 6. 		
 7. # Set the tracefile retention to 24 hours:
 8. SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440);
 9. SQL> commit;
10. 
11. #show the new tracefile retention
12. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
13. NAME:tracefile retention
14. VALUE:1440
15. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
```

주기적인 제거 프로세스 외에, `background_dump_dest`에서 파일을 수동으로 제거할 수 있습니다. 다음 예제에서는 5분 이상 지난 모든 파일을 제거하는 방법을 보여줍니다.

```
EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);
```

(.trc와 같은 파일 확장명을 포함하지 않고) 특정 패턴과 일치하는 모든 파일을 제거할 수도 있습니다. 다음 예제에서는 "`SCHPOC1_ora_5935`"로 시작하는 모든 파일을 제거하는 방법을 보여줍니다.

```
1. EXEC rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');
```

## Amazon CloudWatch Logs에 Oracle 로그 게시
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs"></a>

Amazon CloudWatch Logs의 로그 그룹에 로그 데이터를 게시하도록 RDS for Oracle DB 인스턴스를 구성할 수 있습니다. CloudWatch Logs를 통해 로그 데이터에 대한 분석을 수행할 수 있고, CloudWatch를 사용하여 경보를 만들고 측정치를 볼 수 있습니다. CloudWatch Logs를 사용하여 내구성이 뛰어난 스토리지에 로그 레코드를 저장할 수 있습니다.

Amazon RDS는 각 Oracle 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어 감사 로그를 포함하도록 내보내기 함수를 구성하면 감사 데이터가 `/aws/rds/instance/my_instance/audit` 로그 그룹의 감사 로그 스트림에 저장됩니다. 다음 표에는 Amazon CloudWatch Logs에 로그를 게시하기 위한 RDS for Oracle의 요구 사항이 요약되어 있습니다.


| 로그 이름 | 요구 사항 | 기본값 | 
| --- | --- | --- | 
|  알림 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 
|  추적 로그  |  `trace_enabled` 파라미터를 `TRUE`로 설정하거나 기본값으로 그대로 두세요.  |  `TRUE`  | 
|  감사 로그  |  `audit_trail` 파라미터를 다음 허용값 중 하나로 설정합니다. <pre>{ none | os | db [, extended] | xml [, extended] }</pre>  |  `none`  | 
|  리스너 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 
|  Oracle Management Agent 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 

이 Oracle Management Agent 로그는 다음 테이블에 나와 있는 로그 그룹으로 구성됩니다.


****  

| 로그 이름 | CloudWatch 로그 그룹 | 
| --- | --- | 
| emctl.log | oemagent-emctl | 
| emdctlj.log | oemagent-emdctlj | 
| gcagent.log | oemagent-gcagent | 
| gcagent\$1errors.log | oemagent-gcagent-errors | 
| emagent.nohup | oemagent-emagent-nohup | 
| secure.log | oemagent-secure | 

자세한 내용은 Oracle 설명서에서 [Management Agent 로그 및 추적 파일 찾기](https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.4/emadm/locating-management-agent-log-and-trace-files1.html#GUID-9C710D78-6AA4-42E4-83CD-47B5FF4892DF)를 참조하세요.

### 콘솔
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.console"></a>

**AWS Management Console에서 Oracle DB 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.CLI"></a>

Oracle 로그를 게시하기 위해 다음 파라미터와 함께 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 명령을 사용하여 Oracle 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
다음 예에서는 CloudWatch Logs 게시가 활성화된 Oracle DB 인스턴스를 생성합니다. `--cloudwatch-logs-export-configuration` 값은 문자열의 JSON 배열입니다. 문자열은 `alert`, `audit`, `listener` 및 `trace`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \
    --db-instance-class db.m5.large \
    --allocated-storage 20 \
    --engine oracle-ee \
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 \
    --license-model bring-your-own-license \
    --master-username myadmin \
    --manage-master-user-password
```
Windows의 경우:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration trace alert audit listener oemagent ^
    --db-instance-class db.m5.large ^
    --allocated-storage 20 ^
    --engine oracle-ee ^
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 ^
    --license-model bring-your-own-license ^
    --master-username myadmin ^
    --manage-master-user-password
```

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 Oracle DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `alert`, `audit`, `listener` 및 `trace`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener","oemagent"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\",\"oemagent\"
```

**Example**  
다음 예에서는 CloudWatch Logs에 감사 및 리스너 로그 파일 게시를 비활성화하도록 기존 Oracle DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `DisableLogTypes`이며, 해당 값은 `alert`, `audit`, `listener` 및 `trace`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"
```

### RDS API
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 Oracle DB 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출하여 Oracle 로그를 게시할 수도 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 RDS 명령에 따라 다른 파라미터가 필요할 수 있습니다.

## 알림 로그 및 Listener 로그에 액세스하기
<a name="USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog"></a>

Amazon RDS 콘솔을 사용하여 알림 로그를 볼 수 있습니다. 다음 SQL 문도 사용할 수 있습니다.

```
1. SELECT message_text FROM alertlog;
```

Amazon CloudWatch Logs를 사용하여 Listener 로그에 액세스하세요.

**참고**  
Oracle은 알림 및 리스너 로그가 Amazon RDS 보기에서 이들 로그를 사용할 수 없게 되는 시점인 10MB를 초과할 때 이들 로그를 순환시킵니다.