메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

Oracle DB 인스턴스에 대한 공통 DBA 로그 작업

이 단원에서는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 로깅과 관련된 공통 DBA 작업을 수행하는 방법에 대해 살펴보겠습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

자세한 내용은 Oracle 데이터베이스 로그 파일 단원을 참조하십시오.

강제 로깅 설정

강제 로깅 설정은 Oracle 버전 11.2.0.4.v1 이상에서 지원됩니다.

강제 로깅 모드에서는 Oracle이 임시 테이블스페이스와 임시 세그먼트의 변경 사항을 제외하고 데이터베이스의 모든 변경 사항을 기록합니다(NOLOGGING 절은 무시됩니다). 자세한 내용은 Oracle 문서의 Specifying FORCE LOGGING Mode를 참조하십시오.

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.force_logging를 사용하여 강제 로깅을 설정할 수 있습니다. force_logging 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_enable

부울

true

선택 사항

true로 설정하면 데이터베이스를 강제 로깅 모드로 설정하고, false로 설정하면 데이터베이스를 강제 로깅 모드에서 해제합니다.

다음은 데이터베이스를 강제 로깅 모드로 설정하는 예제입니다.

Copy
exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);

보충 로깅 설정

보충 로깅 설정은 Oracle 버전 11.2.0.4.v1 이상에서 지원됩니다.

보충 로깅은 LogMiner와 LogMiner 기술을 사용하는 제품이 충분한 정보를 바탕으로 행 체인을 비롯해 클러스터 테이블 같은 스토리지 정렬까지 지원하게 합니다. 자세한 내용은 Oracle 문서의 Supplemental Logging을 참조하십시오.

Oracle 데이터베이스는 기본적으로 보충 로깅이 활성화되어 있지 않습니다. Amazon RDS 프로시저 rdsadmin.rdsadmin_util.alter_supplemental_logging를 사용하여 보충 로깅을 활성화 또는 비활성화할 수 있습니다. Amazon RDS가 Oracle DB 인스턴스를 위해 보관된 다시 실행 로그 보존을 관리하는 방법에 대한 자세한 내용은 보관된 다시 실행 로그 보존을 참조하십시오.

alter_supplemental_logging 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_action

varchar2

필수

'ADD'는 보충 로깅을 추가하며, 'DROP'은 보충 로깅을 드롭합니다.

p_type

varchar2

null

선택 사항

보충 로깅 유형입니다. 유효한 값은 'ALL', 'FOREIGN KEY', 'PRIMARY KEY' 또는 'UNIQUE'입니다.

다음은 보충 로깅을 활성화하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD'); end; /

다음은 고정 길이 최대 크기 열 전체에 대해 보충 로깅을 활성화하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'ALL'); end; /

다음은 기본 키 열에 대한 보충 로깅을 활성화하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => 'ADD', p_type => 'PRIMARY KEY'); end; /

온라인 로그 파일 전환

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.switch_logfile을 사용하여 로그 파일을 바꿀 수 있습니다. switch_logfile 프로시저에는 파라미터가 없습니다.

다음은 로그 파일을 바꾸는 예제입니다.

Copy
exec rdsadmin.rdsadmin_util.switch_logfile;

온라인 다시 실행 로그 추가

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. Amazon RDS 프로시저 rdsadmin.rdsadmin_util.add_logfile를 이용해 다른 다시 실행 로그를 추가할 수 있습니다.

Oracle 버전에 상관없이, add_logfile 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

bytes

positive

null

선택 사항

로그 파일 크기(바이트)입니다.

버전 11.2.0.4.v1 이상을 사용한다면, add_logfile에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_size

varchar2

필수

로그 파일 크기입니다. 크기는 킬로바이트(K), 메가바이트(M)나 기가바이트(G)로 설정할 수 있습니다.

다음 명령을 실행하면 100MB 로그 파일이 추가됩니다.

Copy
exec rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');

온라인 다시 실행 로그 드롭

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.drop_logfile를 이용해 다시 실행 로그를 드롭할 수 있습니다. drop_logfile 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

grp

positive

requried

로그의 그룹 번호입니다.

다음은 그룹 번호 3인 로그를 드롭하는 예제입니다.

Copy
exec rdsadmin.rdsadmin_util.drop_logfile(grp => 3);

상태가 미사용이거나 비활성인 로그만 드롭할 수 있습니다. 다음은 로그의 상태를 확보하는 예제입니다.

Copy
select GROUP#, STATUS from V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED

온라인 다시 실행 로그 크기 조절

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. 다음은 Amazon RDS 프로시저를 사용하여 로그를 각각 128MB에서 512MB로 조정하는 예제입니다.

Copy
/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ exec rdsadmin.rdsadmin_util.drop_logfile(grp => 1); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 3); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ exec rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Issue a checkpoint to clear log 2. */ exec rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. exec rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED

보관된 다시 실행 로그 보존

