Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-27
제목 fuzzy bit에 대해서 (datafile의 fuzzy 상태)
fuzzy bit에 대해서 (datafile의 fuzzy 상태)
==========================================

[1] 개요
~~~~~~~~
datafile이 fuzzy라는 것은 해당 file에 대한 checkpoint이후 그 file에
변경사항이 있을 수 있음을 나타낸다. 즉 그 file에는 반영되지 않은 변경
사항이 redo log file과 buffer cache에만 존재하는 경우를 나타낸다.

이렇게 datafile이 fuzzy 상태인 경우를 setting하여 그러한 상태의
datafile이 존재하는 경우에는 database가 open되는 것을 막는다.

[2] datafile status (fuzzy bit)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
datafile의 fuzzy bit라고 하는 것은 실제 별도의 structure로 관리되는 것은
아니고 datafile header에 datafile의 status를 나타낸다.

datafile에는 10가지 status가 있으며, 그 중 아래 4개의 status가 datafile이
fuzzy 임을 나타내며, 각 status를 bit로 나타내면 특정 하나의 bit가 setting
된 형태이므로 fuzzy bit라고 부른다.

0x01 (0000 0001) : hot backup-in-progress on file (fuzzy file)
0x04 (0000 0100) : online fuzzy because it was online and db open
0x10 (0001 0000) : media recovery fuzzy - file in media recovery
0x40 (0100 0000) : absolute fuzzy - fuzzyness from fule scan

[3] clear marker
~~~~~~~~~~~~~~~~
위에서 설명한 fuzzy 상태에 대해서 online fuzzy, hot backup fuzzy, media
recovery fuzzy, absolute fuzzy라고 부르는데, 앞의 세개에 대해서 fuzzy
상태가 clear되면 관계되는 marker를 redo log file에 기록한다.
online fuzzy의 경우는 end crash recovery marker, hot backup fuzzy의
경우에는 end hot backup marker, media recovery fuzzy에 대해서는 clear
media recovery fuzzy를 redo log 에 기록하고 datafile header에도 반영한다.
이렇게 fuzzy 상태가 종료됨을 나타내는 marker를 redo log file에 기록해
둠으로써, 이후에 redo log file내용을 이용하여 recovery시 datafile의 fuzzy
상태를 이 marker만을 적용함으로써 clear하도록 할 수 있다.

[4] 각 fuzzy 종류 설명
~~~~~~~~~~~~~~~~~~~~~~

(1) hot backup fuzzy
hot backup 시작시에 setting되어 end backup을 만나면 clear된다.
이것은 hot backup 을 통해 backup 받은 file을 이용하여 recover하는 경우
end backup이전 상태까지만 recover하는 것을 막기 위한 것이다.

begin backup end backup recovery 시도
---------|-------------------------|-------------------|---------
1시 5시 10시


예를 들어 오전 1시에 hot backup을 시작하여 5시에 end backup이 된 경우
이후에(예를 들어 10시) 이 file을 이용하여 recover하는 경우 time based로
3시까지만 recover하고자 시도하면 hot backup fuzzy bit가 setting되어
있어서 오류가 난다.
즉, 반드시 end backup이 수행된 5시 이후시점까지 recover가 되어야 하는
것이다. 이것은 hot backup과 end backup 도중 계속해서 그 datafile에
transaction이 반영되기 때문에 resotre한 file이 이미 3시 이후의 4시,5시
까지의 변경사항을 일부 포함할 수 있기 때문이다.

end backup marker는 hot backup시에 end backup 명령이 수행되면 hot backup
fuzzy bit가 clear되면서 redo log file내에 기록된다. 이후에 이 hot backup된
datafile을 이용하여 recover하는 경우 그 backup된 datafile의 status는
hot backup fuzzy bit가 setting된 상태이며, 이 bit는 redo log file
(혹은 archive file)내에 기록된 end backup marker를 만나면 clear된다.

(2) online fuzzy
database가 open되고 datafile이 online상태가 되면 이 bit가 설정된다.
그리고 database가 정상적으로 shutdown 되거나 recovery시 media recovery가
성공적으로 끝나면 clear된다. 또한 tablespace를 offline normal하거나
read only로 변경시키는 명령에 의해 clear된다

online fuzzy가 필요한 경우를 다음 예를 통해 살펴본다.

- 1시 : db crash
- 1시 10분: 사용자가 crash된 datafile을 os image backup
- 1시 20분: db startup (crash recovery자동 수행으로 정상 open)
- 2시 : disk failure
1시 10분에 crash된 채로 받은 backup만이 존재
archive log mode

이때 만약 사용자가 1시 10분에 받은 비정상적인 backup을 이용하여 recovery
를 수행하는 경우를 가정해보자. 이 datafile의 backup은 online fuzzy bit이
setting상태 그대로이다. 실제 여기에서 datafile은 1시 20분의 crash
recovery에 의해 online fuzzy가 clear되었기 때문이다.

이때 만약 recovery시에 until time 으로 1시 15분을 지정한다면 이
datafile은 여전히 online fuzzy bit가 설정된 상태이기 때문에 database가
open이 될 수 없다.
만약 until time을 1시 20분 이후로 지정하게 되면 1시 20분에 생성된
end-crash recovery marker가 datafile에 적용되어 online fuzzy bit는 clear
되게 되어 이 부분으로 인해 db가 open되지 않는 일은 없게 된다.

(3) media recovery fuzzy
file에 media recovery가 진행중임을 나타낸다. 각 file마다 media recovery가
시작될 때 설정되었다가, file의 stop SCN을 만나거나 recovery가 정상적으로
끝나게 되면 clear된다.
media recovery시 archive file에 기록된 변경사항이 바로 disk에 반영되는 것이
아니고 일단 archive file의 내용을 buffer 에 읽은 후 반영하는 것이기 때문에,
변경사항의 일부는 buffer에만 존재할 수 있게 된다. 그래서 media recovery가
끝날 때까지는 fuzzy상태가 되는 것이다.
이렇게 recovery fuzzy bit를 설정함으로써, 이미 한 session에서 recovery를
진행하는 동안 다른 session에서 database를 open하려고 시도하면, recovery
중임을 알고 open하지 못하도록 하는 것이 가능하다.

(4) absolute fuzzy
이 fizzy 상태는 RMAN사용시에만 이용된다. absolute fuzzy SCN은 datafile의
checkpoint이후 그 datafile의 모든 block들의 모든 SCN중 가장 큰 값이다.
이 absolute fuzzy flag는 file의 checkpoint로 인해 checkpoint SCN이
이 absolute fuzzy SCN이상의 값으로 되면 clear된다
Comment
등록된 코멘트가 없습니다.