BACKUP & RESTORE는 사용자의 실수나 자연발생한 사고가 일어났을 때, 데이터를 다시 사용 가능한 상태로 복구하고 데이터를 보존하기 위한 필수 작업입니다.
백업의 종류에는 크게 2가지가 있습니다.
Hot backup | 데이터베이스가 Open 상태에서 받는 백업 *** Control File, Data File, Redo Log File 등 데이터베이스 핵심 파일들의 시점정보(SCN)가 불일치함. - 따라서 Hot Backup을 받은 파일을 Restore 하고 데이터베이스를 다시 Open하기 위해 백업 시점의 Redo를 적용하는 Recover 작업이 필요. - 복구에 필요한 Redo Log가 Online Redo Log File 내에 모두 존재하면 SMON 프로세스를 통해 자동으로 Instance Recovery를 수행하여 Database Open. - 복구에 필요한 Redo Log의 Online Redo Log File 내용과 일치하지 않아 Archive된 Redo Log 까지 참조해야 하는 경우 관리자(DBA)를 통한 Recovery 작업이 동반되어야 Database Open이 가능함. - 따라서 Hot Backup은 반드시 Archive Log Mode 에서만 수행이 가능 |
Cold backup | 데이터베이스가 완전히 정상적으로 종료된 후에 받는 백업 - 데이터베이스가 완전히 종료되고 난 후 이므로 C/D/R의 SCN이 정확히 일치함. - 별도의 Recovery 작업이 없이 Database Open 가능 - 데이터베이스가 종료된 시점 이후의 Redo Log와 현재 시점 정보를 기록한 Control File이 없다면 백업 이후 시점으로의 복구는 불가능함. - SGA를 초기화 하는 과정이 필요하기 때문에 상당히 비효율적 - 위의 이유로 운영 데이터베이스에서는 거의 사용되지 않음. |
백업을 받는 방법은 크게 세 가지로 나누어 생각해볼 수 있습니다.
1. 수동 백업 (User-Managed Backup)
2. RMAN 백업 (Recovery Manager)
3. 백업 솔루션을 이용한 백업 (Third Party Solution)
가. 수동 백업(User-Managed Backup)
수동 백업은 데이터베이스 구동에 반드시 필요한 C/D/R을
별도의 저장매체에 직접 복사하는 작업을 의미합니다.
관리자는 데이터베이스 운영조건(저장 공간의 여유, Archive Log Mode 여부)에 따라
Hot 백업이나, Cold 백업을 선택하여 수행할 수 있습니다.
Cold 백업은 데이터베이스를 정상종료 시킨 후에
OS 상에서 cp 명령어를 통해 C/D/R을 별도의 저장매체에 복사하여 백업을 수행할 수 있습니다.
cp를 통한 복사가 완료되고 다시 데이터베이스를 기동시켜주면 Cold 백업이 완료됩니다.
Hot 백업은 데이터베이스가 Open 상태에서 진행되므로
복사작업 간 데이터 블록의 깨짐 현상(Fractured Block) 발생으로부터 데이터 블록을 복구할 수 있도록
백업 간 BEGIN BACKUP / END BACKUP 명령어를 입력해주어야 합니다.
BEGIN BACKUP 명령어는 데이터베이스가 Archive Log 모드일 때만 동작하므로
Hot Backup을 수행하기 위해선 반드시 데이터베이스가 Archive Log 모드로 상태여야 합니다.
BEGIN BACKUP 명령어를 입력한 후에는 백업 대상인 Data File들을
OS 상에서 cp 명령어를 통해 별도의 저장매체로 복사해줄 수 있습니다.
복사가 끝난 후에는 END BACKUP 명령어를 통해 백업모드를 해제할 수 있습니다.
수동으로 Hot Backup을 수행할 시 가장 중요한 것은
백업을 수행할 당시의 Redo Log File 보존입니다.
데이터베이스가 백업모드로 구동되는 동안 발생했던 모든 데이터 변경내역들이
Redo Log File에 기록되어있기 때문에 백업모드가 종료될 때까지의 Redo Log를
Archive Log File 형태로 변환하여 백업본과 같이 관리해주는 것이 좋습니다.
이 Archive Log File들은 복구 시 가장 먼저 사용되는 키 역할을 하기 때문에
최소한 다음번 백업 작업 수행까지라도 반드시 보존되어야합니다.
만약 백업을 수행할 당시의 Redo Log가 담긴 Archive Log File을 분실하면
정상적인 데이터베이스 복구가 불가능하며,
이는 최악의 경우 데이터 손실로 이어질 수 있기 때문에 반드시 유의해야합니다.
2. RMAN 백업 (Recovery Manager Backup)
RMAN 백업은 위에서 관리자가 수동으로 했던 작업들을
RMAN(Recovery Manager)라는 오라클 패키지를 이용하여 수행하는 방법으로,
단순히 백업을 수행하는 것 외에도
백업 관리, 백업 결과 파일 압축, 백업 수행 시 병렬 처리 수 설정, Block Corruption에 대한 장애 조치 등
수많은 기능을 제공하기 때문에 가장 많이 사용되는 백업 방법입니다.
RMAN을 통한 백업은 Backup set과 Image Copy라는 두 가지 형태로 수행될 수 있습니다.
Backup set은 여러 데이터파일들을 하나의 백업 파일로 묶어서 저장하는 형태이고,
Image Copy는 데이터 파일별로 각각의 백업 파일을 만들어 저장하는 형태입니다.
Backup set은 데이터파일에서 실제로 사용된 블록만 추출하여 백업파일을 만들기 때문에
저장 공간을 아낄 수 있는 장점이 있습니다.
또한, 전체백업 외에도 증분백업을 할 수 있는 기능을 제공하기 때문에
저장 공간이 부족한 시스템에서 자주 쓰이는 백업 방법입니다.
하지만 전체가 아닌 일부의 데이터 파일을 복구해야하는 상황에서도
전체 Backup set을 Restore 해야 하기 때문에 Down Time이 길어질 수 있다는 단점이 있습니다.
Image Copy는 빈 블록을 포함한 전체 데이터 파일을 백업하는 형태입니다.
그렇기 때문에 Backup set에 비해서 저장 공간이 많이 소요된다는 단점이 있습니다.
하지만 일부 데이터 파일의 복구가 필요한 상황에서
필요한 파일만 Restore하면 되기 때문에 Down Time을 최소화할 수 있습니다.
다만 Image Copy는 백업 수행시마다 전체백업을 수행해야하므로
저장 공간에 대한 부담이 상대적으로 크기 때문에 저장 공간에 여유가 있고
장애가 빈번히 발생하는 시스템에서 사용을 고려해볼만한 방법입니다.
관리자는 OS 상에서 rman target / 라는 명령어를 통해 RMAN 프롬프트로 접근할 수 있습니다.
RMAN 프롬프트 상에 BACKUP DATABASE 명령어를 입력해주면
RMAN은 자동으로 Control File과 파라미터 파일, 그리고 전체 데이터 파일을 백업해줍니다.
RMAN은 Control File에 기록된 정보를 기준으로 백업을 수행하고,
백업된 기록을 Control File에 작성하기 때문에 RMAN 백업을 받는 환경에서
Control File의 중요도는 매우 큽니다.
따라서 Control File을 RMAN으로 백업받는 것 외에도
별도의 스크립트를 만들어 Control File을 백업받아두는 것이 좋습니다.
3. 백업 솔루션을 이용한 백업 (Third Party Solution)
위의 두 가지 백업 방법을 이용하여 유저들이 사용하기 편하도록
Third Party Solution을 만든 프로그램도 존재합니다.
대표적으로 Netbackup, Backup Xcelerator 등의 솔루션이 있으며,
이 솔루션들은 OS 상에서 cp 명령어를 이용하여 백업을 수행하는 방법이나,
RMAN 패키지를 이용하여 백업을 수행하는 방법 등을
소스코드에 넣어 컴파일한 프로그램이라고 생각할 수 있습니다.
'[DB] ORACLE' 카테고리의 다른 글
[ORACLE] UNDO Tablespace Full 모니터링 및 조치 (1) | 2024.01.08 |
---|---|
[ORACLE] Oracle Database Backup Basic - 백업 개념2 (3) | 2023.11.08 |
[ORACLE] Lock 걸린 테이블 및 오브젝트 조회, Kill session (0) | 2023.09.27 |
[ORACLE] Toad For Oracle 단축키 모음 (0) | 2023.09.01 |
[ORACLE] 아카이브(Archive) 발생량 확인하기 (0) | 2023.06.26 |