보관된 다시 실행 로그를 DB 인스턴스에 로컬 보존하는 기능은 Oracle 버전 11.2.0.2.v7 이상에서 지원됩니다.

보관된 다시 실행 로그는 Oracle LogMiner(DBMS_LOGMNR) 같은 제품에서 사용할 수 있도록 DB 인스턴스에 로컬 보존할 수 있습니다. 다시 실행 로그를 보존하면 LogMiner를 사용하여 로그를 분석할 수 있습니다. 자세한 내용은 Oracle 문서의 Using LogMiner to Analyze Redo Log Files를 참조하십시오.

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.set_configuration을 사용하여 보관된 다시 실행 로그를 보존할 수 있습니다. set_configuration 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

name

varchar

필수

업데이트할 구성의 이름입니다.

value

varchar

필수

구성 값입니다.

다음은 24시간 동안 다시 실행 로그를 보존하는 예제입니다.

Copy
begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; /

Amazon RDS 프로시저 rdsadmin.rdsadmin_util.show_configuration을 사용하여 DB 인스턴스 재실행 로그의 보관 기간을 볼 수 있습니다.

다음 예제는 로그 보관 기간을 보여줍니다.

Copy
set serveroutput on exec rdsadmin.rdsadmin_util.show_configuration;

archivelog retention hours의 현재 설정이 출력됩니다. 다음 출력은 보관된 재실행 로그가 48시간 동안 보관되었음을 보여줍니다.


NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.                
            

보관된 다시 실행 로그는 DB 인스턴스에 보존되므로 보존된 로그를 수용하기에 충분한 스토리지가 DB 인스턴스에 할당되어 있는지 확인해야 합니다. 지난 X 시간 동안 DB 인스턴스가 사용한 공간을 측정하려면 X 자리에 사용 시간을 대입하여 다음 쿼리를 실행합니다.

Copy
select sum(BLOCKS * BLOCK_SIZE) bytes from V$ARCHIVED_LOG where FIRST_TIME >= SYSDATE-(X/24) and DEST_ID=1;

보관된 다시 실행 로그는 DB 인스턴스의 백업 보존 기간이 0보다 큰 경우에만 생성됩니다. 백업 보존 기간은 기본적으로 0보다 크므로, 명시적으로 0으로 설정하지 않는 한 보관된 다시 실행 로그는 DB 인스턴스에 생성됩니다. DB 인스턴스의 백업 보존 기간을 수정하려면 Oracle 데이터베이스 엔진 기반 DB 인스턴스의 변경 단원을 참조하십시오.

보관된 다시 실행 로그를 DB 인스턴스에서 제거한 후에 DB 인스턴스에 다시 다운로드할 수 있습니다. Amazon RDS는 보관된 다시 실행 로그를 DB 인스턴스 외부에 보존하여 일정 시점에 DB 인스턴스를 복구하도록 지원합니다. Amazon RDS는 DB 인스턴스에 구성된 백업 보존 기간에 따라 DB 인스턴스 외부에 보관된 다시 실행 로그를 보존합니다. DB 인스턴스의 백업 보존 기간을 수정하려면 Oracle 데이터베이스 엔진 기반 DB 인스턴스의 변경 단원을 참조하십시오.

트랜잭션 로그 액세스

트랜잭션 로그 액세스는 Oracle 버전 11.2.0.4.v11 이상과 12.1.0.2.v7 이상에서 지원됩니다.

GoldenGate, Attunity, Informatica 등과 같은 외부 도구로 마이닝하려면 온라인 및 아카이브된 다시 실행 로그 파일에 액세스해야 합니다. 온라인 및 아카이브된 다시 실행 로그 파일에 액세스하려면, 먼저 물리적 파일 경로에 읽기 전용으로 액세스할 수 있는 디렉터리 객체를 생성해야 합니다.

다음은 온라인 및 아카이브된 다시 실행 로그 파일에 읽기 전용으로 액세스할 수 있는 디렉터리를 생성하는 코드입니다.

중요

이 코드는 DROP ANY DIRECTORY 권한도 취소합니다.

Copy
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

온라인 및 아카이브된 다시 실행 로그 파일용 디렉터리 객체를 생성한 후 PL/SQL을 사용하여 이 파일을 읽을 수 있습니다. 디렉터리 객체의 파일을 읽는 방법에 대한 자세한 내용은 DB 인스턴스 디렉터리의 파일 목록 표시DB 인스턴스 디렉터리의 파일 목록 읽기 단원을 참조하십시오.

다음은 온라인 및 아카이브된 다시 실행 로그 파일용 디렉터리를 삭제하는 코드입니다.

Copy
exec rdsadmin.rdsadmin_master_util.drop_archivelog_dir; exec rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;

다음은 DROP ANY DIRECTORY 권한을 부여하고 취소하는 코드입니다.

Copy
exec rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; exec rdsadmin.rdsadmin_master_util.grant_drop_any_directory;

관련 주제