DBDBDEEP
Oracle Database Backup 본문
Media Failure
일반적인 원인 | 가능한 해결 방법 |
디스크 드라이브 Failure가 발생한 경우 | 1. 백업으로부터 손상된 파일 복원 2. 필요한 경우 새 파일의 위치를 데이터베이스에 알림 3. 필요한 리두 정보를 적용하여 파일을 Recovery |
디스크 컨트롤러 Failure가 발생한 경우 | |
데이터베이스 작업에 필요한 파일 삭제 또는 손상 |
- 백업이 꼭 필요하다. 백업이 전혀 있지 않다면, 복구를 전혀 할 수 없다.
DB mode
1)noarchived log mode
- media failure 복구작업을 시도할 수 없다.
2)archived log mode
- 리두로그 스위치가 일어남과 동시에, 아카이브(리두로그 복사) 까지 하는 모드이다.
- media failure 복구 작업을 시도할 수 있다.
Database 복구 개념
1. Restore (복원)
- 복구하려는 파일의 백업을 데이터베이스에서 사용하는 위치로 복사하는 과정
2. Recovery (복구)
- 복원해온 파일에 로그를 이용해서 백업 이후로 발생한 작업을 적용
- 복원해온 백업 파일이 0레벨 incremental 백업의 경우 1 레벨의 백업을 먼저 적용하고 로그를 적용한다.
3. 완전 복구(Complete Recovery)
- 장애가 발생한 시점까지 모든 Commit 된 데이터를 복구한다.
- 백업파일 + 백업이후 발생한 모든 로그(archived log, Online log)가 필요하다.
- 아카이브 모드에서 가능하다.
4. 불완전 복구
- 장애발생 이전 시점(target Point) 까지 데이터를 복구
- Target point 이후 수행되었던 작업은 손실된다
- 백업파일 + 백업이후 Target Point 까지의 모든 로그가 필요하다
- Archive mode에서 사용
백업 및 Recovery 구성하는 방법
1. 정기적 Backup
- 대부분의 Media Failure에서는 손실되거나 손상된 파일을 백업에서 복원해야 한다.
- 백업파일이 없다면, Recovery가 불가능하다.
2. Multiplexing
- 똑같은 로그를 2개 적는 것을 멀티플렉싱이라고 한다.
- 파일 하나를 멤버라고 하며, 멀티플렉싱 된 파일 2개를 묶어서 그룹이라고 한다.
- 멀티플렉싱의 대상은 컨트롤 파일과 log file
2_1. Control File 다중화 (Multiplexing)
- 데이터베이스와 연관된 모든 Control File은 동일하다.
- 단일 Control File이 손실된 경우에는 어렵지 않게 Recovery 할 수 있지만,
모든 Control File이 손실된 경우에는 Recovery하기가 훨씬 어렵기 때문에 최소한 두 개의 복사본을 보유하여 모든 Control File이 손실되지 않도록 보호한다.
- ASM (RMAN) 으로 다중화
SQL> alter system set control_files =
‘+DATA/orcl/controlfile/current.278.958156659’
, ‘+FRA/orcl/controlfile/current.256.796857739’
, ‘+DATA’
scope=spfile;
SQL> shutdown immediate
SQL> startup nomount
RMAN> restore controlfile from ‘+FRA/orcl/controlfile/current.256.796857739’;
--> ASM은 cp로 안됨.
SQL> alter database mount;
SQL> alter database open;
- File System (파일시스템)
SQL> alter system set control_files=
‘/u01/app/oracle/oradata/control01.ctl’
, ‘/u01/app/oracle/oradata/control02.ctl’,
, ‘/u01/app/oracle/oradata/control03.ctl’
scope=spfile;
SQL> shutdown immediate
$ cp /u01/app/oracle/oradata/control01.ctl /u01/app/oracle/oradata/control03.ctl
SQL> startup
ㄴ-->컨트롤 파일 3개의 내용이 모두 같아야한다.
2_2. 리두 로그 그룹 다중화 (Multiplexing)
- Instance failure 또는 Media failure로부터 recovery하려면 리두 로그 정보를 사용하여 데이터 파일을 마지막 커밋 된 트랜잭션으로 롤포워드한다.
- 리두 로그 그룹이 단일 리두 로그 파일에 의존하는 경우 해당 파일의 손실은 데이터의 손실을 의미한다.
가능하면 각각 서로 다른 복사본을 보유하도록 한다.
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+FRA' TO GROUP 2;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '/disk1/oradata/trgt/redo02b.log' TO GROUP
3. Archive Mode
작업순서
1) 파라미터 파일 수정
2) shutdown immediate
3) startup mount
4) alter database archivelog;
5) alter database open;
관련 파라미터
- log_archive_dest_n
: archive log file이 저장되는 위치
: 31개까지 지정 가능
- log_archive_format
: %t_%s_%r.dbf
- log_archive_max_processes
: archiving 을 수행하는 archiver background process 개수
: 4개가 기본값, 30까지 가능
4. Fast Recovery Area
- backup file, archivelog file, flashback logs, multiplexing file 들을 저장하기 위한 storage space
- db_recovery_file_dest
db_recovery_file_dest_size
- 공간관리를 오라클에게 맡길 수 있음
'Oracle Backup & Recovery' 카테고리의 다른 글
Instance Recovery의 이해 : CKPT (체크포인트) 프로세스 (0) | 2022.07.27 |
---|---|
DBA의 책임 및 Failure 카테고리 (0) | 2022.07.27 |