본문 바로가기
일/개발, IT정보

Oracle 백업 복구의 개념, 개념, 절차

DB엔지니어 업무 중 백업복구 기술에 대한 문의를 자주 받게 됩니다

대부분 백업복구에 대한정책 방안이나 데이터 복구에 대한 기술지원을 요청받는 경우가 많이 있습니다(다양한 CASE존재)

 

실제 운영에 필요한 기술공유가 무엇이 있을까 고민하다

오라클DB 백업복구 원리에 대해 준비해보았습니다

 

우선 오라클 백업복구 원리를 알기전에 꼭 알아야할 것들이 있습니다

오라클DB를 구성하는 파일의 종류, 백업, 복구의 절차, STARTUP 3단계, SCN NUMBER의 역할, 데이터파일의 구조 등 꼭 알고 이해해야 할 부분들이 있으며 하나 둘 차근차근 챕터를 나누어 진행하도록 하겠습니다.

 

1.  오라클 파일종류

 

기본적으로 오라클을 구성하는 주요 파일종류에 대해 알아보겠습니다

오라클의 구성하는 파일은 각각의 어떤 역할을 하는지 알아야 합니다

그래야 어떤 파일을 백업 해야 하는지 복구에 어떤 파일이 필요한지 알아야 하기 때문이죠

 

오라클 파일 형식종류

 

 

아래 내용은 오라클 백업복구에 영향을 주는 주요 파일들이며 주요 역할에 대해 간락한 설명입니다.

 

ParameterFile(*init.ORA) : Oracle 데이터베이스의 구성 및 동작을 제어하는 설정 파일

 

DataFile(*.dbf) : 데이터 파일은 실제 데이터베이스의 데이터를 저장하는 데 사용되는 파일입니다.

 

Controlfile(*.ctl) : 데이터베이스의 메타데이터 및 구조에 대한 정보를 포함하는 파일 체크포인트 정보 등 데이터베이스의 현재 상태를 기록,데이터베이스의 시작 및 정지 프로세스와 데이터베이스 무결성을 관리하는 데 사용되는 파일입니다.

 

Redo logfile(*.log) : 트랜잭션의 변경 내용을 기록하는 데 사용되는 파일입니다.

 

Archive Log File(*.arc) : 아카이브 로그 파일은 리두로그 파일의 저장한 파일로 데이터베이스 복구 지점을 지정하는 데 사용됩니다



당연하게도 파일이 하나라도 누락된다면 완전복구는 불가 합니다.
(리두시점이 지난 경우, 아카이브 파일이 없다면 완전복구가 불가함)

 

2.   오라클 백업방식과 내부수행 절차

 

주요 오라클 파일을 알았으니 이제 백업하는 내부적으로 어떻게 수행되는지 설명 드리겠습니다.

기본적으로 RMAN백업 또는 ALTER 구문을 이용해 Online Hot Backup을 진행하게 됩니다. (아카이브모드)

SQL> Alter database begin backup;
SQL>


!cp /app/oracle/oradata/18c/TSORA18/control01.ctl /백업경로/
!cp /app/oracle/oradata/18c/TSORA18/control02.ctl /백업경로/

!cp /oradata/datafile/system01.dbf /백업경로/

!cp /oradata/datafile/sysaux01.dbf /백업경로/
!cp /oradata/datafile/users01.dbf /백업경로/
!cp /oradata/datafile/LOB01.dbf /백업경로/
!cp /oradata/datafile/USERS_DATA01.dbf /백업경로/
!cp /oradata/datafile/USERS_IND01.dbf /백업경로/


!cp /app/oracle/oradata/18c/TSORA18/redo01.log /백업경로/
!cp /app/oracle/oradata/18c/TSORA18/redo02.log /백업경로/
!cp /app/oracle/oradata/18c/TSORA18/redo03.log /백업경로/

SQL> SELECT * From V$BACKUP;
SQL> Alter database End backup;

 

오라클의 주요 백업파일들의 백업경로에 cp형식으로 복사하게 되며

