|
티스토리
RMAN 복구하기검색하기 블로그 홈
오라클/백업/복구
RMAN 복구하기
골커
2014. 11. 14. 16:52
삭제된 파일 복구 방법. ( offline 되는 데이터 파일 삭제된 경우 ) - DB 종료없이 복구
1. 전체 full 백업
2. 파일 삭제
3. 복구
RMAN> sql 'alter tablespace test offline immediate' ; <-- 해당 데이터파일이 속한 테이블 스페이스 offline
RMAN> restore tablespace test ; <-- 백업파일에서 복원 해옴
RMAN> recover tablespace test ; <-- 복구
RMAN> sql 'alter tablespace test online' ; <-- 복구완료후 다시 online
삭제된 파일 복구 방법. ( offline 안되는 데이터 파일 삭제된 경우 ) - DB 종료 후 복구
1. 전체 full 백업
2. 파일 삭제
3. 복구
RMAN> shutdown abort ;
RMAN> restore tablespace system ;
RMAN> recover tablespace database ; <-- 비정상 종료했기때문에 전체 데이터베이스 복구
RMAN> alter database open ;
임시 경로에서 복구하기 - 기존 경로가 아닌 다른 위치로 복구
1. 전체 full 백업
2. 파일 삭제
3. 임시경로로 복원후 복구
RMAN> run {
2> sql 'alter tablespace test offline immediate' ;
3> set newname for datafile '/app/oracle/oradata/testdb/test01.dbf'
4> to '/data/temp/test01.dbf' ;
5> restore tablespace test ;
6> switch datafile 6 ; <-- 이 파일번호는 report schema 에서 확인 할 수 있음 ( 컨트롤파일의 내용변경 )
7> recover tablespace test ;
8> sql 'alter tablespace test online' ;
9> }
3,4 번 줄에서 복원하기전 미리 경로를 지정한 후 5번 줄에서 백업파일을 새로운 경로로 복원, 6번 줄에서 control file 에 있는 경로를 새로운 경로로 변경.
임시 경로에 필요한 데이터 파일만 복원 후 복구하기
1. 전체 full 백업
2. 파일 삭제
3. 임시경로로 복원 후 복구 ( 데이터파일=백업파일, 컨트롤,리두는 현재사용중인 파일 복사)
파라미터 파일의 컨트롤파일 경로 변경
RMAN> run{
startup mount;
sql "alter database rename file ''/data/temp7/redo01_a.log'' <-- 리두 경로 부터 변경
to ''/data/temp/redo01_a.log''";
sql "alter database rename file ''/data/temp7/redo01_b.log''
to ''/data/temp/redo01_b.log''";
sql "alter database rename file ''/data/temp7/redo02_a.log''
to ''/data/temp/redo02_a.log''";
sql "alter database rename file ''/data/temp7/redo02_b.log''
to ''/data/temp/redo02_b.log''";
sql "alter database rename file ''/data/temp7/redo03_a.log''
to ''/data/temp/redo03_a.log''";
sql "alter database rename file ''/data/temp7/redo03_b.log''
to ''/data/temp/redo03_b.log''";
set newname for datafile 1 to '/data/temp/system01.dbf'; <-- 데이터파일중 필요한 파일만 임시 경로로 변경
set newname for datafile 2 to '/data/temp/sysaux01.dbf';
set newname for datafile 3 to '/data/temp/undotbs01.dbf';
sql "alter database datafile ''/data/temp7/users01.dbf'' offline drop" ; <-- 필요없는 파일은 offline drop
sql "alter database datafile ''/data/temp7/example01.dbf'' offline drop" ;
sql "alter database create datafile ''/data/temp7/test01.dbf'' <-- 백업이 없는 삭제된 파일을 신규로 생성
as ''/data/temp/test01.dbf''";
restore tablespace system; <-- 필요한 테이블 스페이스만 복원
restore tablespace sysaux;
restore tablespace undotbs1;
switch datafile all; <-- 파일 위치 변경내용을 control file 에 반영
recover tablespace system; <-- 필요한 테이블스페이스만 복구
recover tablespace sysaux;
recover tablespace undotbs1;
recover tablespace test;
alter database open;
sql "alter database test online";
}
여기 까지 완전 복구 방법
다음부터 불완전 복구
Drop table 후 복구하기 - 임시경로 사용
1. 전체 full 백업
2. drop table 장애 발생
3. DB 종료 후 임시경로에서 복구
->
파라미터 파일의 컨트롤 파일 경로 변경
RMAN> run {
2> startup mount;
3> sql "alter database rename file ''/data/temp7/redo01_a.log''
4> to ''/data/temp/redo01_a.log''";
5> sql "alter database rename file ''/data/temp7/redo01_b.log''
6> to ''/data/temp/redo01_b.log''";
7> sql "alter database rename file ''/data/temp7/redo02_a.log''
8> to ''/data/temp/redo02_a.log''";
9> sql "alter database rename file ''/data/temp7/redo02_b.log''
10> to ''/data/temp/redo02_b.log''";
11> sql "alter database rename file ''/data/temp7/redo03_a.log''
12> to ''/data/temp/redo03_a.log''";
13> sql "alter database rename file ''/data/temp7/redo03_b.log''
14> to ''/data/temp/redo03_b.log''";
15> set newname for datafile 1 to '/data/temp/system01.dbf';
16> set newname for datafile 2 to '/data/temp/sysaux01.dbf';
17> set newname for datafile 3 to '/data/temp/undotbs01.dbf';
18> set newname for datafile 4 to '/data/temp/users01.dbf';
19> set newname for datafile 5 to '/data/temp/example01.dbf';
20> restore database;
21> switch datafile all;
22> sql 'alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"';
23> set until time='2014-11-12:07:41:41';
24> recover database;
25> alter database open resetlogs;
26> }
Drop tablespace 복구하기 - 백업 파일이 있을 경우
테스트용 Tablespace 생성 -> 전체 Full backup -> 예제 데이터 입력후 Tablespace drop 장애 발생 -> 임시 경로로 복구에 필요한 파일 복원 후 복구
Full 백업중 알아둘것!
piece handle = /data/backup/rman/03pndnfs_1_1_full_20141112 tag=TAG20141112T115300 <- 복구에 사용될 백업셋이름
piece handle = /data/backup/rman/04pndnir_1_1_full_20141112 tag=TAG20141112T115300 <- 복구에 사용될 controlfile이름
임시경로로 복구에 필요한 파일 복원 후 복구 ( 파라미터 파일의 controlfile 위치 바꾸고, 현재 사용중인 로그파일만 이동 )
RMAN> run {
startup nomount;
restore controlfile from '/data/backup/rman/07pne4hj_1_1_20141112';
alter database mount;
sql "alter database rename file ''/data/temp3/redo01_a.log''
to ''/data/temp4/redo01_a.log''";
sql "alter database rename file ''/data/temp3/redo01_b.log''
to ''/data/temp4/redo01_b.log''";
sql "alter database rename file ''/data/temp3/redo02_a.log''
to ''/data/temp4/redo02_a.log''";
sql "alter database rename file ''/data/temp3/redo02_b.log''
to ''/data/temp4/redo02_b.log''";
sql "alter database rename file ''/data/temp3/redo03_a.log''
to ''/data/temp4/redo03_a.log''";
sql "alter database rename file ''/data/temp3/redo03_b.log''
to ''/data/temp4/redo03_b.log''";
set newname for datafile 1 to '/data/temp4/system01.dbf';
set newname for datafile 2 to '/data/temp4/sysaux01.dbf';
set newname for datafile 3 to '/data/temp4/undotbs01.dbf';
set newname for datafile 4 to '/data/temp4/users01.dbf';
set newname for datafile 5 to '/data/temp4/example01.dbf';
set newname for datafile 7 to '/data/temp4/rtest04.dbf';
sql 'alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"';
set until time='2014-11-12:12:52:34';
restore database from tag 'TAG20141112T124903';
switch datafile all;
recover database ;
alter database open resetlogs;
}
Drop tablespace 복구하기 - 백업 파일이 없을 경우
DB 전체 Full backup -> 신규 Tablespace 생성후 데이터 생성 -> Drop Tablespace 삭제/ 백업파일 없음 -> Tablespace 복구
1. Full 백업중
piece handle = /data/backup/rman/03pndnfs_1_1_full_20141112 tag=TAG20141112T115300 <- 복구에 사용될 백업셋이름
piece handle = /data/backup/rman/04pndnir_1_1_full_20141112 tag=TAG20141112T115300 <- 복구에 사용될 controlfile이름
2. 신규 테이블스페이스 생성 후 테스트용 테이블 생성하고 시간확인
3. Drop tablespace 수행해서 장애 발생
4. DB 종료 후 임시경로로 필요한 파일 이동 후 복구 ( 현재 사용중인 로그파일만 복사 )
파라미터 파일의 컨트롤 파일 경로 변경
RMAN 에 접속하여 Control File 복원한 후 MOUNT 상태로 변경하여 파일위치 변경 하고 복원
RMAN> run {
2> startup nomount;
3> restore controlfile from '/data/backup/rman/04pndnir_1_1_full_20141112'; <-- 컨트롤파일 복원
4> alter database mount;
5> sql "alter database rename file ''/data/temp/redo01_a.log''
6> to ''/data/temp3/redo01_a.log''";
7> sql "alter database rename file ''/data/temp/redo01_b.log''
8> to ''/data/temp3/redo01_b.log''";
9> sql "alter database rename file ''/data/temp/redo02_a.log''
10> to ''/data/temp3/redo02_a.log''";
11> sql "alter database rename file ''/data/temp/redo02_b.log''
12> to ''/data/temp3/redo02_b.log''";
13> sql "alter database rename file ''/data/temp/redo03_a.log''
14> to ''/data/temp3/redo03_a.log''";
15> sql "alter database rename file ''/data/temp/redo03_b.log''
16> to ''/data/temp3/redo03_b.log''";
17> set newname for datafile 1 to '/data/temp3/system01.dbf';
18> set newname for datafile 2 to '/data/temp3/sysaux01.dbf';
19> set newname for datafile 3 to '/data/temp3/undotbs01.dbf';
20> set newname for datafile 4 to '/data/temp3/users01.dbf';
21> set newname for datafile 5 to '/data/temp3/example01.dbf';
22> sql 'alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"';
23> set until time='2014-11-12:09:12:19';
24> restore database from tag 'TAG20141112T090811';
25> switch datafile all;
26> }
복원 완료 -> 복구 시작
RMAN> run {
2> sql 'alter session set nls_date_format="yyyy-mm-dd:hh24:mi:ss"';
3> set until time='2014-11-12:09:12:19';
4> recover database;
5> }
관리자가 직접 복구할때는 삭제된 데이터파일을 수동으로 생성해 준 후 복구 시도 했지만 RMAN 으로 복구 할때는 자동으로 생성해서 복구 됨
저작자표시 비영리 변경금지
오라클 스터디
골커 님의 블로그입니다.
구독하기
프로필 사진
오라클/백업/복구의 다른 글
RMAN+Clone DB 사용해서 복구
11g는 Targetless Duplicate 기능으로 target DB에 접속하지 않고 Backpset 과 Archive log 파일만을 이용해 CloneDB구성이 가능 1. RMAN 으로 전체 데이터베이스 백업[oracle@localhost~] $ rman target / RMAN> backup as compressed backupset format '/data/rman/%U_%T' database ; 2. test 테이블 생성 및 drop[oracle@localhost~] $ sqlplus / as sysdbaSYS> create table scott.test 2 (no number, 3 name varchar2(10)) ; SYS> insert into scott.test values(1, '김효..
공감수1 댓글수0 2014. 11. 17.
TTS(Transportable Tablespace) Migration
TTS Migration 서로 다른 DB간 Tablespace단위로 Datafile을 migration 할 수 있는 기능 TTS 제약사항 - 10g 이전 버전에서는 원본과 대상이 동일 platform일 경우 migration 가능 - 동일 블록 사이즈 사용 - system, undo, sysaux, temp tablespace 는 지원 불가능 - asm 사용시 rman을 사용해 변환 작업을 거쳐야 함 - standard edition 에서는 지원안됨 Oracle 8i Oracle 9i Oracle 10g blcok size 동일 달라도 됨 달라도 됨 platform (os) 동일 동일 달라도 됨 character set 동일 동일 동일 - character set, block size, platform ..
공감수1 댓글수1 2015. 7. 24.
RMAN
RMAN ( Recovery Manager ) : 백업과 복구를 위한 전용 유틸리티- 관리자가 RMAN 에게 명령하면 RMAN 이 알아서 백업/복구 실행 RMAN 의 주요특징 - 자주 실행하는 작업을 스크립트로 저장 : RMAN Recover Catalog Server를 사용할 경우 자주 사용하는 백업 명령어들을 스크립트로 저장한 후 불러서 사용할 수 있음 - 증분 블록 레벨 백업 기능 지원 : 과거 백업 받은 내역을 조사해서 그 기준 백업 이후에 변경된 블록만 찾아서 백업 수행 가능 예 ) 기존 100M 파일에서 10M 만 변경되도 100M 를 백업받아야 하지만 RMAN 은 변경된 10M 만 백업 가능 - 사용되지 않은 블록 건너뛰고 백업 수행 : 총 100M 을 백업 받는다고 사용안한 블록은 건너뛰고