CAFE

오라클 강좌[인서]

Database Recovery

작성자인서|작성시간08.04.16|조회수306 목록 댓글 0

- Fail이 발생하는이유

  • File Loss
  • User Error
  • Application Error
  • Media Failure(Disk + Disk Controller)
  • 잘못된 논리적 흐름에 의한 손상


- Critical vs Noncritical

  • 시스템에 영향을 주지 않는 것들 -> Non Critical
  • 시스템에 영향을 주는 것들        -> Critical
  • 해결책
    • 파일을 새로 생성한다
    • 파일을 재작성한다
    • 백업된 데이터로부터 복구수행한다

- Index의 강점

  • 검색속도를 빠르게한다
  • 제약조건의 강점
  • Index Table Space가 날아갈경우 시스템에 영향을 줄수있다

- Temporary Tablespace가 날아갈경우 복구될 때까지 Query가 안될수 있다

 

- Losing a TEMPFILE

  • 발생이유 : 손상이거나 공간부족
  • 해결책
    • 파일이 날아간 상태에서 DB를 Shutdown 했다가 Startup을 해주면 자동으로 TEMP File이 생성된다. 
    • 수동생성작업
      • ALTER TABLESPACE temp ADD DATAFILE
        '경로/파일이름.dbf' SIZE nM

      • 기존파일은 완전히 물리적으로 삭제
      • ALTER TABLESPACE temp DROP TEMPFILE
        '경로/기존파일이름.dbf';

- Log Group Status

  • CURRENT
    • 현재 LWWR가 Writing 중이다!
    • Log Switch가 발생하면 ACTIVE 상태로 간다
  • ACTIVE
    • Instance Recovery 할때 필요
    • ALTER SYSTEM CHECKPOINT -> Inactive 상태로 바꾼다
  • INACTIVE
    • Instance Recovery에 필요하지 않다
  • UNUSED
    • Clear라는 명령어로 초기됐거나 생성 직후의 상태
    • Clearing_Current : I/O Error가 발생한 상태

- Member가 손상이 됐을경우

  • 논리적 삭제를 하고
    • ALTER DATABASE DROP LOGFILE MEMBER
      '경로/파일이름';
      rm '경로/파일이름';
  • Member 추가준다
    • ALTER DATABASE ADD LOGFILE MEMBER
      '경로/파일이름';
      TO GROUP N

 

- Index의 재생성

  • 대용량의 DB일 경우 상당히 많은 시간이 걸린다. 그래서 다음 옵션들을 이용하면 시간을 조금 절약할수 있다
  • PARALLEL
    • 다중프로세서를 이용해서 병렬작업
  • NOLOGGING
    • 복구정보를 생성할것인것인가, 말것인가
  • NO SORT
    • 정렬을 하지 않는다
  • Index가 손상되었다면 다시 만든것보다 재생성하는 것이 더 빠르다.
    • DATAPUMP로 expdp output을 받아 놓는것도 좋은 방법중 하나다

- Password File

  • REMOTE_LOGIN_PASSWORDFILE 파라미터가 NONE으로 되어 있다면 인증하지 않는다
  • REMOTE_LOGIN_PASSWORDFILE 파라미터가 EXCLUSIVE로 되어 있다면 Share 모드드(1개의 패스워드로 다중 접속) 가능
  • 패스워드 파일을 재생성하는 방법
    • # orapwd file=$ORACLE_HOME/dbs/orapwORCL
      password=SYSPASSWORD entries=n
    • 주의 : NT : orapwSID.ora
               UNIX : orapwSID

 

- Recovery Method

- 사용자에 의한 복구방법

  • File을 직접 이동시키고 관리한다
  • OS의 CP CMD 혹은
  • SQL>Recover
    • datafile    : Only Open에서 해야한다!   
    • database : Only mount에서 해야한다!   -> 전체 DB에 문제가 생겼거나, System TBS가 날아갔을 경우
    • tablespace
    • AUTOMATIC 옵션을 주면 자동으로 Redo Log를 덮어쓴다
    • SQL>SET AUTORECOVERY ON -> 해놓으면 AUTOMATIC 옵션이 자동으로 들어간다

- RMAN에 의한 복구방법

  • RMAN이 갖고 있는 복구기능을 사용해서 관리
  • EM에서 복구 과정을 수행할수도 있다

- EM에 의한 복구방법

  • 유지관리 -> 복구수행
  • 시스템 TBS에 문제가 생겼을 경우에는 직접 RMAN이나 수동으로 작업해야한다

 

- 완전복구와 불완전 복구

  • 완전복구 : 문제 발생시 바로 이전 시점
    • 필수적으로 아카이브가 필요하다!

  • 불완전 복구
    • 불완전한 특정시점(완전한 아키이브까지만)
      • 특정 아카이브에 손상이 생겼을 경우
      • Cancel을 써서 특정한 아카이브 까지만 복구한다
        • ALTER DATABASE OPEN RESETLOGS으로 OPEN 한다
    • Type
      • Tile-based Recovery
      • Cancle-Based Recovery
      • Change-Based Recovery
      • Log Sequence Recover

    • 복구 절차
      • Shutdown
      • Restore
      • Mount The Database
      • Recover Database
      • ALTER DATABASE OPEN RESETLOGS
      • 현재까지의 아카이브로그 삭제
      • Whole/Full Backup 수행

- 복구 시나리오

  • Time Based Recovery
    • DB 종료후 Restore -> MOUNT상태로 가서 -> RECOVER -> RESETLOGS 옵션으로 OPEN

  • Cnacle Based Recovery
    • 현재 Redolog가 다중화 되어 있지 않다
    • Current 상태의 Archive가 날아갔다
    • 약 30분정도의 Data가 날아갔다
    • 이럴경우에는 그냥 다시 수동으로 Data를 입력하는 것이 더 빠를수도있다

    • DB 종료후 Restore -> MOUNT상태로 가서 -> RECOVER DATABASE UNTIL CANCEL로 복구시작후 RESETLOGS 옵션으로 OPEN 한다

  • RMAN을 이용한 불완전 복구 작업
    • LNS_LANG과 LNS_DATE_FORMAT이 지정되어 있지 않은경우 설정해줘야한다
    • SYSDBA 권한을 갖고있는 RMAN 계정으로 접속
    • Mount 상태로 간다 -> 수동으로 다중채널을 할당 -> 모든 Data File을 Restore, RECOVER를 한다. (UNTIL TIME, UNTIL SEQUENCE, INTIL SCN) -> RESETLOGS 옵션으로 OPEN 한다
    • RUN {
      SET INTIL TIME='YYYY-MM-DD-12H:MI:SS';
      RESTORE DATABASE;
      RECOVER DATABASE;
      ALTER DATABASE OPEN RESETLOGS;

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