1. RMAN으로 복구 하기
RMAN 복구 방법 역시 전통적인 방법과 동일하게 Restore 와 Recovery 라는 개념으로 나뉘게 된다.
Restore 는 백업 파일로부터의 복원이고 Recovery 는 Redo Log / ArchiveLog 를 적용시켜 복구 하는 것임
전통적인 방법과의 차이라면 순서와 원리는 동일하지만 전통적인 방법은 이 과정을 관리자가 수동으로 수행했던 것을
RMAN 유틸리티가 수행한다는 것입니다. 아래에서 자세히 각 Case 별로 어떻게 복구하는 지 살펴 보겠다.
Step 1. 실습을 위해 신규 테이블 스페이스를 생성 후 full backup 을 수행
Step 2. rtest01.dbf 파일을 삭제
Step 3. 삭제된 파일을 복구
1) 독립형 명령어
이번 경우는 Offline 이 안되는 system tablespace 를 삭제 한 후 복구한다.
1 ) 현재 상태 확인 후 system01.dbf 삭제하기
RMAN 복구 방법 역시 전통적인 방법과 동일하게 Restore 와 Recovery 라는 개념으로 나뉘게 된다.
Restore 는 백업 파일로부터의 복원이고 Recovery 는 Redo Log / ArchiveLog 를 적용시켜 복구 하는 것임
전통적인 방법과의 차이라면 순서와 원리는 동일하지만 전통적인 방법은 이 과정을 관리자가 수동으로 수행했던 것을
RMAN 유틸리티가 수행한다는 것입니다. 아래에서 자세히 각 Case 별로 어떻게 복구하는 지 살펴 보겠다.
Step 1. 실습을 위해 신규 테이블 스페이스를 생성 후 full backup 을 수행
SYS>create tablespace rtest 2 datafile '/app/oracle/oradata/testdb/rtest01.dbf' size 10M; Tablespace created. (RMAN으로 접속해서 전체 백업을 수행.) RMAN> backup as compressed backupset database 2> format '/data/backup/rman/%T_full_%U';
Step 2. rtest01.dbf 파일을 삭제
RMAN> report schema; Report of database schema for database with db_unique_name TESTDB List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ---------- -------------------------------------------------- 1 720 SYSTEM *** /app/oracle/oradata/testdb/system01.dbf 2 660 SYSAUX *** /app/oracle/oradata/testdb/sysaux01.dbf 3 354 UNDOTBS1 *** /app/oracle/oradata/testdb/undotbs01.dbf 4 748 USERS *** /app/oracle/oradata/testdb/users01.dbf 5 345 EXAMPLE *** /app/oracle/oradata/testdb/example01.dbf 6 10 RTEST *** /app/oracle/oradata/testdb/rtest01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ---------------- ----------------------------------------------- 1 100 TEMP100 100 /app/oracle/oradata/testdb/temp100.dbf (-- rtest01.dbf 파일을 삭제합니다 --) RMAN> exit Recovery Manager complete. [oracle@localhost ~]$ rm -f /app/oracle/oradata/testdb/rtest01.dbf [oracle@localhost ~]$ ls /app/oracle/oradata/testdb/rtest01.dbf ls: /app/oracle/oradata/testdb/rtest01.dbf: 그런 파일이나 디렉토리가 없음
Step 3. 삭제된 파일을 복구
1) 독립형 명령어
RMAN> sql 'alter tablespace rtest offline immediate' ; RMAN> restore tablespace rtest ; RMAN> recover tablespace rtest ; RMAN> sql 'alter tablespace rtest online' ;2. 작업형 명령어(장애를 한번더 일으켜서 복구)
[oracle@localhost ~]$ rm -f /app/oracle/oradata/testdb/rtest01.dbf [oracle@localhost ~]$ ls /app/oracle/oradata/testdb/rtest01.dbf ls: /app/oracle/oradata/testdb/rtest01.dbf: 그런 파일이나 디렉토리가 없음 [oracle@localhost ~]$ rman target sys/oracle Recovery Manager: Release 11.2.0.2.0 - Production on Sun Aug 18 00:27:31 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: TESTDB (DBID=2581382545) RMAN> run { 2> sql 'alter tablespace rtest offline immediate'; 3> restore tablespace rtest ; 4> recover tablespace rtest ; 5> sql 'alter tablespace rtest online '; 6> }2.Offline 이 안되는 데이터 파일이 삭제된 경우 - DB 종료 후 복구
이번 경우는 Offline 이 안되는 system tablespace 를 삭제 한 후 복구한다.
1 ) 현재 상태 확인 후 system01.dbf 삭제하기
RMAN> report schema; Report of database schema for database with db_unique_name TESTDB List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ---------- -------------------------------------------------- 1 720 SYSTEM *** /app/oracle/oradata/testdb/system01.dbf 2 660 SYSAUX *** /app/oracle/oradata/testdb/sysaux01.dbf 3 354 UNDOTBS1 *** /app/oracle/oradata/testdb/undotbs01.dbf 4 748 USERS *** /app/oracle/oradata/testdb/users01.dbf 5 345 EXAMPLE *** /app/oracle/oradata/testdb/example01.dbf 6 10 RTEST *** /app/oracle/oradata/testdb/rtest01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ---------------- ----------------------------------------------- 1 100 TEMP100 100 /app/oracle/oradata/testdb/temp100.dbf RMAN> exit Recovery Manager complete. [oracle@localhost ~]$ rm -f /app/oracle/oradata/testdb/system01.dbf [oracle@localhost ~]$ ls /app/oracle/oradata/testdb/system01.dbf ls: /app/oracle/oradata/testdb/system01.dbf: 그런 파일이나 디렉토리가 없음2) DB종료 후 재시작하여 에러 확인
[oracle@localhost ~]$ rman target sys/oracle Recovery Manager: Release 11.2.0.2.0 - Production on Sun Aug 18 00:36:19 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. connected to target database: TESTDB (DBID=2581382545) RMAN> shutdown immediate; using target database control file instead of recovery catalog RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of shutdown command at 08/18/2013 00:36:24 ORA-01116: error in opening database file 1 ORA-01110: data file 1: '/app/oracle/oradata/testdb/system01.dbf' ORA-27041: unable to open file Linux Error: 2: No such file or directory Additional information: 3 <--- 정상 종료가 안되는 것이 확인 됩니다. RMAN> shutdown abort; <--- 강제로 비정상 종료를 시킵니다. Oracle instance shut down RMAN> startup connected to target database (not started) Oracle instance started database mounted RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of startup command at 08/18/2013 00:36:42 ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/app/oracle/oradata/testdb/system01.dbf' (system01.dbf 파일이 없어서 open 이 안됩니다.)3) 파일을 복원
RMAN> restore tablespace system ; ( 지면 관계상 복원 내용은 생략합니다. 파일 크기가 커서 오래 걸릴 수도 있습니다 ) RMAN> recover database; <-- 비정상 종료가 되었기에 전체 데이터베이스를 복구합니다. (지면 관계상 복구 내용은 생략합니다) RMAN> alter database open; database opened정상적으로 복구 완료되었다. 위에서는 독립형 명령어로 작업을 했지만 당연히 작업형 명령어로도 가능하다. 직접 해 보시기 바랍니다.
'Oracle > Backup & Recovery' 카테고리의 다른 글
RMAN 임시경로에서 복구하기 (0) | 2014.11.14 |
---|---|
(RMAN) 압축하면서 백업 수행하기(10g, 11g 공통) (0) | 2014.11.13 |
RMAN 증분백업(incremental backup) (0) | 2014.11.13 |
RMAN backup 종류 (0) | 2014.11.13 |
RMAN (Recovery manager) channel 설정 (0) | 2014.11.13 |