RMAN 백업 방식과 Online Hot Backup 방식 또한 같은 아키텍처이기 때문에

Backup피스 파일형식의 차이만 존재하며 내부적으로 수행되는 아키텍처는 동일합니다.

 

 

*내부적 수행절차

1. Begin Backup 명령어를 수행하게 되면 DB내에 Checkpoint가 발생 되게됩니다.

DB Buffer Cache에 있는 해당 Tablespace 소속된 Commite된 내용이 DataFile로 내려써 지게 됩니다.

DB Buffer Cache에 블록이 오래 상주할수록 재사용이 높아지는 이점 있지만 begin backup 명령어를 수행하게 되면 기존에 메모리에 Cache되어 있는 블록들이 디스크에 내려써 지게 되며 해당 시점의 작업이 끝난 최종 SCN정보가 DataFile과 ControlFile에 기록 SCN정보가 변경됩니다.

 

여기서 SCN란 오라클 데이터베이스의 발생하는 모든 트랜잭션의 변경 작업을 식별하는 고유한 번호입니다
SCN 값을 가지고 정합성을 맞추는데 중요한 역할을 합니다. SCN에 대해서는 나중에 좀더 자세히 다루도록 하겠습니다.

 

 

2. Begin Backup 수행시 최종 SCN이후에 변경되는 사항은 Redo에 BLOCK단위로 저장되게 됩니다

BEGIN BACKUP수행시 보통 ROW단위가 아닌 데이터가 속해 있는 BLOCK 단위로 저장되게 됩니다 때문에 REDO량이 급격하게 증가하게 됩니다.

백업수행시간은 트랜잭션이 많은 부하시간에 수행하게되면 당연스럽게도 자원 사용률이 높아 질수록 밖에 없어 주위 해야 합니다.


3. End Backup 명령어는 해당 DataFile에 적용된 가장 마지막 SCN을 시작하는 Redo 항목을 만들게 됩니다.

백업수행시 그동안 변경된 SCN을 가진 데이터들이 어느 REDO에 위치해 있는지 찾아내어 수행하게 되며 일반모드로 수행됩니다.

 

백업 수행 절차에 대해 내부적으로 어떤 방식으로 수행되는지 간략하게 설명 드렸습니다

백업에 중요한 파일과 역할 그리고 DB 내부적으로 어떻게 수행되고 처리되는지, 백업수행시 왜 부하가 생기는지

알 수 있었습니다.

 

 

STARTUP 3단계란 오라클 인스턴스가 OPEN 되는 절차를 3단계로 나눈 것을 말합니다 

오라클 인스턴스 SGA메모리할당 및 데이터파일 구성정보 확인 무결성 체크를 통해 데이터베이스가 정상적으로 서비스 할 수 있게 OPEN하는 과정을 말합니다.

 

1. NOMOUNT
오라클 서버프로세스가 파라미터 파일PFILE(SPFILE) 읽어 들어 INSTANCE를 생성하는 단계입니다

이전에 설명했던 오라클 주요파일 파라미터 파일을 읽지못하면 nomount단계로 갈수 없습니다

파라미터 파일 정보에는 PGA, SGA메모리 값과, 컨트롤파일 경로에 대한 정보가 존재합니다.

2. MOUNT


Parameter File에 기록되어 위치한 Controlfile을 읽어 Datafile, redolog 파일 경로 정보를 읽어온다.

 

파라미터 파일에 기록 되어있는 Controlfie들의 모두 존재해야 하며 시점이 다른 컨트롤파일이 여럿 존재하면 mount단계로 갈수 없습니다.

 

3. OPEN


Data File Header 부분의 정보와 Control File의 정보를 서로 비교해서 장애 유무를 판단합니다.


DB에 문제가 없다고 판단하고 정상적으로 OPEN하게 됩니다 OPEN과정에서 DataFile 과 controlfile을 서로 비교할 때 SCN 값을 사용하게 됩니다.

 

 

