제 20 장 오라클에서 회복 및 백업 기능
1. 로그 파일 <트랜잭션번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값> DBMS는 트랜잭션이 수행 중이거나 수행이 종료된 후 발생하는 데이터베이스 손실을 방지하기 위해 트랜잭션의 데이터베이스 기록을 추적하는 로그 파일(log file)을 사용함 로그 파일은 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스. 안전한 하드디스크에 저장되며 전원과 관계없이 기록이 남음 로그 파일에 저장된 로그의 구조 <트랜잭션번호, 로그의 타입, 데이터 항목 이름, 수정 전 값, 수정 후 값> ‘로그의 타입’은 트랜잭션의 연산 타입으로 START, INSERT, UPDATE, DELETE, ABORT, COMMIT 등이 있음. ‘수정 전 값’은 데이터의 변경 전 값을, ‘수정 후 값’은 연산의 결과로 변경된 값을 나타냄 <T1, START> <T1, UPDATE, Customer(박지성).balance, 100000, 90000> <T1, UPDATE, Customer(김연아).balance, 100000, 110000> <T1, COMMIT>
1. 로그 파일 주기억장치 ③ 박지성 트랜잭션 ④ 김연아 ③-1 ④-1 DBMS ① ② ⑤ ⑥ ⑥ 박지성 100000 START TRANSACTION ① /* 박지성 계좌를 읽어온다 */ ② /* 김연아 계좌를 읽어온다 */ /* 잔고 확인 */ ③ /* 예금인출 박지성 */ UPDATE Customer SET balance=balance-10000 WHERE name=‘박지성’; ④ /* 예금입금 김연아 */ SET balance=balance+10000 WHERE name=‘김연아’; COMMIT /* 부분완료 */ ⑤ /* 박지성 계좌를 기록한다 */ ⑥ /* 김연아 계좌를 기록한다 */ 주기억장치 ③ 트랜잭션 박지성 ④ 김연아 ③-1 버퍼 ④-1 DBMS ① ② ⑤ ⑥ ⑥ 박지성 100000 데이터베이스 트랜잭션 로그 파일 김연아 100000 (a) 계좌이체 트랜잭션 (b) 트랜잭션 수행과정 그림 8-13 트랜잭션 수행과 로그 파일
2. 로그 파일을 이용한 회복 시스템 운영 중 장애가 발생하여 시스템이 다시 가동되었을 때 DBMS는 로그 파일을 먼저 살펴봄. DBMS는 트랜잭션이 종료되었는지 혹은 중단되었는지 여부를 판단하여 종료된 트랜잭션은 종료를 확정하기 위하여 재실행(REDO)을 진행하고, 중단된 트랜잭션은 없던 일로 되돌리기 위해 취소(UNDO)를 진행함 트랜잭션의 재실행(REDO) 장애가 발생한 후 시스템을 다시 가동을 했을 때, 로그 파일에 트랜잭션 시작(START)이 있고 종료(COMMIT) 가 있는 경우임. COMMIT 연산이 로그에 있다는 것은 트랜잭션이 모두 완료되었다는 의미. 다만 변경 내용 이 버퍼에서 데이터베이스에 기록되지 않았을 가능성이 있음. 따라서 로그를 보면서 트랜잭션이 변경한 내용 을 데이터베이스에 다시 기록하는 과정이 필요하며, 이 과정을 REDO라고 함 트랜잭션의 취소(UNDO) 장애가 발생한 후 시스템을 다시 가동했을 때, 로그 파일에 트랜잭션의 시작(START)만 있고 종료(COMMIT)가 없는 경우임. COMMIT 연산이 로그에 보이지 않는다는 것은 트랜잭션이 완료되지 못했다는 의미로, 트랜잭션 이 한 일을 모두 취소해야 함. 이 경우 완료하지 못했지만 버퍼의 변경 내용이 데이터베이스에 기록되어 있 을 가능성이 있기 때문에 로그를 보면서 트랜잭션이 변경한 내용을 데이터베이스에서 원상복구시켜야 함. 이 과정을 UNDO라고 함
2. 로그 파일을 이용한 회복 즉시 갱신 방법 즉시 갱신(immediate update)은 ‘갱신 데이터→로그’, ‘버퍼→데이터베이스’ 작업이 부분완료 전에 동시에 진행될 수 있으며, 부분완료가 되면 갱신 데이터는 로그에 기록이 끝난 상태 지연 갱신 방법 지연 갱신(deferred update)은 ‘갱신 데이터→로그’가 끝난 후 부분완료를 하고 ‘버퍼→데이터베이스’ 작업이 진행되는 방법
2. 로그 파일을 이용한 회복 표 8-10 트랜잭션 로그와 회복 방법(즉시 갱신 방법) 로그 번호 작업 결과 i =0 아무 작업도 필요 없음 T1과 T2가 수행을 시작하지 않았음 1 <= i <= 4 UNDO(T1) : T1을 취소 → T1이 i까지 생성한 로그 레코드를 이용하여 데이터베이스 항목을 되돌림 T1을 수행하지 않은 것과 같음 5 <= i <= 9 REDO(T1) : T1을 재수행 → 1부터 4까지 T1이 생성한 로그 레코드를 이용하여 데이터베이스 항목 값을 기록함 UNDO(T2) : T2를 취소 → T2가 5부터 i까지 생성한 로그 레코드를 이용하여 데이터베이스 항목을 되돌림 T1은 수행이 완료됨 T2는 수행하지 않은 것과 같음 10 REDO(T2) : T2를 재수행 T1, T2는 수행이 완료됨
2. 로그 파일을 이용한 회복 표 8-11 트랜잭션 로그와 회복 방법(지연 갱신 방법) 로그 번호 작업 결과 i =0 아무 작업도 필요 없음 T1과 T2가 수행을 시작하지 않았음 1 <= i <= 4 T1 : 아무 작업도 필요 없음 T1을 수행하지 않은 것과 같음 5 <= i <= 9 REDO(T1) : T1을 재수행 → 1부터 4까지 T1이 생성한 로그 레코드를 이용하여 데이터베이스 항목 값을 기록함 T2 : 아무 작업도 필요 없음 T1은 수행이 완료됨 T2는 수행하지 않은 것과 같음 10 REDO(T2) : T2를 재수행 T1, T2는 수행이 완료됨
3. 체크포인트를 이용한 회복 로그를 이용한 회복은 시스템에 장애가 일어났을 때 어느 시점까지 되돌아가야 하는지 알 수 없음. 트랜잭션이 많은 응용의 경우 하루 이상 되돌아가서 복구하는 것은 사실상 불가능. 회복 시 많은 양의 로그를 검색하고 갱신하는 시간을 줄이기 위하여 몇 십 분 단위로 데이터베이스와 트랜잭션 로그 파일을 동기화한 후 동기화한 시점을 로그 파일에 기록해두는 방법 혹은 그 시점을 체크포인트(checkpoint, 혹은 검사점)라고 함 체크포인트 시점에는 다음 작업 진행 주기억장치의 로그 레코드를 모두 하드디스크의 로그 파일에 저장 버퍼에 있는 변경된 내용을 하드디스크의 데이터베이스에 저장 체크포인트를 로그 파일에 표시
3. 체크포인트를 이용한 회복 체크포인트가 있으면 로그를 이용한 회복 기법은 좀더 간단해짐 체크포인트 이전에 [COMMIT] 기록이 있는 경우 아무 작업이 필요 없음. 로그에 체크포인트가 나타나는 시점은 이미 변경 내용이 데이터베이스에 모두 기록된 후이기 때문 체크포인트 이후에 [COMMIT] 기록이 있는 경우 REDO(T)를 진행. 체크포인트 이후에 변경 내용이 데이터베이스에 반영되지 않았으므로 REDO를 진행 체크포인트 이후에 [COMMIT] 기록이 없는 경우 즉시 갱신 방법을 사용했다면 UNDO(T)를 진행. 버퍼의 내용이 반영됐을 수도 있기 때문에 원상복구 시켜야 함. 반면 지연 갱신 방법을 사용했다면 아무것도 할 필요가 없음. 지연 갱신 방법은 [COMMIT] 이전에는 버퍼의 내용을 데이터베이스에 반영하지 않기 때문
3 .체크포인트를 이용한 회복 트랜잭션 T1, T2, T3가 동시에 실행된 후 다음과 같이 로그 기록을 남김. 즉시 갱신 기법을 사용하여 회복을 한다면 REDO(T2), UNDO(T3)가 진행된다. T1에 대해서는 아무 작업이 필요 없음 로그 번호 로그 레코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [T1, START] [T1, UPDATE, B, 200, 120] [T1, UPDATE, C, 300, 310] [T2, START] [T2, UPDATE, A, 110, 120] [T1, UPDATE, A, 120, 110] [T1, COMMIT] [T2, UPDATE. B, 120, 220] [CHECKPOINT] [T3, START] [T3, UPDATE, A, 110, 120] [T2, UPDATE, D, 400, 410] [T2, COMMIT] [T3, UPDATE. B, 220, 230] ~~ 시스템 장애 ~~ 그림 8-16 체크포인트가 포함된 로그 기록
4. 백업과 복원 백업(backup) : 데이터베이스에서도 역시 예상하지 못한 장애에 대비하여 데이터베이스를 복제하여 보관하는 작업 복원(recovery) :장애가 발생하여 운영 중인 데이터에 손상이 발생했을 때 기존에 복사해 둔 백업 파일을 사용하여 원래대로 되돌려 놓는 작업 미디어 오류 사용자 오류 하드웨어 장애
5.백업의 종류 전체 백업 차등 백업 트랜잭션 로그 백업
6. 오라클 백업 방법 물리적 백업 오라클 데이터베이스를 구동하기 위해 필요한 모든 파일(Data File, Redo Log File, Control File 등)을 물리적으로 ‘복사’하는 방법. OS 명령어를 통해 복사함. 콜드 백업 : 데이터베이스를 셧다운(shutdown)한 후에 백업을 진행하는 방법. Offline 백업이라고도 함. 핫 백업 : 운영 중인 데이터베이스의 파일을 복사하는 방법. Online 백업이라고도 함. 논리적 백업 실제 오라클 데이터베이스를 구성하는 물리적 파일을 직접 복사하는 방법이 아닌, 오라클 데이터베이스의 콘텐츠(내용)를 별도의 다른 형태의 파일로 복사함. Export/Import
7. 오라클 논리적 백업
7. 오라클 논리적 백업
7. 오라클 논리적 백업