2014년 9월 29일 월요일

[백업/복구]취소 기반 복구(2) [ORACLE/SQL/HINT/오라클/교육/강의/강좌/SQL교육/오라클 PLSQL/강의/강좌/오라클교육/ORACLE초보교육/오라클실무강좌]

취소 기반 복구(2) 

이 예제는 아카이브 로그 파일이 손상된 DB를 복구하는 예제 입니다. 

사용자가 Table의 일부 레코드를 삭제하려다 실수로 몽땅 지우거나 테이블 자체를 날려 버렸다고 할 때의 복구 방법 입니다. 

DBA가 복구를 위해 아카이브 로그를 확인 한 결과 아카이브 로그 파일 중 에서 일부에 오류가 있는 것을 확인한 상태 입니다. (아카이브 로그중 일부가 손상되었거나 삭제 되었으므로 취소 기반 복구를 해야 합니다.) 

------------------------------------------------ 
환경 : Oracle 9.2 윈도우 
데이터파일 위치 : c:\oracle oradata\wink 
아카이브 로그 폴더 : C:\oracle\ora92\database\archive 
Cold backup본이 있는 곳 : C:\backup\oradata\wink 
------------------------------------------------ 

우선 데이터베이스에 대해 cold backup이 되어 있다고 가정 하며 이 백업 방법은 이전 강좌에서 확인 바랍니다. 혹시 cold backup본이 없다면 백업을 실시하기 바랍니다. 

1.        emp table 삭제함으로써 사고를 칩니다. 

  SQL>-- 실습을 위해 아카이브 로그를 삭제하기 전에 아카이브 로그 상태 확인 

SQL> conn / as sysdba 
SQL> select * from v$log_history 

RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# 

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

  304  553772297          1        304      17436043 24-MAR-05    17440051 

  305  553952244          1        305      17440051 24-MAR-05    17468202 

  306  554816661          1        306      17468202 26-MAR-05    17496296 

  307  554826835          1        307      17496296 05-APR-05    17525244 

  308  554840465          1        308      17525244 05-APR-05    17561078 

        현재 SEQUENCE#가 308번 입니다…!! 

        SQL> conn scott/tiger 
Connected. 

SQL> drop table emp; 
Table dropped. 

2.        삭제 후 아카이브 로그를 확인 합니다. 

SQL>select sequence#, to_char(first_time, ‘YYYY-MM-DD HH24:MI:SS’) from v$history; 
    
 SEQUENCE# TO_CHAR(FIRST_TIME, 
--------- ------------------- 
      304 2005-03-24 09:03:24 
      305 2005-03-24 09:03:15 
      306 2005-03-26 11:03:24 
      307 2005-04-05 11:04:20 
      308 2005-04-05 14:04:55   삭제 전에 확인 했을 때 요기까지 있었슴… 
      309 2005-04-05 18:04:05 
      310 2005-04-05 18:04:27 
      311 2005-04-05 18:04:43 
      312 2005-04-05 18:04:58 
      313 2005-04-05 18:04:13 
      314 2005-04-05 18:04:35 

3.        삭제 전에 확인한 이후 생긴 아카이브 로그 파일 중 적당히 하나를 삭제 합니다. 

SQL>-- 저의 경우 310번 SEQUENCR#를 갖는 로그 파일을 삭제 했습니다. 

SQL> host del C:\oracle\ora92\database\archive\001_00310.ARC 

4.        데이터베이스를 종료하고 현재 상태의 데이터 파일을 임시 디렉토리에 백업 

SQL> conn / as sysdba 
Connected. 

SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 

SQL>c:\backup이라는 폴더가 없으면 적당한 곳에 복사 하세요~ 
SQL> host copy c:\oracle\oradata\wink\*.dbf c:\backup\ 

5.        DB를 마운트 상태까지 실행 후 cold backup본을 이용하여 복원(데이터 파일만!) 

SQL> startup mount 
ORACLE instance started. 