1. 오라클DB 복구원리

 

오라클 데이터베이스가 OPEN된 상태에서 컨트롤파일 dump를 수행합니다.

 

 

Dump된 트레이스 파일을 확인해보면 데이터파일1번 관련된 SCN정보를 확인할 수 있습니다.

Checkpoint cnt:3072 scn: 0x0000000005c71dfe 10/06/2023 08:00:16

Stopscn: 0xffffffffffffffff 01/03/2023 16:52:21

Checkpoint cnt 부분은 현재 데이터파일에 저장되어 있는 SCN번호 Stop SCN은 추가로 작업이 진행될 때 추가되는 SCN작업을 의미합니다.

 

 

 

 



DB OPEN상태는 현재까지 저장 완료된 Checkpoint SCN 몇 번인지 알 수 있지만 신규로 추가되는 Stop SCN은 현재 작업 중이기 때문에 몇 번까지 들어올지 알 수 없습니다 


오라클 데이터베이스는 OPEN 상태 면 STOP SCN을 임시로 무한대(0xffffffffffffffff)로 설정합니다


반대로 오라클 DB가 정상 종료되거나 OFFLINE 되는 경우 CheckPoint를 발생시켜 Checkpoint SCN과 STOP SCN을 동일하게 만들고 해당 데이터파일을 닫게 합니다



 

 

 

 

OPEN, 비정상종료 상태  정상 종료상태
DATA FILE #1:
  name #6: /oradata/datafile/system01.dbf
creation size=0 block size=8192 status=0xe flg=0x1 head=6 tail=6 dup=1
 pdb_id 0, tablespace 0, index=2 krfil=1 prev_file_in_ts=0 prev_file_in_pdb=0
 unrecoverable scn: 0x0000000000000000 01/01/1988 00:00:00
 Checkpoint cnt:3072 scn: 0x0000000005c71dfe 10/06/2023 08:00:16
 Stop scn: 0xffffffffffffffff 01/03/2023 16:52:21
 Creation Checkpointed at scn:  0x0000000000000008 02/07/2018 19:20:19
 thread:0 rba:(0x0.0.0)
DATA FILE #1:
  name #6: /oradata/datafile/system01.dbf
creation size=0 block size=8192 status=0xe flg=0x1 head=6 tail=6 dup=1
 pdb_id 0, tablespace 0, index=2 krfil=1 prev_file_in_ts=0 prev_file_in_pdb=0
 unrecoverable scn: 0x0000000000000000 01/01/1988 00:00:00
 Checkpoint cnt:3073 scn: 0x0000000005c74cf1 10/06/2023 10:53:49
 Stop scn: 0x0000000005c74cf1 10/06/2023 10:53:49
 Creation Checkpointed at scn:  0x0000000000000008 02/07/2018 19:20:19
 thread:0 rba:(0x0.0.0)

 

2. 오라클DB 복구 내부수행

 

1. RESTORE 이후 RECOVER, STARTUP 명령어수행


2. 컨트롤파일 CheckPoint SCN STOP SCN비교 값이 동일 하다면 문제가 없는 것으로 판단함


3. 데이터파일 헤더정보에 있는 CheckPoint SCN과 컨트롤파일 안에 있는 STOP SCN번호가 같은지 비교하여 이부분까지 모두 일치 하면 복구가 필요 없다고 판단하게 되어 OPEN을 수행하게 되며 이부분이 다르다면 복구를 시도하게 됩니다. 



복구판단시
*데이터파일에 부족한 SCN에서 가장 낮은 SCN 확인 CONTROLFILE 안에 있는 LOG FILE RECORDS를 찾아가게 되며 부족한 SCN을 먼저 REDOLOG 파일에서 찾아 적용하며 REDOLOG파일에 부족한SCN이 존재하지 않을 경우 ARCHIVE FILE 통해 SCN 적용하여 복구를 수행하게 됩니다.



 

 

3. 완전복구 형식의 절차를 간단하게 그림으로 표현.