Database초보우낙

35. Rman을 사용하지 않고 백업본이 없을 때 복구하는 방법 본문

백업과 복구/백업과 복구(Rman)

35. Rman을 사용하지 않고 백업본이 없을 때 복구하는 방법

오운학 2024. 4. 23. 17:32

rmf;a설명:

백업을 받지않은 Data file 손상되었을 복구방법은 먼저 파일을 하나 만들고 여기에 아카이브 로그 파일을 적용해서 복구를 하면 된다

파일명은 기존파일명과 다르게 지어주면 된다

 

 

실습 :순서

#1. ts07이라는 테이블 스페이스를 생성

#2. scott유저로 접속해서 ts07테이블 스페이스에 emp07 테이블 생성

#3. emp07테이블에 데이터를 입력하고 로그 스위치를 일으킨다(3번반복)

#4. ts07 테이블 스페이스를 shutdown immediate(백업 x)

#5. os에서 ts07.dbf 삭제(백업본 없이 삭제)

#6. startup   <------mount에서 멈춤

#7.  복구해야할 파일 조회

#8. ts07.dbf 위한 빈껍데기파일을 생성

#9. 복구해야할 파일을 조회

#10. 일단 DB OPEN시키기 위해서 문제가 해당 데이터 파일을 offline 시킨다

#11. open 으로 DB 올린다

#12. ts07 테이블 스페이스를 recover

#13. 복구된 data file online

#14. scott유저에서 emp07 테이블이 조회되는지 확인

 

 

실습 : 구현

#1. ts07이라는 테이블 스페이스를 생성

create tablespace ts07 datafile '/u01/app/oracle/oradata/Ouh/ts07.dbf' size 10m;

 

 

#2. scott유저로 접속해서 ts07테이블 스페이스에 emp07 테이블 생성

connect scott/tiger

 

create table emp07

(empno number(10),

ename varchar2(20) )

tablespace ts07;

 

#3. emp07테이블에 데이터를 입력하고 로그 스위치를 일으킨다(3번반복)

insert into emp07(empno,ename) valuse(1111,'aaa');

insert  into  emp07  values(1111,'aaa' );

insert into emp07 values(1111,'aaa');

commit;

alert system switch logfile;

 

 

 

 

#4. ts07 테이블 스페이스를 shutdown immediate(백업 x)

 

 

#5. os에서 ts07.dbf 삭제(백업본 없이 삭제)

 

#6. startup   <------mount에서 멈춤

 

#7.  복구해야할 파일 조회

select  * from v$recover_file;

 

#8. ts07.dbf 위한 빈껍데기파일을 생성

alter  database  create   datafile  '/u01/app/oracle/oradata/Ouh/ts07.dbf' 

  as  '/u01/app/oracle/oradata/Ouh/ts07b.dbf';

 

#9. 복구해야할 파일을 조회

select  * from v$recover_file;

 

 

 

 

#10. 일단 DB OPEN시키기 위해서 문제가 해당 데이터 파일을 offline 시킨다

방법1

alter database datafile '/u01/app/oracle/oradata/Ouh/ts07b.dbf' offline;

 

방법2

alter database datafile 14 offline;

 

#11. open 으로 DB 올린다

alter  database  open;

#12. ts07 테이블 스페이스를 recover

recover   tablespace   ts07;

 

#13. 복구된 data file online  --> 경로가 아닌 파일번호로도 가능

alter  database  datafile  '/u01/app/oracle/oradata/Ouh/ts07b.dbf'  online;

 

#14. scott유저에서 emp07 테이블이 조회되는지 확인


 

 

문제1. 테이블 스페이스 3 생성

create tablespace ts81 datafile '/u01/app/oracle/oradata/Ouh/ts81.dbf' size 5m;

create tablespace ts82 datafile '/u01/app/oracle/oradata/Ouh/ts82.dbf' size 5m;

create tablespace ts83 datafile '/u01/app/oracle/oradata/Ouh/ts83.dbf' size 5m;

 

문제2.  scott 유저로 접속해서  위의 테이블 스페이스 3개에  테이블을 각각 3개를 생성하시오

create table emp81

tablespace ts81

as

select * from emp;

 

 

create table emp82

tablespace ts82

as

select * from emp;

 

 

create table emp83

tablespace ts83

as

select * from emp;

 

 

문제3. 로그 스위치를 3번일으키고 체크포인트를 일으키세요

 

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

 

alter system checkpoint;

 

 

문제4. shutdown immediate하고 os에서 ts81.dbf  ts82.dbf 삭제하세요

 

conn /as sysdba

 

shutdown immediate

 

exit

oradata

rm ts81.dbf

rm ts82.dbf

 

문제5. 복구를 하고 나서 emp81 emp82테이블이 잘조회되는지 확인하세요

 

startup   <--mount에서 멈춤

--복구할 파일 조회

select  * from v$recover_file;

 

--테이블생성

alter  database  create   datafile  '/u01/app/oracle/oradata/Ouh/ts81.dbf' 

  as  '/u01/app/oracle/oradata/Ouh/ts81b.dbf';

 

alter  database  create   datafile  '/u01/app/oracle/oradata/Ouh/ts82.dbf' 

  as  '/u01/app/oracle/oradata/Ouh/ts82b.dbf';

 

 

--복구해야할 파일을 조회

select  * from v$recover_file;

 

 

 

 

alter database datafile '/u01/app/oracle/oradata/Ouh/ts81b.dbf' offline;

alter database datafile '/u01/app/oracle/oradata/Ouh/ts82b.dbf' offline;

-- open 으로 DB 올린다

alter  database  open;

-- recover 시켜주기

recover   tablespace   ts81;

recover   tablespace   ts82;

 

--복구된 data file online

alter  database  datafile  '/u01/app/oracle/oradata/Ouh/ts81b.dbf'  online;

alter  database  datafile  '/u01/app/oracle/oradata/Ouh/ts82b.dbf'  online;