[miner commit ]

select timestamp, username, operation, sql_redo

from v$logmnr_contents

where seg_name='TT100'

or operation ='COMMIT'

and timestamp > '2015-03-31:09:59:34'

and timestamp < '2015-03-31:10:03:22'; 






◎ 장애의 종류 


① 물리적장애: H/W, File 장애등

② 논리적 장애: 사용자의 실수 


  ※ 논리적 장애: oracle이 보았을때 문법적으로 문제는 없으나 특정 시점 까지 복구해야만 하는 장애 


  ※ 장애가 일어난 Data File 만 바꾸는 것이아닌 백업 Data File 전부 옮겨 주어야함

      why: 데이터 파일 간의 SCN을 맞추어 주기 위해 ★★




    

◎ 논리적 장애



  

□ (drop user , truncate table , drop table, delete, update 후 commit) 명령 복구 절차      

개념 :현재시점의 Control ,Redo log File(Archive) 참조 백업 Dataf File의 특정 시점 복구 


     ① DB 종료 한다 

② 새로 작업할 폴더를 생성한다 

③ backup 에서 모든 데이터 파일을 복새해서 새로 작업할 폴더에 넣어준다 

④ 지금까지 사용중이던 log와 control 파일을 넣어준다 

⑤ parameter 의 내용중 control 파일의 경로를 새로운 작업할 폴더로 수정

⑥ mount 상태로 startup

⑦ control File 내에 datafile, log 파일 경로 바꾸어주기 

--필요하면 miner를 통해 log파일에서 시간을 빼와야함....ㄷㄷㄷ--

⑧ recover database until time ___ 복구하기 

⑨ resetlogs 로 log파일을 다시 초기화 (control 파일 , datafile ,redo log SCN 맞추어줌) 

    → 1번에 성공 해야함 

⑩ 확인

        

※ resetlogs 를 통해 낮은 번호의 Datafile으로 Control , Redo log(초기화)의 SCN을 맞추는것 


★★★ 절대로 원본과 backup은 건들지 말고 작업할것 


[잘못된 update 상황 만들기]

① DB 끄고 전체 백업받기 

② 테스트용 테이블 생성 

   create table scott.tt820(

no number,

name varchar2(10))

tablespace users;

)


insert into scott.tt820 values(1,'AAA');

insert into scott.tt820 values(2,'BBB');

insert into scott.tt820 values(3,'CCC');


select * from scott.tt820 ;

commit; 


시간 체크하기

select to_char(sysdate,'YYYY-MM-DD:HH24:MI:SS') from dual;


save time.sql;


③ 잘못된 update 명령 치기 

update scott.tt820

set name ='DDD';

commit;

④ shut down 하기 

⑤ /data/temp 만들어 주기 

⑥ /data/backup/close 에있던 dbf 파일은 전부 옮기기 

⑦ /app/oracle/oradate/testdb/control , redo 옮겨주기 

⑧ parameter 에 control 경로를 /data/temp로 바꾸어 주기 


⑨ start up mount 

⑩ control내에 data file 경로 바꾸어 주기 

   alter database rename

    file '/app/oracle/oradata/testdb/undotbs01.dbf'

    to '/data/temp/undotbs01.dbf';

    ed

    고치고 

    wq!

    안쓰는 datafile은 이렇게 해줌 

    alter database datafile '/data/temp2/example01.dbf' offline drop;

 

⑪  복구 시점으로 돌아가기 

    recover database until time '2015-03-30:10:05:28';

Recovery of Online Redo Log: Thread 1 Group 2 Seq 17 Reading mem 0

  Mem# 0: /data/temp/redo02_a.log

  Mem# 1: /data/temp/redo02_b.log

Incomplete Recovery applied until change 1608712 time 03/30/2015 10:06:17

Media Recovery Complete (testdb)

Completed: ALTER DATABASE RECOVER  database until time '2015-03-30:10:05:28'


⑫ alter database open resetlogs;



□ (drop tablespace, drop tablespace(백업 X) ) 복구 절차  

  개념 : drop tablespace에 경우 control 파일 안에 있는 Tablespace의 정보를 제거 하기 때문에 

  현재의 Control File을 사용하지 못함 

  복구 파일에서 Control, Data File 을 가져 와서 Redo log의 Scn 까지 복구 해야하는데 예전 Control 이라서 

  SCN 정보가 예전것이기 때문에 이것을 무시하는 옵션을 준 다음 복구 

     

    ★★※ Drop Tablespace 의경우 Alter log File 에 기록이됨.

            Control File 의경우 반드시 장애 이전에 것을 사용해야함 



① tablespace를 1개 만든 후 DB 종료 한다 

② 백업을 다 받는다 

   (backup control file에 datafile에 대한 정보가 있어야 하기 때문)

③ 테이블 space에 테이블 생성, 데이터를 입력 한뒤에 

   테이블 space 삭제한다 

④ DB 종료 시킨다. 

⑤ 새로 작업할 폴더를 생성한다

   backup 에서 모든 Data File, Comtrol File 복새해서 새로 작업할 폴더에 넣어준다

   기존에 있던 것에서 Redo log 만 복사해서 작업할 폴더에 넣어준다. 

⑥ parameter 의 내용중 control 파일의 경로를 새로운 작업할 폴더로 수정

⑦ mount 상태로 startup

⑧ control File 내에 datafile, log 파일 경로 바꾸어주기 

⑨ Alter log 확인 해서 삭제 시간 파악 하기 

⑩ recover database until time '2015-03-31:06:14:12' using backup controlfile;

⑪ 현재 시퀀스 번호에 있는 log 파일을 적용하기 

⑫ 확인




create tablespace testdrop

datafile '/app/oracle/oradata/testdb/testdrop.dbf' size 20M;

create table scott.tt100(no number)tablespace testdrop

insert into scott.tt100 values(1);

drop tablespace testdrop including contents and datafiles;



[alter log]

Tue Mar 31 06:14:14 2015

drop tablespace testdrop including contents and datafiles

Deleted file /app/oracle/oradata/testdb/testdrop.dbf

Completed: drop tablespace testdrop including contents and datafiles

Tue Mar 31 06:14:25 2015


[에러 화면]

SQL> recover database until time '2015-03-31:06:14:12' using backup controlfile;

ORA-00279: change 1614940 generated at 03/31/2015 06:09:57 needed for thread 1

ORA-00289: suggestion : /data/arc2/48_1_875679879.arc

ORA-00280: change 1614940 for thread 1 is in sequence #48



Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/data/temp2/redo03_a.log

Log applied.

Media recovery complete.



[화면]

SQL> @log


GROUP# MEMBER                                          MB SEQ# STATUS   ARC

------ --------------------------------------------- ---- ---- -------- -----

     1 /data/temp2/redo01_a.log                        50   46 INACTIVE YES

     1 /data/temp2/redo01_b.log                        50   46 INACTIVE YES

     2 /data/temp2/redo02_a.log                        50   47 INACTIVE YES

     2 /data/temp2/redo02_b.log                        50   47 INACTIVE YES

     3 /data/temp2/redo03_a.log                        50   48 CURRENT  NO

     3 /data/temp2/redo03_b.log                        50   48 CURRENT  NO






1. archive log 모드로 설정하기 

2. 전체 닫힘 백업 받기

3. sys 계정으로 로그인이 되도록 바꾸기 

4. 암 호가 없도록 설정 하고 

5. open 상태가 되도록 기다리기 


192.168.15.1112

255.255.0.0

192.168.0.1    GW 

168.126.63.1  DNS




[테스트 할 수 있는 스크립트]







Posted by 히드라야
,