Redo Log Buffer Update ์ฐธ์กฐ๊ธ
redo.log
ORACLE_BASE ์๋ oradata ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณด๋ฉด redo.log ํ์ผ๋ค์ด ์์ต๋๋ค. ์ด ํ์ผ๋ค์ Recovery ์์ ์ ํ๊ธฐ ์ํด Oracle์ Background Process์ธ LGWR(Log Writer)๊ฐ ์์๋ก ์ ๋ ฅํด์ฃผ๊ณ ์๋ ํ์ผ์ ๋๋ค.
Oracle Database
Oracle Database์ ๊ตฌ์กฐ๋ ํฌ๊ฒ 3๊ฐ์ง ๊ตฌ์ฑ์์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
1. Control File
DB์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
ex) /d1/a.dbf 100M
/d2/b.dbf 500M
...
...
/d5/redo01.log
/d6/redo02.log
...
2. DB File
์ค์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
3. Redo Log File
Redo Log Buffer๊ฐ ๊ธฐ๋กํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ผ๋ก ์ ์ฅํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ Redo Log File์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
LGWR(Log Writer)
LGWR์ LOG BUFFER์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ก๊ทธํ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค. ๊ทธ ๋ก๊ทธ ํ์ผ์ด ์์์ ๋ณธ redo.logํ์ผ์ด๊ณ ๊ณ์ ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ง๋ค ๊ฐฏ์๊ฐ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ณธ 2๊ฐ๋ ์์ด์ผํฉ๋๋ค. ์ง๊ธ ๋ถํฐ ๊ฐ ํ์ผ์ ๊ทธ๋ฃน์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
Log Sequence Number
๊ฐ ๊ทธ๋ฃน์๋ ์์ฐจ์ ์ธ ๋ฒํธ๊ฐ ์์ต๋๋ค. ์ด ๋ฒํธ๋ LGWR ํ๋ก์ธ์ค๊ฐ ๋ฎ์ ๋ฒํธ์ ๊ทธ๋ฃน์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ๋๊ธฐ๋ ํ์ง๋ง, Database Buffer Cache์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ์ผ๋ง๋ DB File์ ์ ์ฉ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๋ฒํธ์ด๊ธฐ๋ ํฉ๋๋ค. ์ฆ, ๋น์ ์์ ์ธ ์ข ๋ฃ๋ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ ํ๋ณตํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
Log Switch Event
๊ณ์ํด์ ๊ทธ๋ฃน1์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๊ธฐ๋กํ๋ฉด ์ธ์ ๊ฐ๋ ๊ธฐ๋กํ ๊ณต๊ฐ์ด ๋ถ์กฑํ๊ฒ๋ ์๊ธฐ๊ฐ ์ต๋๋ค. ์ด๋ Log Switch๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋๋ฐ, ๋ค๋ฅธ ๊ทธ๋ฃน์ผ๋ก ๋์์ ๋ณ๊ฒฝํ์ฌ ๊ธฐ๋กํ๋ ๊ฒ ์ ๋๋ค. Log Switch Event๊ฐ ๋ฐ์ํ๋ฉด Checkpoint Event๋ผ๋ ๊ฒ์ด ๋ฐ์ํฉ๋๋ค.
Checkpoint ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด์ ์ฌ์ฉํ๊ฒ๋๋ ๊ทธ๋ฃน์ Log Sequence Number๋ฅผ ์ด์ ์ ์ฌ์ฉํ๋ ๊ทธ๋ฃน์ ๋ฒํธ๋ณด๋ค ํ๋ ๋์ ๋ฒํธ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
Checkpoint Event
Checkpoint Event๋ DBC ๋ฉ๋ชจ๋ฆฌ์ ๋ณ๊ฒฝ๋ ์ ๋ณด๋ฅผ ์ค์ ๋ฌผ๋ฆฌ DB File์ ์ ์ฉํ๋ ์ด๋ฒคํธ์ ๋๋ค. ๊ทธ๋ผ Checkpoint Event๊ฐ ์๋ฃ๋๋ฉด redo log file๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ด ์ง๋ฌธ์ ํ๋ ์ด์ ๋ redo log file์ ํ๋ณต์ ์ํด ์ฌ์ฉ๋๋๋ฐ ๋ง์ฝ DBC์ DB File์์ ์๋ ๋ด์ฉ์ด ์ผ์นํ๋ค๋ฉด ๊ทธ๋ฃน1์ ๋ด์ฉ์ ๋ ์ด์ ํ์ ์๋ ๋ด์ฉ์ด์ง ์์๊น์?
Checkpoint๊ฐ ์ ์ง ๋์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์ด์ ๋ด์ฉ์ ํ์ ์๊ฒ๋๋ฒ๋ฆฝ๋๋ค. RPG๊ฒ์์ ํ๋ค๊ฐ ์ ์ฅํ๊ฒ ๋๋ฉด ์ ์ฅํ ์์ ์ผ๋ก์ ๋ฐ์ดํฐ๋ง ํ์ํ์ง ๋ ์ด์ ์ด์ ์ ์ ์ฅ๋ด์ฉ์ด ํ์ ์๋ฏ์ด, ์์ด๋ ๋๋ ๋ก๊ทธ๋ด์ฉ์ด ๋๋ฒ๋ฆฝ๋๋ค.
Log File Full
Checkpoint์ ์ ์ง์ผ๋ก ๋ ์ด์ ํ์์๊ฒ๋๋ฒ๋ฆฐ Group1์ ๋ด์ฉ์ ์์ ์ด๋ฏธ์ง์ ์ด์ด์ ์๊ฐํด๋ณด๊ฒ ์ต๋๋ค. ๋ง์ฝ group1์ ์ ๋ถ ์ฌ์ฉํ๊ณ Log Switch๊ฐ ๋ฐ์ํด์ Group2์๋ค ๊ธฐ๋กํ๋ค๊ฐ Group2๊น์ง ๋ ์ด์ ๊ธฐ๋กํ ๊ณต๊ฐ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
Checkpoint Event๊ฐ ๋ฐ์ํด์ Log Switch Event๊ฐ ๋ค์ ๋ฐ์ํ๊ณ ๋ ์ด์ ํ์์๋ ๋ด์ฉ์ด ๋์ด ๋ฒ๋ฆฐ Group1์ Overwriteํ์ฌ ๊ธฐ๋ก์ ๊ณ์ํฉ๋๋ค.
๊ทธ๋ผ Log Switch๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ Checkpoint Event๊ฐ ๋๋์ง ์์์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น์? ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๊ธฐ๋ค๋ ค์ผํฉ๋๋ค.
Checkpoint ํ๋ฆ
1. Log Switch ๋ฐ์ --> Checkpoint Event
Log Switch ๋ฐ์
2. Checkpoint Event
DBC ๋ฉ๋ชจ๋ฆฌ์ ๋ณ๊ฒฝ ๋ด์ฉ์ DB File์ ์ ์ฉํ๊ณ ์์ ์ด ๋๋๋ฉด CKPT์๊ฒ ๋๋ฌ๋ค๊ณ ์ ํธ๋ฅผ ์ค๋๋ค.
3. Control File ๊ธฐ๋ก
Control File์ Checkpoint SCN์ ๊ธฐ๋กํฉ๋๋ค.
4. DB File Header ๊ธฐ๋ก
๋ชจ๋ DB File Header์ Checkpoint SCN ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
Checkpoint ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ ํ๋ฆ๋๋ก ๊ณ์ ๋ฐ๋ณตํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ 2๋ฒ์ ์์ ์ด ๋๋์ง๋ ์์๋๋ฐ Log Switch๊ฐ ๋ฐ์ํด์ ๋ค์ Checkpoint Event๊ฐ ๋ฐ์ํ๊ณ ๊ทธ๋ฃน์ 2๊ฐ ๋ฐ์ ์์๋๋ ์ด์ Checkpoint ์์ ์ด ๋๋ ๋๊น์ง ๋๊ธฐํด์ผํฉ๋๋ค.
๋๊ธ