Oracle 데이터베이스 로그 파일 - Amazon Relational Database Service

Oracle 데이터베이스 로그 파일

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

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

DB 인스턴스에 사용 가능한 Oracle 로그 파일을 나열하는 DescribeDBLogFiles API 작업에서는 MaxRecords 파라미터를 무시하고 최대 1,000개의 레코드를 반환합니다. 호출은 LastWritten을(를) 밀리초 단위의 POSIX 날짜로 반환합니다.

보존 일정

로그 파일이 매우 커질 경우 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 추적 파일을 사용한 작업

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

파일 나열

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

EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;

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

SELECT * FROM rdsadmin.tracefile_listing;

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

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

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

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의 콘텐츠를 쿼리합니다.

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

추적 파일 생성 및 세션 추적

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_SESSIONDBMS_MONITOR 등 Oracle에서 제공한 PL/SQL 패키지의 하위 프로그램을 실행할 수 있습니다. 자세한 내용은 Oracle 문서의 세션 추적 기능 활성화 단원을 참조하십시오.

추적 파일 검색

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

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

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

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

SPOOL /tmp/tracefile.txt SELECT * FROM tracefile_table; SPOOL OFF;

추적 파일 제거

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

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

# Show the current tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:10080 DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted. # Set the tracefile retention to 24 hours: SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440); SQL> commit; #show the new tracefile retention SQL> EXEC rdsadmin.rdsadmin_util.show_configuration; NAME:tracefile retention VALUE:1440 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"로 시작하는 모든 파일을 제거하는 방법을 보여줍니다.

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

Amazon CloudWatch Logs에 Oracle 로그 게시

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 파라미터를 OS, XML 또는 EXTENDED로 설정합니다.

NONE

리스너 로그

없음. 이 로그를 비활성화할 수 없습니다.

활성화됨

Oracle Management Agent 로그

없음. 이 로그를 비활성화할 수 없습니다.

활성화됨

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

로그 이름 CloudWatch 로그 그룹
emctl.log oemagent-emctl
emdctlj.log oemagent-emdctlj
gcagent.log oemagent-gcagent
gcagent_errors.log oemagent-gcagent-errors
emagent.nohup oemagent-emagent-nohup
secure.log oemagent-secure

자세한 내용은 Oracle 설명서에서 Management Agent 로그 및 추적 파일 찾기를 참조하세요.

AWS Management Console에서 Oracle DB 로그를 CloudWatch Logs에 게시하려면
  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

  3. 수정을 선택합니다.

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

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

Oracle 로그를 게시하기 위해 다음 파라미터와 함께 modify-db-instance 명령을 사용할 수 있습니다.

  • --db-instance-identifier

  • --cloudwatch-logs-export-configuration

참고

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

또한 다음 명령을 사용하여 Oracle 로그를 게시할 수 있습니다.

다음 예에서는 CloudWatch Logs 게시가 활성화된 Oracle DB 인스턴스를 생성합니다. --cloudwatch-logs-export-configuration 값은 문자열의 JSON 배열입니다. 문자열은 alert, audit, listenertrace의 조합일 수 있습니다.

Linux, macOS 또는 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 12.1.0.2.v18 \ --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 12.1.0.2.v18 ^ --license-model bring-your-own-license ^ --master-username myadmin ^ --manage-master-user-password

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

Linux, macOS 또는 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\"

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

Linux, macOS 또는 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를 사용하여 Oracle DB 로그를 게시할 수 있습니다. 다음 파라미터로 ModifyDBInstance 작업을 호출할 수 있습니다.

  • DBInstanceIdentifier

  • CloudwatchLogsExportConfiguration

참고

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

또한 다음 RDS API 작업을 호출하여 Oracle 로그를 게시할 수도 있습니다.

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.

  • DBInstanceIdentifier

  • EnableCloudwatchLogsExports

  • Engine

  • DBInstanceClass

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

알림 로그 및 Listener 로그에 액세스하기 위한 이전의 메서드

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

SELECT message_text FROM alertlog;

listenerlog 보기에는 Oracle Database 버전 12.1.0.2 이하 버전에 대한 항목이 포함되어 있습니다. 이러한 데이터베이스 버전에 대한 리스너 로그에 액세스하려면 다음 쿼리를 사용합니다.

SELECT message_text FROM listenerlog;

Oracle Database 버전 12.2.0.1 이상에서는 Amazon CloudWatch Logs을 사용하여 리스너 로그에 액세스합니다.

참고

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