RMAN 임시경로에서 복구하기
Oracle/Backup & Recovery
rtest 테이블 스페이스를 삭제 한 후 기존 파일 경로 말고 다른 위치에 restore 하고 recover
하는 실습을 해보겠다. 복원 경로를 다른 위치로 지정하는 명령어는
set newname for datafile <번호 또는 경로> to < 새 위치 경로 및 파일명>
그리고 복원 한 후 반드시 Control file의 내용을 switch datafile <파일번호> 명령어로 변경
해야 한다. 이 책에서는 임시 복원 장소를 /data/temp 디렉토리로 하겠다.

1) 현재 상태를 확인 후 파일을 삭제
RMAN> report schema;

using target database control file instead of recovery catalog
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

[oracle@localhost ~]$ rm -f /app/oracle/oradata/testdb/rtest01.dbf
[oracle@localhost ~]$ ls /app/oracle/oradata/testdb/rtest01.dbf
ls: /app/oracle/oradata/testdb/users01.dbf: 그런 파일이나 디렉토리가 없음
2) 임시경로로 파일을 복원 한 후 복구
[oracle@localhost ~]$ mkdir /data/temp <-- 없을 경우 이렇게 새로 만드세요.

[oracle@localhost ~]$ rman target sys/oracle

Recovery Manager: Release 11.2.0.2.0 - Production on Sun Aug 18 02:37:43 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: TESTDB (DBID=2581382545)

-- 파일을 복원하기 전에 복원할 경로를 먼저 지정해 준 후에 restore 명령을 내림
-- 작업형 명령어로 복구를 하겠습니다.


RMAN> run {
2> sql 'alter tablespace rtest offline immediate' ;
3> set newname for datafile '/app/oracle/oradata/testdb/rtest01.dbf'
4> to '/data/temp/rtest01.dbf';
5> restore tablespace rtest;
6> switch datafile 6; <- 이 파일번호는 report schema 에서 확인
7> recover tablespace users;
8> sql 'alter tablespace rtest online';
9> }
( 지면 관계상 복구 내용 출력부분은 생략)
위 명령에서 3-4 번줄로 복원하기 전에 미리 경로를 지정 한 후 5번 줄에서 백업된 파일을 새 경로에 복원하고
6번 줄에서 control file 에 있는 경로를 새 경로로 변경해 주는 순서를 꼭 기억해야한다.
사람이 하는 작업과 비교하면 3,4,5 번줄은 새로운 경로로 복사하는 과정이고 6번 줄은 복사 후
alter tablespace rtest rename datafile 하는 과정과 동일.