논리적 로그 | 변경 전, 후 명령만 저장하여 저장 용량이 작다. 변경 블록의 주소 값을 저장하지 않으므로 롤백 소요 시간이 오래 걸린다. 여러 블록에 insert 수행 중 트랜잭션이 종료되면, 어느 블록까지 변경이 적용되는지 파악 되지 않아 insert 재수행 하여 롤백. | 물리적 로그 | 변경 전, 변경 후 데이터 블록 이미지 저장. 저장 용량이 커짐. |
물리적/논리적 로그 | 변경 전,후 명령, 변경 후 정보 및 변경 블록 주소값 저장. 변경 전 정보가 저장된 언두 블록의 주소 저장. 저장 용량이 작아 빠른 롤백이 보장됨. # 데이터 정합성 유지를 위해 선 로그 기법 적용 ## DML수행 시 데이터 변경 전, 리두 로그 생성. 변경 전 데이터는 언두 세그먼트에 저장. (redo log에는 변경 전,후 명령 / 변경 후 정보 / 변경된 블록 주소 값 / 언두 블록 주소 값 저장됨) ## DBWR이 더티 버퍼를 디스크에 기록 전, LGWR이 먼저 호출되어 리두 버퍼의 정보를 리두 로그 파일에 기록 ## 선 로그 기법 사용으로 DML수행 중 장애 발생 시 복구 가 # 페이지 고정 규칙 : 리두 로그 생성 시 변경하려는 데이터가 저장된 블록의 상태는, 데이터 변경 완료 시 까지 변경되면 안됨 (데이터 정합성) # 논리적 리두 로그 정렬 : SCN순서로 순차적으로 리두 로그 버퍼에 기록됨 # 커밋 시 리두 로그 저장 : 커밋 리두 레코드 생성 후 LGWR 호출하여 리두 버퍼의 내용을 리두 로그 파일에 기록 # 빠른 커밋(Fast Commit) : 커밋 시 변경된 버퍼 캐시를 데이터파일로 내려쓰지 않고, 리두 버퍼의 데이터만 리두 로그 파일로 내려쓰는 방식. |