익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT위키
검색
데이터베이스 회복
편집하기
IT위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
[[분류:데이터베이스]] ;Database Recovery ;트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업 == 장애의 유형 == * 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황 * 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황 * 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황 == Undo와 Redo == * Undo: 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행 * Redo: 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행하여 복구 수행 == [[데이터베이스 로그|로그 파일]] == * 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스 * 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 존재 * 로그의 구조: <트랜잭션 번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값> * 로그의 타입: START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등 트랜잭션의 연산 타입 * '''로그파일을 이용한 복구''' ** 로그파일에 트랜잭션의 시작(START)과 종료(COMMIT)가 있는 경우 REDO 수행 ** 로그파일에 트랜잭션의 시작(START)은 있고 종료(COMMIT)는 없는 경우 UNDO 수행 == 회복 기법 == === [[로그 기반 회복 기법]]=== * '''지연갱신 회복 기법(Deferred Update)''' ** 트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장 ** 커밋이 발생하기 전까진 데이터베이스에 기록하지 않음 ** 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요 없음(미실행 된 로그 폐기) * '''즉시갱신 회복 기법(Immediate Update)''' ** 트랜잭션 수행 도중에도 변경 내용을 즉시 데이터베이스에 기록 ** 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요 === [[검사점 회복 기법]] === ;Checkpoint Recovery * 장애 발생 시 검사점(Checkpoint) 이전에 처리된 트랜잭션은 회복에서 제외하고 * 검사점 이후에 처리된 트랜잭션은 회복 작업 수행 ** 검사점 이후, 장애 발생 이전에 commit이 완료된 경우 Redo 수행 ** 장애 발생 시점까지 commit되지 못한 경우 Undo 수행 [[파일:검사점 회복 기법.png]] === [[그림자 페이징 회복 기법]] === ;Shadow Paging Recovery * 트랜잭션이 실행되는 메모리상의 Current Page Table과 하드디스크의 Shadow Page Table 이용 * 트랜잭션 시작시점에 Current Page Table과 동일한 Shadow Page Table 생성 * 트랜잭션이 성공적으로 완료될 경우 Shadow Page Table 삭제 * 트랜잭션이 실패할 경우 Shadow Page Table을 Current Page Table로 함 === [[미디어 회복 기법]] === ;Media Recovery * 디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법 * 데이터베이스 내용을 백업, 미러링, RAID등을 통해 별도의 물리적 저장장치에 덤프 * 미디어 장애 시 가장 최근 덤프로 복구하고 로그 파일을 참조해 덤프 이후의 작업 Redo * (Undo는 사용되지 않음) === [[ARIES 회복 기법]] === * '''REDO 중 Repeating history''': 붕괴가 발생했을 때의 데이터베이스 상태를 복구하기 위하여 붕괴 발생 이전에 수행했던 모든 연산을 다시 한번 수행. 붕괴가 발생했을 때 완료되지 않은 상태였던 (진행 트랜잭션)은 UNDO * '''UNDO 중 Logging''': UNDO를 할 때에도 로깅을 함으로써 회복을 수행하는 도중에 실패하여 회복을 다시 시작할 때에 이미 완료된 UNDO 연산은 반복하지 않음 == 같이 보기 == * [[데이터베이스]] * [[데이터베이스 병행제어]]
요약:
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
분류별 보기
일반 IT용어
프로젝트 관리
디지털 서비스
블록체인
인공지능
소프트웨어 공학
운영체제
컴퓨터 구조
자료 구조
데이터 과학
데이터베이스
네트워크
프로토콜
보안
컴플라이언스
개인정보보호
표준
경영학
기업 IT
조직/단체
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록