Total System Global Area  361831504 bytes 
Fixed Size                  453712 bytes 
Variable Size            343932928 bytes 
Database Buffers          16777216 bytes 
Redo Buffers                667648 bytes 
Database mounted. 

SQL> host copy C:\backup\oradata\wink\*.dbf c:\oracle\oradata\wink 
C:\backup\oradata\wink\AUTO01.DBF 
C:\backup\oradata\wink\CWMLITE01.DBF 
C:\backup\oradata\wink\DRSYS01.DBF 
C:\backup\oradata\wink\EXAMPLE01.DBF 
C:\backup\oradata\wink\INDX01.DBF 
C:\backup\oradata\wink\LOB_DATA1.DBF 
C:\backup\oradata\wink\ODM01.DBF 
C:\backup\oradata\wink\REDO01.DBF 
C:\backup\oradata\wink\REDO02.DBF 
C:\backup\oradata\wink\REDO03.DBF 
C:\backup\oradata\wink\SYSTEM01.DBF 
C:\backup\oradata\wink\TEMP01.DBF 
C:\backup\oradata\wink\TEST01.DBF 
C:\backup\oradata\wink\TOOLS01.DBF 
C:\backup\oradata\wink\UNDOTBS01.DBF 
C:\backup\oradata\wink\users01.dbf 
C:\backup\oradata\wink\XDB01.DBF 
C:\backup\oradata\wink\XDB02.DBF 
      18개 파일이 복사되었습니다. 

6.        recover database until cancel 명령을 이용하여 recovery를 진행 

SQL> -- 아카이브 로그 파일을 입력하라고 하는 데 계속 엔터키를 입력 하다가 위에서 삭제한 001_00310.ARC 파일을 요구하는 경우에는 cancel 이라고 입력 합니다. 

SQL> recover database until cancel 
Specify log: {<RET>=suggested | filename | AUTO | CANCEL} 

ORA-00279: change 17562466 generated at 04/05/2005 18:27:27 needed for thread 1 
ORA-00289: suggestion : C:\ORACLE\ORA92\DATABASE\ARCHIVE\001_00310.ARC 
ORA-00280: change 17562466 for thread 1 is in sequence #310 
ORA-00278: log file 'C:\ORACLE\ORA92\DATABASE\ARCHIVE\001_00309.ARC' no longer 
needed for this recovery 


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

=== 요기에서 cancel 입력 

7.        resetlogs 옵션을 이용하여 데이터베이스를 Open 

SQL>alter database open resetlogs 
Database altered. 

8.        복구가 정상적으로 되었는지 scott/tiger로 접속하여 확인 

SQL>conn scott/tiger 
SQL>select count(*) from emp 

9.        DB를 종료하고 cold backup을 실시 후 복구 이전에 c:\backup에 임시로 저장해 둔 데이터파일을 삭제 

SQL>shutdown immediate 
SQL>host del c:\backup\*.dbf
* 이종철님에 의해서 게시물 이동되었습니다 (2006-06-04 12:24)


 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272022
 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취…오라클자바…12-111478
53 [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… 오라클자바…03-151233
52 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍 오라클자바…01-311392
51 [평일,기업100%환급]SQL기초에서 Schema Object까지 오라클자바…01-311254
50 [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 오라클자바…01-311083
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 오라클자바…01-191395
48 [평일주간,평일야간,주말]안드로이드개발자과정 오라클자바…01-111225
47 [평일야간,주말주간]JAVA,Network&JSP&Spring,MyBatis,Hibernate 오라클자바…01-031724
46 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/웹퍼블리싱… 오라클자바…12-272022
45 [기업100%환급,평일주간]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-191491
44 [평일야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,Jav… 오라클자바…12-141468
43 [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… 오라클자바…12-111478
42 [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 오라클자바…12-091182
41 [평일야간, 주말]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011396
40 [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… 오라클자바…12-011544
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011050

댓글 없음:

댓글 쓰기