★ Recovery Manager
- RMAN (Recovery Manager, a.k.a. RMAN) 은 오라클 데이터베이스에서 백업, 복구 작업을 관리하는 데 사용하는
오라클 유틸리티이다.
- RMAN 은 운영체제와는 독립적인, 강력한 명령 언어를 사용한다.
1. 백업 대상
① 디스크 디렉토리
② 미디어 매니지먼트 라이브러리 media management librarry (테이프 장치)
③ 플래시 리커버리 에어리어 Flash Recovery Area (= Fast Recovery Area) 를 사용
- FRA: 백업과 복구 및 flashback database 를 위해 마련된 디스크 영역, RMAN 을 이용한 백업의 destination
- 파일은 필요에 따라 자동으로 보관 및 삭제된다.
① (QUESTION. 이게 뭔 소리여? 백업 대상이 디스크 디렉토리?... 나 이거 이해가 안가...
아. 디스크에 있는 파일들, 그러니까 데이터파일, 컨트롤파일, 리두로그 파일을 백업한다는 뜻인가?)
(ANSWER. 그냥 외워)
② (QUESTION. 이건 또 뭔 소리야? 미디어 매니지먼트 라이브러리가 뭔데?
내가 아는 라이브러리는 라이브러리 캐시밖에 없어...)
(ANSWER. 그냥 외워!)
③ (QUESTION. 그리고 테이프 장치는 또 뭐야? 내가 아는 테이프는 그 상자에 붙이는 테이프밖에 없다고...)
(ANSWER. 테이프 장치 = 하나의 저장 디스크, 그냥 외워)
SYS@ora11g> show parameter db_recovery_file_dest
플래시 리커버리 에어리어 (패스트 리커버리 에어리어) 위치 보기
위치: /u01/app/oracle/fast_recovery_area
SYS@ora11g> show parameter db_recovery_file_dest_size
플래시 리커버리 에어리어 (패스트 리커버리 에어리어) 크기 보기
근데 어차피 크기 위에 파라미터 확인했을 때 다 나와있었어... 따로 안봐도 될 것 같아...
플래시 리커버리 에어리어의 위치와 크기는 DB 생성시에 결정된다.
----------------------------------------------------------------------------------------------------------------------------------------------------------
리두 정보 확인하기
SYS@ora11g> select * from v$log;
근데 이거 말고
select a.group#, b.sequence#, a.member, b.bytes/1024/1024MB, b.archived, b.status
from v$logfile a, v$log b
where a.group# = b.group#
order by 1;
이걸로 보는 게 훨씬 낫네...
커런트한 리두 그룹 2번, 시퀀스 번호 5번
나머지는 인액티브 상태
(퍼티 102 창에서)
1. rman 프로그램 띄우기
SYS@ora11g> !
OS 로 나가서
[oracle@oracle ~]$ rman target /
rman target / 명령어를 수행하면
RMAN>
RMAN 이 뜬다.
2. 여러 가지 확인 작업
RMAN> report schema;
현재 ora11g 에 생성되어 있는 테이블스페이스와, 그 각각의 테이블스페이스에 속한 데이터파일 및 그 크기 보기
RMAN 에서의 필수 백업 대상 : 컨트롤파일, 데이터파일
(보통 백업 때와 똑같다. 리두는 필수 아님)
RMAN> list backup;
백업받은 것이 있는지 확인하기:
specification does not match any backup in the repository
하나도 없다고 나온다.
RMAN> report need backup;
백업이 필요한 파일들 보기 (한번도 백업을 받지 않은 상태에서 해야 보여준다.
백업을 받은 상태에서 저 명령어를 수행하면 아무것도 안보여준다)
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of files with less than 1 redundant backups
File #bkps Name
---- ----- -----------------------------------------------------
1 0 /u01/app/oracle/oradata/ora11g/system01.dbf
2 0 /u01/app/oracle/oradata/ora11g/sysaux01.dbf
4 0 /u01/app/oracle/oradata/ora11g/users01.dbf
5 0 /u01/app/oracle/oradata/ora11g/example01.dbf
6 0 /u01/app/oracle/oradata/ora11g/undotbs01.dbf
RMAN> show all;
환경 보기
뭔가 기~~~~~인 내용이 나오는데 그 중에서
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
5번째 줄 : 컨트롤파일을 자동 백업 설정할지 안할지에 대한 문장인데
지금 OFF 로 되어 있다.
(OFF: 수동, ON: 자동 - 지금은 컨트롤파일을 자동 백업 안한다는 뜻,
그렇지만 ON 으로 바꿔 놓는 것 즉 컨트롤파일을 자동으로 백업하도록 설정해놓는 것을
선생님은 추천하심)
RMAN> configure controlfile autobackup ON;
컨트롤파일 자동 백업 설정 ON 으로 바꾸기:
이렇게 하면 RMAN 을 통해서 백업할 때마다 컨트롤파일을 자동으로 백업받게 된다.
그리고 RMAN 을 통해서 백업하면: 백업파일은 기본적으로
/u01/app/oracle/fast_recovery_area/ORA11G 이라 물리적 위치에 저장된다.
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
컨트롤파일 자동 백업 설정 완료
다시 RMAN> show all;
로 확인해보면:
다섯번째 줄이 CONFIGURE CONTROLFILE AUTOBACKUP ON; 으로 바뀌어 있다.
--------------------------------------------------------------------------------------------------------------------------------------------
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
6번째 줄: 컨트롤파일 백업시에 백업파일 이름 설정에 관한 내용이 나와 있다.
%F = c-DBID-YYYYMMDD-QQ
QQ: 16진수, QQ 는 00으로 시작하고 최대값이 FF 인 16진수 시퀀스이다.
QQ 가 바뀌면서 %F 값은 절대 중복되지 않는다.
이런 식으로 컨트롤파일의 백업파일 이름이 만들어진다.
(QUESTION. c-DBID-YYYYMMDD-QQ 이런 이름의 백업파일이 만들어진다고?
이건 어디가면 볼 수 있어? 난 이런 거 없던데...
난 /u01/app/oracle/fast_recovery_area/ORA11G/autobackup/2024_01_24 에서
o1_mf_s_1159093340_lv0slfbg_.bkp 이런 것밖에 못봤는데... YYYYMMDD 같은 거 1도 없었어...
저기 말고 다른 데 만들어졌는데 내가 못 본 거야?)
(ANSWER. 저거 그냥 16진수로 바꾼 거... 그냥 그런가보다 하고 받아들여.
날짜 뒤에 16진수를 붙인 거)
(QUESTION. 그리고 최대값이 FF? 최대값이 FF 라는 게 무슨 말이야?)
(ANSWER. 12이면 C, 15이면 F 로 표시된다.)
--------------------------------------------------------------------------------------------------------------------------------------------
맨 마지막 줄:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0.4/db_1/dbs/snapcf_ora11g.f'; # default
컨트롤파일을 백업하고 있는 도중에 control file 의 내용이 변경된다면 - 백업 전과 백업 후의 내용이 달라지게 된다. 그런 문제가 발생하지 않도록, 백업하고 있는 도중에 백업받던 컨트롤파일의 스냅샷을 생성하고 백업 후에 동기화시켜서 문제를 해결한다.
백업받던 도중에 scn 번호가 100번이었는데 체크포인트가 발생 : 컨트롤파일에 써야 한다.
그런데 컨트롤파일은 백업 중에 쓸 수 없다 - 그래서 일단은 스냅샷을 찍어놓고
백업 후에 스냅샷의 내용을 컨트롤파일에 쓴다.
(QUESTION. 스냅샷이 뭐야?... 내가 아는 스냅샷은 스냅샷 투 올드 에러밖에 없어...
long query 문 던질 때 뜨는 그거...)
(ANSWER. 아직 안배움, 그런데 일종의 백업의 종류 같은 거라고 보면 된다.)
(QUESTION. 스냅샷은 SCN 번호가 바뀔 때마다 찍어? 백업이 다 끝날 때까지?
그래서 그 찍어놓은 것들을 컨트롤파일에 기록하는 거야?
리두로그 파일로 하나하나 적용해서 리커버리할 때 마냥 첫번째 거 적용하고 두번째 거 적용하고...
하나하나씩 차례대로 적용하는 그런 식이야?)
(ANSWER. 한 번만 찍는 거야...)
아무튼 저 맨 마지막 줄은 디폴트인 채로 건드리지 말고 그대로 놔두기
--------------------------------------------------------------------------------------------------------------------------------------------
3. 백업
RMAN> backup database;
일관성없는 백업 (핫 백업) 받기:
백업 대상 파일들을 지가 알아서 찾아서 백업한다.
지금 백업은 PGA 메모리에서 하는 중인데, PGA 메모리가 부족하면 LP 에서 메모리를 가져다 쓰고
LP 메모리가 부족하면 ShP 에서 메모리를 가져다 쓴다.
결과화면 1.
#########################################################################################
channel ORA_DISK_1: starting piece 1 at 24-JAN-24
channel ORA_DISK_1: finished piece 1 at 24-JAN-24
piece handle=/u01/app/oracle/fast_recovery_area/ORA11G/backupset/2024_01_24/o1_mf_nnndf_TAG20240124T102114_lv0sjc3c_.bkp tag=TAG20240124T102114 comment=NONE
(/u01/app/oracle/fast_recovery_area/ORA11G/backupset/ 백업본이 저장되는 주소)
#########################################################################################
RMAN 백업에서는 비어있는 블록들은 가져오지 않는다. 사용한 블록들만 뽑아내서 가져온다.
(와우! 공간 낭비할 일 없을 듯!)
기존의 copy 방식에서는 비어있는 블록들도 가져온다.
(RMAN 이 훨씬 스마트하네...)
결과화면 2.
#########################################################################################
Starting Control File and SPFILE Autobackup at 24-JAN-24
piece handle=/u01/app/oracle/fast_recovery_area/ORA11G/autobackup/2024_01_24/o1_mf_s_1159093340_lv0slfbg_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 24-JAN-24
컨트롤파일과 spfile도 같이 받아짐 (DB 를 pfile 로 띄운 경우 spfile 은 받아지지 않는다)
#########################################################################################
4. (또) 여러가지 확인 작업
RMAN> list backup;
백업받은 것이 있는지 확인하기
List of Datafiles in backup set 1
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 2079021 24-JAN-24 /u01/app/oracle/oradata/ora11g/system01.dbf
Control File Included: Ckp SCN: 2079062 Ckp time: 24-JAN-24
백업 당시의 SCN 번호와 컨트롤파일 백업 당시의 SCN 번호가 다르지만
스냅샷이 있기 때문에 걱정이 없다.
RMAN> report need backup;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of files with less than 1 redundant backups
File #bkps Name
---- ----- -----------------------------------------------------
백업이 필요한 파일들 보기 : 하나도 없다고 나온다.
RMAN> exit
RMAN 종료시키기
Recovery Manager complete.
5. 물리적인 위치로 가서 백업본들이 잘 받아졌는지 확인해보기
물리적인 위치:
cd /u01/app/oracle/fast_recovery_area/
[oracle@oracle fast_recovery_area]$ ls
ora11g ORA11G
백업본은 ORA11G 폴더에 있다.
[oracle@oracle ORA11G]$ ls
archivelog autobackup backupset onlinelog
여기서 또 autobackup 폴더로 가고
[oracle@oracle ORA11G]$ cd autobackup
[oracle@oracle autobackup]$ ls
2024_01_24
[oracle@oracle autobackup]$ cd 2024_01_24
[oracle@oracle 2024_01_24]$ ls
o1_mf_s_1159093340_lv0slfbg_.bkp
(QUESTION. 얘는 정체가 뭐야? 일단 너무 길고 이름도 이상해...
맨 끝에 확장자가 .bkp 로 되어 있는 걸 보니 백업파일인가?
근데 왜 YYYYMMDD 가 아니야? 년도는 1도 없고 1159... 이건 그냥 11시 59분이란 소리 같은데?)
(ANSWER. 위에를 봐... 그리고 파일명 별로 안중요하대
그냥 그런가보다 해)
잠깐 휴식 후 RMAN 을 가지고 장애 복구를 해보자.
2024년 1월 26일 1교시 RMAN을 이용해서 복제 DB 만들기 (0) | 2024.01.26 |
---|---|
2024년 1월 24일 2교시 RMAN을 이용한 장애 복구 시나리오 1 (0) | 2024.01.24 |
2024년 1월 10일 3교시 시나리오 7. 시스템 데이터파일 손상 + 백업본 O + 리두 X (0) | 2024.01.10 |
2024년 1월 10일 2교시 시나리오 6. 시스템 데이터파일 손상 + 백업본 O + 백업 이후 리두 O / 콜드 백업 실습 (0) | 2024.01.10 |
2024년 1월 10일 1교시 문제풀이를 통한 노아카이브 모드에서의 콜드 백업 실습 (0) | 2024.01.10 |