■ Recover Manager
1) RMAN(Recover Manager) : 오라클 데이터베이스에서 백업, 복구 작업을 관리하는데 사용하는 오라클 유틸리티이다.
2) RMAN은 운영체제에 독립적인 강력한 명령언어를 사용한다
1. 백업 대상
- 디스크 디렉터리
- media management library(테이프 장치)
- Flash Recovert Area(Fast Recovert Area)
=> 백업과 복구 및 flashback database 목적으로 마련된 디스크 영역
=> 파일은 필요에 따라 자동으로 보관 및 삭제된다.
=> 위치, 크기) show parameter db_recovery_file_dest / show parameter db_recovery_file_dest 를 통해서 확인가능
show parameter db_recovery_file_dest
#) redo log 정보 확인
select * from v$log;
#) rman으로 접속하기
[oracle1@oracle ~]$ rman target /
(DBID=256734894) ☆중복되지 않음
RMAN>
------------------------------------------------------------------------------------------------
#) schema 확인
=> data file 확인
RMAN> report schema;
#) backup file 확인
RMAN> list backup;
#) 물어보기 (report)
=> 백업을 받았는지 확인하는 방법
RMAN> report need backup;
=> #bkps 0 으로 보이는 것은 backup을 받지 않아 0으로 보이는 것이다.
RMAN> show all;
1) control file 자동 백업 설정
★CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default : OFF 자동으로 하지 않겠다
#1) control file 자동 백업 설정 변경
=> 자동으로 백업 받겠다는 의미
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
2) control file 백업 파일 이름 설정
★CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
#1) %F : c-DBID(절대번호)-YYYYMMDD(날짜)-QQ(16진수)
-> QQ: 00으로 시작하고 최대값이 FF인 16진수 시퀀스
3)★ control file을 백업하고 있는 도중에 control file의 내용이 변경된다면 backup전과 후의 내용이 달리지는 문제가 발생한다.
그런 상황이 되면 백업 받던 control file을 스냅샷을 생성하고 백업 후에 동기화시켜서 문제를 해결한다.
★CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0.4/db_1/dbs/snapcf_ora11g.f'; # default
=> hot backup으로도 rman으로 불안정한 복구가 가능하다
#) 백업 받기!
#1) hot backup, PGA 에서 backup
RMAN> backup database;
...
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_TAG20240124T102116_lv0sjdbp_.bkp tag=TAG20240124T102116 comment=NONE ★ => 별도의 디렉터리 생성
...
Starting Control File and SPFILE Autobackup at 24-JAN-24
=> control file, spfile 백업!(pfile로 올렸다면, spfile 받아 지지 않는다)
piece handle=/u01/app/oracle/fast_recovery_area/ORA11G/autobackup/2024_01_24/o1_mf_s_1159093331_lv0sl4ft_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 24-JAN-24
#) backup 확인해보기
RMAN> list backup;
#) 백업 받을 파일이 있는지 확인
RMAN> report need backup;
#) os로 나온 후에 backup본 확인해보기
RMAN> exit
[oracle1@oracle ~]$ cd /u01/app/oracle/fast_recovery_area/ORA11G/
[oracle1@oracle ORA11G]$ ls
archivelog autobackup backupset onlinelog
#) redo 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 아카이브 확인
! ls /home/oracle1/arch1
#) 샘플 테이블 생성
create table hr.loc_new tablespace users as select * from hr.employees;
select count(*) from hr.loc_new;
#) 로그 스위치 강제 발생
alter system switch logfile;
#) redo 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 아카이브 정보 확인
! ls /home/oracle1/arch1
#) 테이블 확인
select f.tablespace_name, f.file_name
from dba_extents e, dba_data_files f
where f.file_id = e.file_id
and e.segment_name = 'LOC_NEW'
and e.owner = 'HR';
#) 장애 유발
! rm /u01/app/oracle/oradata/ora11g/users01.dbf
! ls /u01/app/oracle/oradata/ora11g/users01.dbf
#) 샘플 테이블 생성
create table hr.emp_new tablespace users as select * from hr.employees;
select count(*) from hr.emp_new;
#) OS 나와서 rman 접속
SYS@ora11g> !
[oracle1@oracle ~]$ rman target /
#) 장애 확인하는 방법
RMAN> list failure;
#) 장애에 대해서 자세히 보여줘
RMAN> list failure 82 detail;
#) 백업본 확인
RMAN> list backup;
#) 백업본을 이용해서 recover 하기
1#) sql문장으로 offline 변경
RMAN> sql 'alter tablespace users offline immediate';
2#) restore 하기
=> 가장 최근 백업본으로 복구
RMAN> restore tablespace users;
3#) recover
RMAN> recover tablespace users;
#4) online 모드로 변경
RMAN> sql 'alter tablespace users online';
#5) 장애 리스트 확인
RMAN> list failure;
#) oracle 접속
RMAN> exit
#) data file 확인
select file#, name, status from v$datafile;
#) 복구 되었는지 확인
select count(*) from hr.loc_new;
select count(*) from hr.emp_new;
#) 테이블스페이스 생성
create tablespace insa_tbs datafile '/home/oracle1/insa_tbs01.dbf' size 10m;
#) tablespace 생성되었느지 확인
select tablespace_name, file_name,bytes/1024/1024 MB
from dba_data_files
where tablespace_name = 'INSA_TBS';
#) 테이블 생성
create table hr.dept_new tablespace insa_tbs as select * from hr.departments;
select count(*) from hr.dept_new;
#) redo 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 로그 스위치 강제 발생
alter system switch logfile;
#) redo 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 아카이브 정보 확인
! ls /home/oracle1/arch1
#) rman 접속
SYS@ora11g> !
[oracle1@oracle ~]$ rman target /
#) 최근 생성한 tablespace
RMAN> report schema;
RMAN> report need backup;
#) insa_tbs 백업 받기
=> parse 부분 backup
RMAN> backup tablespace insa_tbs;
#) backup 확인해보기
RMAN> list backup;
#) 특정한 백업본만 보기
RMAN> list backup of tablespace insa_tbs;
#) oracle 접속/ ora11g session
RMAN> exit
[oracle1@oracle ~]$ exit
select f.tablespace_name, f.file_name
from dba_extents e, dba_data_files f
where f.file_id = e.file_id
and e.segment_name = 'DEPT_NEW'
and e.owner = 'HR';
#) 장애 유발
SYS@ora11g> ! rm /home/oracle1/insa_tbs01.dbf
SYS@ora11g> ! ls /home/oracle1/insa_tbs01.dbf
#) 로그 스위치 발생
alter system checkpoint;
alter system switch logfile;
#################
#################
#) rman 으로 접속
[oracle1@oracle ~]$ rman target /
RMAN> list failure;
#) redo log 정보 확인
SELECT a.group#, b.sequence#, a.member, b.bytes/1024/1024 MB, b.archived, b.status
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;
#) 장애 자세히 보기
RMAN> list failure 82 detail;
#) 해결 방안
=> 작업형 모드로 수행, 여러개의 명령어 수행
RMAN> run {
sql 'alter tablespace insa_tbs offline immediate';
set newname for datafile '/home/oracle1/insa_tbs01.dbf' to '/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf';
restore tablespace insa_tbs;
switch datafile 6;
recover tablespace insa_tbs;
sql 'alter tablespace insa_tbs online';
}
set newname for datafile '절대이전경로' to '새로운 물리적 경로'; : 이전경로에서 디스크가 망가졌다면 사용해야 한다.
switch datafile 6; : 데이터 파일을 control file에서 경로 변경 및 적용
datafile 6 switched to datafile copy
input datafile copy RECID=3 STAMP=1159099310 file name=/u01/app/oracle/oradata/ora11g/insa_tbs01.dbf
=> switch datafile 6; : 데이터 파일을 control file에서 경로 변경 및 적용
#) 테이블 확인
select count(*) from hr.dept_new;
# <ora11g session>
select tablespace_name, file_name,bytes/1024/1024 MB
from dba_data_files;
#) 필요없는 TBS 삭제: insa_tbs, hrm_tbs 삭제
drop tablespace insa_tbs including contents and datafiles;
drop tablespace hrm_tbs including contents and datafiles;
#) 삭제되었는지 확인
select tablespace_name, file_name,bytes/1024/1024 MB
from dba_data_files;
#) rman 접속
report obsolete; => 정책상 필요없는 파일 보여줘!
- 정책상 필요없는 백업 정보, 아카이브 정보 확인
RMAN> report obsolete;
#) backup 확인
RMAN> list backup;
#) 정책상 필요없는 백업 정보 삭제. 아카이브 정보 삭제
RMAN> delete obsolete;
#) backup 정보 확인
RMAN> list backup;
#) 컨트롤 파일이 기억하고 있는 아카이브 정보와 실제 물리적 물리적 아카이브 정보를 체크
RMAN> crosscheck archivelog all;
#) 필요없는 아카이브 정보 출력
RMAN> list expired archivelog all;
#) 필요없는 아카이브 정보 삭제
delete expired archivelog all;
<ora11g session>
select sequence#, name from v$archived_log;
<rman session>
RMAN> list backup;
#) backupset 삭제
#1) 전체 삭제
RMAN>delete backupset;
#2) 부분 삭제
RMAN> delete backupset 1;
#) backupset 7 삭제
RMAN> delete backupset 7;
#) backup 되어있는지 확인
RMAN> report need backup;
#) 백업 받기
=> 전체 데이터 파일, 컨트롤 파일, spfile 백업
RMAN> backup database;
#) bakcup 확인
RMAN> list backup;
#) 정책상 필요없는 파일, 아카이브 파일
RMAN> report obsolete;
<ora11g session>
! ls /home/oracle1/arch1
<rman session>
#) 정책상 필요없는 아카이브 파일 삭제
RMAN> delete obsolete;
#) 아카이브 파일 확인
RMAN> report obsolete;
=> if) (잔재 file)control file 남아있다면?
crosscheck copy;
delete copy;
report obsolete;
#) 아카이브 파일 삭제 되었는지 확인
! ls /home/oracle1/arch1/
select sequence#, name from v$archived_log;
#) backup 확인
RMAN> list backup;
'Backup > RMAN' 카테고리의 다른 글
OS 에서 Backup File 지웠을 경우 (0) | 2024.01.25 |
---|---|
운영 중에 data02.dbf 추가 후 삭제했을 경우 (1) | 2024.01.25 |
백업 받지 않은 tablespace의 데이터 파일 손상되었을 경우 (1) | 2024.01.25 |
모든 Data file 손상 + 새로운 위치로 변경 (1) | 2024.01.24 |
SYSTEM01.dbf 손상되었을 경우 (0) | 2024.01.24 |