mingming

Oracle - Redo Log File & Archive Log File 본문

새싹 하이브리드 클라우드/Database

Oracle - Redo Log File & Archive Log File

mingming_96 2023. 10. 22. 01:44

리두 로그 파일

오라클은 장애 발생시 복구를 수행하기 위해 리두 로그 버퍼의 변경 기록을 이용합니다. 리두 로그 버퍼는 메모리의 영역이기 때문에 버퍼 공간이 다 차게되면 디스크에 로그를 기록하여 재활용 합니다.이때 디스크에 기록하는 역할을 하는 백그라운드 프로세스가 LGWR 입니다.

 

리두 로그 파일의 구성요소

항목 목적
리두 로그 멤버 리두 로그 버퍼의 내용을 기록하는 파일이며하나의 리두 로그 멤버는하나의 리두 로그 파일입니다. LGWR 백그라운드 프로세스는 리두 로그 버퍼의 내용을 동일 그룹에 속해있는 모든 리두 로그 멤버에 동일한 내용을 기록합니다.  
리두 로그 그룹 동일한 로그 기록을 저장하고 있는 리두 로그 멤버들의 집합을 의미합니다.

 

리두 로그 파일 특징 

LGWR 프로세스가 Group 3의 멤버에 로그를 기록하고 있다면 Current 리두 로그 그룹은 Group 3 이 됩니다. 더이상 기록할 공간이 없다면 다음 그룹인 Group 1 의 멤버에 로그를 기록하게 되며 계속 순환하게 됩니다. 이런 현상을 리두 로그 순환이라 하며 리두 로그 순환과 로그 스위치는 같은 개념입니다.

로그 스피닝 (Log Spinning)

리두 로그순환을 계속 반복하여 모든 그룹을 사용하고 다시 처음의 리두 로그 그룹의 멤버에 로그를 기록하는 현상을 의미합니다. 

로그 스위치 (Log Switch)

Current 리두 로그 그룹의 여유공간이 부족하다면 다음 리두 로그 그룹에 기록하게 됩니다. 이렇게 리두 로그 그룹이 변경되는 현상을 로그 스위치라고 합니다.

로그 스위치시 수행하는 작업 

  • 로그 시퀀스 번호 증가
  • CKPT 백그라운드 프로세스에 의해 체크포인트 수행
  • 아카이브 로그 모드라면 리두 로그 파일에 대한 아카이브 발생
  • ALTER SYSTEM SWITCH LOGFILE 명령어로 수동으로 스위치 발생시킬 수 있음

로그 스위치 내부 로직

 

리두 로그 파일 관리하기 

1. 리두 로그 파일 확인 

SELECT * FROM V$LOG;

GROUP  THREAD  SEQUENCE   BYTES       BLOCKSIZE  MEMBERS  ARCHIVED STATUS           
1      1       37         209715200   512        1        NO	   CURRENT	   
2      1       35         209715200   512        1        NO	   INACTIVE	
3      1       36         209715200   512        1        NO	   INACTIVE	


SELECT * FROM V$LOGFILE;

GROUP   TYPE    MEMBER                              CON_ID
1       ONLINE  /oracle/oradata/ORA19C/redo01.log   0
2       ONLINE	/oracle/oradata/ORA19C/redo02.log   0
3       ONLINE	/oracle/oradata/ORA19C/redo03.log   0

SELECT * FROM V$LOG_HISTORY;

 

V$LOG - STATUS

COLUMN VALUE 내용
UNUSED 리두 로그 그룹이 생성된 후 한번도 사용되지 않은 상태
CURRENT Current 리두 로그 그룹
ACTIVE 로그 스위치 등이 발생해 체크포인트 수행 또는 복구 상태
INACTIVE 해당 리두 로그 그룹이 비활동중인 상태
CLEARLING 리두 로그 그룹 클리어가 진해중인 상태
CLEARING_CURRENT Current 리두 로그 그룹에 크리어가 진행중인 상태

 

V$LOGFILE - STATUS 

COLUMN VALUE 내용
INVALID 리두 로그 멤버에 접근할 수 없는 상태
STALE 리두 로그 멤버의 내용이 불완전한 상태
DELETED 리두 로그 멤버가 더 이상 사용되지 않는 상태
공란 현재 사용중인 리두 로그 멤버

 

리두 로그 파일의 사용량 측정 

SELECT TO_CHAR(FIRST_TIME, 'YYYY-MM-DD') "DATE", COUNT(*)
FROM V$LOG_HISTORY
GROUP BY TO_CHAR(FIRST_TIME, 'YYYY-MM-DD');

 

2. 리두 로그 그룹 추가 

ALTER DATABASE ADD LOGFILE 
GROUP 4 '/data1/redo04.log' size 200M;

3. 리두 로그 그룹 삭제

ALTER DATABASE DROP LOGFILE GROUN n;

4.  리두 로그 멤버 추가

ALTER DATABASE ADD LOGFILE MEMBER 'data1/redo01A.log' TO GROUP 1;

## 운영체체제에 존재하는 파일 재사용
ALTER DATABASE ADD LOGFILE MEMBER 'data1/redo01A.log' REUSE TO GROUP1 ;

5. 리두 로그 그룹 초기화

  • 현재 사용중인 리두 로그 그룹이 손상되었거나 리두 로그 그룹이 오직 두개만 존재할 경우 초기화 할 수 있습니다.
  • 리두 로그 그룹 초기화가 완료되면 상태는 UNUSED로 변경됩니다.
  • 아카이브 로그 모드에서 아카이브가 수행되지 않은 리두 로그 파일을 초기화할 경우 UNARCHIVED 옵션 사용할 수 있습니다. 아카이브가 수행되지 않은 로그 파일은 복구에 사용될 수 없으므로 주의해야 합니다.
ALTER DATABASE CLEAR [UNARCHIVED] LOGFILE GROUP n;

 

6. 리두 로그 그룹 스위치

ALTER SYSTEM SWITCH LOGFILE ;

 

아카이브 로그 

노아카이브 로그 모드와 아카이브 로그 모드 

구분 내용
노아카이브 로그 모드 -  리두 로그 파일을 별도로 보관하지 않는 모드
-  로그 스위치시 이전 리두 로그 그룹에 대해 체크포이트 발생
-  체크포인트가 종료된 리두 로그 그룹은 재사용 가능
아카이브 로그 모드 -  리두 로그 파일을 별도로 보관하는 모드
-  로그 스위치시 이전 리두 로그 그룹에 대해 체크포인트및 아카이블 발생
-  체크포인트와 아카이브가 종료된 리두 로그 그룹에 대하여 재사용 가능 

 

아카이브 로그 모드 설정 

 

1. 데이터베이스 종료 

SHUTDOWN IMMEDIATE;

2. 아카이브 로그 위치 지정 

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'location=/oracle/arch';

3. 마운트 상태로 부팅

STARTUP MOUNT;

4. 아카이브 모드로 변경

ALTER DATABASE ARCHIVELOG;

5. 데이터베이스 오픈 

ALTER DATABASE OPEN;

 

아카이브 로그 모드 해제

 

1. 데이터베이스 종료 

SHUTDOWN IMMEDATE;

2. 마운트 상태로 부팅

STARTUP MOUNT;

3. 노아카이브 모드로 변경 

ALTER DATABASE NOARCHIVELOG;

4. 데이터베이스 오픈

ALTER DATABASE OPEN;

 

다중 아카이브 로그 파일 설정

아카이브 로그 파일이 손상될 때를 대비해 여러개의 아카이브 로그 파일을 설정할 수 있습니다.

 

LOG_AHRCIVE_DEST = /data1/arch

LOG_ARCHIVE_DUPLEX_DEST = /data2/arch

 

LOG_ARCHIVE_DEST_n 파라미터를 이용하면 아카이브 로그 파일을 10곳 까지 지정할 수 있습니다. 

LOG_ARCHIVE_DEST_n = 
LOCATION = path | SERVICE = service_name
MANDATORY | OPTIONAL
REOPEN | NOREOPEN

 

 

옵션 내용
LOCATiON 아카이브 로그 파일이 지정될 로컬 시스템 위치
SERVICE 아카이브 로그 파일을 저장할 원격 시스템 이름으로 원격 시스템 이름은 tnsnames.ora 파일에 기록되어 있어야 합니다. 
MANDATORY 아카이브 로그 파일이 지정된 위치에 반드지 저장되어 있어야 합니다.
OPTIONAL 아카이브 로그 파일이 저장된 위치에 저장되지 않아도 됩니다.
REOPEN 아카이브 로그 파일을 지정된 위치에 저장하는데 실패할 경우 재시도 간격

 

'새싹 하이브리드 클라우드 > Database' 카테고리의 다른 글

Oracle - 필수 파일  (0) 2023.10.21
Oracle - System View  (2) 2023.10.21
Oracle - 엑세스 절차  (2) 2023.10.17
Oracle - 메모리 관리  (2) 2023.10.17
Oracle DB Architecture - Process  (0) 2023.10.12