01B
01B ๊ด๋ จ
๊ธฐ๋ณธ Architecture
์ค๋ผํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฅผ ์ก์ธ์คํ๋ ํ๋ก์ธ์ค ์ฌ์ด์ ๋ฉ๋ชจ๋ฆฌ ์บ์ ์์ญ(SGA)์ด ์๋ค.
- ๋์คํฌ I/O ์ ๋นํด ๋ฉ๋ชจ๋ฆฌ ์บ์ I/O ๋ ๋งค์ฐ ๋น ๋ฅด๋ค.
- ๋ง์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ก์ธ์ค ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ Lock ๊ณผ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ธ SGA ์ ์์นํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ก์ธ์ค๋ฅผ ์ง๋ ฌํ ํ๊ธฐ ์ํ Latch๋ ํ์.
- ์ค๋ผํด์ ๋ธ๋ก ๋จ์๋ก I/O ํ๋ฉฐ, DBWR/CKPT ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์บ์-๋ฐ์ดํฐํ์ผ ๋๊ธฐํ ์ํ.
Database
: ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์งํฉ(Datafile, Redo Log File, Control File...)Instance
: SGA(System Global Area) + ProcessServer Process
: ์ฌ์ฉ์ ๋ช ๋ น ์ฒ๋ฆฌ- Dedicated Server Process: ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ ์ฉ ํ๋ก์ธ์ค, ์ฌ์ฉ์์๊ฒ ํ์ํ ์๋น์ค ์ ๊ณต (SQL ํ์ฑ, ์ต์ ํ, ์คํ, ๋ธ๋ก ์ฝ๊ธฐ, ์ฝ์ ๋ฐ์ดํฐ ์ ๋ ฌ, ๋คํธ์ํฌ ์ ์ก)
- ์ค์ค๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ์ผ์ ๋ง๋๋ฉด OS, I/O ์๋ธ์์คํ , Background Process ๋ฑ์ ์ ํธ๋ฅผ ๋ณด๋ด ๋์ ์ผ์ ์ฒ๋ฆฌํ๋๋ก ์์ฒญ
Background Process
: ๋ค์์ ์ญํ ์ํ
- ๋ฆฌ์ค๋์ ์ฐ๊ฒฐ ์์ฒญ ์ ์๋ฒํ๋ก์ธ์ค๋ฅผ ๋์ฐ๊ณ (Fork) ๋ฉ๋ชจ๋ฆฌ(PGA)๋ฅผ ํ ๋น ํ๋ค.
- ๋น์ฉ์ด ํฐ ์์ ์ด๋ฏ๋ก ์ฑ๋ฅ์ ์ํด Connection Pool ์ ํตํด ์ฌ์ฌ์ฉ ํ์
- ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ธ์ค ํ๋ ๋ค์ค ์ธ์คํด์ค๋ก ๊ตฌ์ฑ
- ๊ณผ๊ฑฐ ๊ณต์ ๋์คํฌ ๋ฐฉ์, ํ์ฌ ๊ณต์ ์บ์ ๋ฐฉ์
- ๊ธ๋ก๋ฒ ์บ์ ๊ฐ๋ : ๋ก์ปฌ ์บ์์ ์๋ ๋ฐ์ดํฐ ๋ธ๋ก์ ์๊ฒฉ ๋ ธ๋์์ ์ ์ก ๋ฐ์
- ๋ค๋ฅธ ์ธ์คํด์ค์ Dirty ๋ฒํผ๋ Interconnect ๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ๊ฐฑ์ ์ํ, OPS ๋ ๋์คํฌ๋ก ์ฐ๊ธฐ ์์ ์ ํ ํ์ (Ping)
ํญ๋ชฉ | ์ค๋ช |
---|---|
count | ์ํ ํ์ |
cpu | CPU ์๊ฐ(์ด) |
elapsed | ์ํ ์๊ฐ(์ด) |
disk | Physical(Disk) Read Block Count / physical reads |
query | Consistent Read Block Count / consistent gets |
current | Current(Dirty) Read Block Count / db block gets |
rows | Record Count |
์ปฌ๋ผ ์๋ฏธ
DB ๋ฒํผ ์บ์
๋ฉ๋ชจ๋ฆฌ ์บ์ ์์ญ(SGA) ์ค ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ณ ๊ฐ๋ ๋ถ๋ถ
๋ธ๋ก ๋จ์ I/O
์ค๋ช
์ค๋ผํด์์ I/O๋ ๋ธ๋ก(Block) ๋จ์๋ก ์ด๋ค์ง
- single block read / multi block read (
Full Scan
,DBWR
) - ํ๋ ๋ ์ฝ๋์ ํ๋ ์ปฌ๋ผ๋ง ์ฝ์ด๋ ์ํ ๋ธ๋ก ์ ์ฒด๋ฅผ ์ฝ์
- ๋ธ๋ก ๊ฐ์
- SQL ์ฑ๋ฅ์ ์ข์ฐํ๋ ๊ฐ์ฅ ์ค์ํ ์ฑ๋ฅ ์งํ
- ์ตํฐ๋ง์ด์ ์ ํ๋จ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์นจ (
INDEX SCAN
/FULL TABLE SCAN
)
๋ฒํผ ์บ์ ๊ตฌ์กฐ
- ํด์ ํ
์ด๋ธ(ํด์ ๋งต)์ SGA ๋ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ.
- ์ฃผ์๋ก๊ณผ ์ ์ฌ - ์ฑ์จ๊ฐ ๊ฐ์ ๊ณ ๊ฐ์ ๊ฐ์ ํ์ด์ง(ํด์ ๋ฒํท)์ ์ ๋ ฌ ์์ด ๊ด๋ฆฌ
- ํด์ ๋ฒํท ๋ด์์ ์ค์บ ๋ฐฉ์ ์ฌ์ฉ (์ฑ๋ฅ์ ์ํด ๊ฐ ๋ฒํท ๋ด ์ํธ๋ฆฌ ๊ฐ์ ์ผ์ ์์ค ์ ์ง ํ์)
- ๋ฒํผ ์บ์๋ ํด์ ํ
์ด๋ธ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ ๋จ - ํด์ ํค ๊ฐ : DBA(Data Block Address)
- ํด์ ํจ์์ DBA ์ ๋ ฅํด ๋ฆฌํด ๋ฐ์ ํด์ ๊ฐ์ด ๊ฐ์ ๋ธ๋ก๋ค์ ๊ฐ์ ํด์ ๋ฒํท์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(ํด์ ์ฒด์ธ)๋ก ๊ตฌ์กฐํ
- ํ์ํ ๋ธ๋ก ์ฃผ์๋ฅผ ํด์ ๋ฒํท์์ ์ค์บ ํ ์์ผ๋ฉด ์ฝ๊ณ , ์์ผ๋ฉด ๋์คํฌ์์ ์ฝ์ด ํด์ ์ฒด์ธ์ ์ฐ๊ฒฐ ํ ์ฝ์
- ๋ฒํผ ํค๋๋ง ํด์ ์ฒด์ธ์ ์ฐ๊ฒฐ ๋จ, ๋ฐ์ดํฐ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๋ฒํผ ๋ธ๋ก์ ์ฐพ์ ์ป๊ฒ ๋จ
์บ์ ๋ฒํผ ์ฒด์ธ
- ๊ฐ ํด์ ์ฒด์ธ์ Latch ์ ์ํด ๋ณดํธ ๋จ
- DB ๋ฒํผ ์บ์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์กด์ฌ ํ๋ฏ๋ก ๋์ ์ก์ธ์ค ๊ฐ๋ฅ ํ๋ฉฐ, ์ก์ธ์ค ์ง๋ ฌํ(Serialization) ๋ฉ์ปค๋์ฆ ํ์ (i.e. Latch)
- Latch ๋ฅผ ํ๋ํ ํ๋ก์ธ์ค๋ง ๊ทธ Latch ์ ์ํด ๋ณดํธ๋๋ ์๋ฃ๊ตฌ์กฐ ์ง์ ํ์ฉ
- Cache Buffers Chains: ํด์ ์ฒด์ธ์ ๋ฒํผ ๋ธ๋ก์ ์ค์บ/์ฐ๊ฒฐ/ํด์ ์์ ๋ณดํธ, ํ๋์ Latch ๊ฐ ์ฌ๋ฌ ํด์ ์ฒด์ธ์ ๋์ ๋ณดํธ
DB๋ฒ์ | Latch ๊ฐฏ์ |
---|---|
9i | 241 ๊ฐ |
10g | 394 ๊ฐ |
11g | 496 ๊ฐ |
DB ๋ฒ์ ๋ณ Latch ๊ฐฏ์
๊ตฌ๋ถ | ํ๋ผ๋ฏธํฐ | ์ฑ | ์ค์ (11g) |
---|---|---|---|
ํด์ ๋ฒํท ๊ฐ์ | _db_block_hash_buckets | 2,097,152 | 8,388,608 |
๋์น ๊ฐ์ | _db_block_hash_latches | 65,536 | 262,144 |
๋์น ๋น ํด์ ๋ฒํท ์ | - | 32 | 32 |
๋ธ๋ก ๋ฒํผ ๊ฐ์ | _db_block_buffers | 836,684 | 3,084,990 |
ํด์ ๋ฒํท ๊ฐ์ / ๋ธ๋ก ๋ฒํผ ๊ฐ์ | - | 2.5 | 2.7 |
ํด์ ๋ฒํท, ๋ธ๋ก ๋ฒํผ, ๋์น ๊ฐฏ์
ํ๋์ ํด์ ์ฒด์ธ์ ํ๋์ ๋ฒํผ๋ง ๋ฌ๋ฆฌ๋ ๊ฒ์ด ๋ชฉํ ์ - ํด์ ์ฒด์ธ ์ค์บ ๋น์ฉ ์ต์ํ
๋ธ๋ก ๋ฒํผ ๋๋น ํด์ ๋ฒํท ๊ฐ์๊ฐ ์ถฉ๋ถํ ๋ง์์ผ ํจ - 2.5๋ฐฐ ?
9i ๋ถํฐ ์ฝ๊ธฐ ์ ์ฉ ์์ ์ cache buffers chains Latch ๋ฅผ Share ๋ชจ๋ ํ๋ ๊ฐ๋ฅ
- SELECT (X), ํ์ํ ๋ธ๋ก์ ์ฐพ๊ธฐ ์ํ ํด์ ์ฒด์ธ ์ค์บ (O)
๋ฒํผ ํค๋์ Pin ์ค์ ์ cache buffers chains Latch ์ฌ์ฉ
- Share ๋ชจ๋ ํ๋ ํ, ์ฒด์ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ ํน์ ๋ฒํผ ํค๋์ Pin ์ค์ ์ Exclusive ๋ชจ๋๋ก ๋ณ
์บ์ ๋ฒํผ LRU ์ฒด์ธ
- ์ฌ์ฉ ๋น๋ ๋์ ๋ธ๋ก๋ค ์์ฃผ๋ก ๋ฒํผ ์บ์๊ฐ ๊ตฌ์ฑ ๋๋๋ก ํจ
- ๋ชจ๋ ๋ฒํผ ๋ธ๋ก ํค๋๋ฅผ LRU ์ฒด์ธ์ ์ฐ๊ฒฐ
- ์ฌ์ฉ ๋น๋ ์์ผ๋ก ์์น ์ด๋
- Free ๋ฒํผ ํ์์ ์ก์ธ์ค ๋น๋๊ฐ ๋ฎ์ ๋ธ๋ก์ ์ฐ์ ๋ฐ์ด๋ (์์ฃผ ์ก์ธ์ค ๋๋ ๋ธ๋ก์ด ์บ์์ ๋ ์ค๋ ๋จ๊ฒ ๋จ)
- cache buffers lru chain Latch ๋ก ๋ณดํธ
- ๋ชจ๋ ๋ฒํผ ๋ธ๋ก์ ๋์ค ํ๋์ LRU ๋ฆฌ์คํธ์ ์ํจ
- Dirty ๋ฆฌ์คํธ : ์บ์ ๋ด ๋ณ๊ฒฝ ๋จ, ์์ง ๋์คํฌ์ ๋ฐ์ ์๋ ๋ธ๋ก ๊ด๋ฆฌ (LRUW ๋ฆฌ์คํธ)
- ๋ณ๊ฒฝ ์ ๋ฆฌ์คํธ์์ ์ ์ ๋์ด
- LRU ๋ฆฌ์คํธ : Dirty ๋ฆฌ์คํธ ์ธ ๋๋จธ์ง ๋ธ๋ก ๊ด๋ฆฌ
- ๋ณ๊ฒฝ ์ Dirty ๋ฆฌ์คํธ๋ก ์ด๋
- Dirty ๋ฆฌ์คํธ : ์บ์ ๋ด ๋ณ๊ฒฝ ๋จ, ์์ง ๋์คํฌ์ ๋ฐ์ ์๋ ๋ธ๋ก ๊ด๋ฆฌ (LRUW ๋ฆฌ์คํธ)
- ๋ชจ๋ ๋ฒํผ ๋ธ๋ก์ ์
์ค ํ๋์ ์ํ์
- Free ๋ฒํผ : ๋น ์ํ ํน์ ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋๊ธฐํ ๋ ์ํ, ์ธ์ ๋ ๋ฎ์ด ์ธ ์ ์์,
- ๋ณ๊ฒฝ ์ Dirty ๋ฒํผ ๋จ
- Dirty ๋ฒํผ : ๋ณ๊ฒฝ ๋์ด ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋๊ธฐํ ํ์ ์ํ, ๋๊ธฐํ ๋๋ฉด Free ๋ฒํผ ๋จ
- Pinned ๋ฒํผ : ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ ์ค์ธ ๋ฒํผ ๋ธ๋ก
- Free ๋ฒํผ : ๋น ์ํ ํน์ ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋๊ธฐํ ๋ ์ํ, ์ธ์ ๋ ๋ฎ์ด ์ธ ์ ์์,
๋ฒํผ Lock
๋ฒํผ Lock์ด๋?
- ํ๋์ cache buffers chains Latch ์ ์ฌ๋ฌ(32) ํด์ ์ฒด์ธ์ด ๋ณดํธ ๋๊ณ ์์ (Latch ๊ฒฝํฉ)
- ๋์์ ๋ฒํผ ๋ธ๋ก ์ ๊ทผ ํ ๊ฒฝ์ฐ ์ ํฉ์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ (์ง๋ ฌํ ํ์)
- ๋ฒํผ ๋ธ๋ก์ ์ฐพ์ผ๋ฉด ๋ฒํผ Lock ์ค์ ํ Latch ํด์ (์ฝ๊ธฐ: Share ๋ชจ๋, ๋ณ๊ฒฝ: Exclusive ๋ชจ๋)
SELECT
๋ฌธ ๋ ๋ธ๋ก ํด๋ฆฐ์์ ํ์ ์ Exclusive ๋ชจ๋ ์ค์ - ์ด๋ฏธ Exclusive ๋ชจ๋๋ก ์ ์ ๋ ์ํ๋ผ๋ฉด ๋ฒํผ ํค๋์ Lock ๋๊ธฐ์ ๋ชฉ๋ก(Waiter List) ๋ฑ๋ก ํ Latch ํด์ - buffer busy waits, ์ ํ ๋ฒํผ Lock ํด์ ์ ๋ฒํผ Lock ํ๋
- ๋ฒํผ ๋ธ๋ก Lock ํด์ ์ Latch ๋ค์ ํ๋ (ํ๊ฐ ๋ธ๋ก ์ฝ๊ธฐ๊ฐ ์ด๋ ๊ฒ ๊ณ ๋น์ฉ)
ํ๋ฒ ๋์น ํ๋ ์ฝ๊ธฐ
๋ธ๋ก ์ฝ์ ๋ ๋๋ถ๋ถ ๋๋ฒ ๋์น ํ๋ (์ฐพ๊ณ Pin ์ค์ , ๋ค์ฐ๊ณ Pin ํด์ ), ํ์ง๋ง ๋ช๋ช ์คํผ๋ ์ด์ ์ ํ๋ฒ๋ง ๋์น ํ๋ - consistent gets - examination
๋ฒํผ ํธ๋ค
- ๋ฒํผ Lock ์ ๋ฒํผ ์ฌ์ฉ์ค์ ํ์ (๋ฒํผ ํค๋์ Pin ์ค์ / Pinned ๋ฒํผ)
- ๋ณ๊ฒฝ ์ ํ๋์ ํ๋ก์ธ์ค๋ง Pin ๊ฐ๋ฅ, ์ฝ๊ธฐ๋ ๋์์ Pin ๊ฐ๋ฅ
- ๋ฒํผ ํธ๋ค(Buffer Handle)์ ๋ฒํผ ํค๋์ ์๋ ์์ ์ ๋ชฉ๋ก(Holder List)์ ์ฐ๊ฒฐ ์์ผ Pin ์ค์
- cache buffer handles ๋์น
- ๊ฐ ํ๋ก์ธ์ค ๋ง๋ค
_db_handles_cached(5)
๊ฐ์ ๋งํผ ๋ฒํผ ํธ๋ค ๋ฏธ๋ฆฌ ํ ๋น - ๋ฏธ๋ฆฌ ํ ๋น๋ ๊ฐฏ์ ์ด์์ ๋ฒํผ ํธ๋ค ์ป์ ๋ ํ์
- ์์คํ
์ ์ฒด ๋ฒํผ ํธ๋ค ๊ฐ์ :
_db_handles
=processes
*_db_handles_cached
- ๊ฐ ํ๋ก์ธ์ค ๋ง๋ค
๋ฒํผ Lock์ ํ์์ฑ
- ํ๊ฐ ๋ ์ฝ๋ ๊ฐฑ์ ๋ ๋ธ๋ก ๋จ์๋ก I/O๋ฅผ ์ํ
- ์ ํฉ์ฑ ์ ์ง๋ฅผ ์ํด ๋ธ๋ก ์์ฒด๋ก์ ์ง์
์ ์ง๋ ฌํ ํด์ผ ํจ
- ๋ธ๋ก ๋ด 10๊ฐ ๋ ์ฝ๋๋ฅผ ์ฝ๋ ์๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๋ณ๊ฒฝ์ด ๋ฐ์ ํ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋จ
- ๋ก์ฐ ๋จ์ Lock ์ค์ ๋ ๋ ์ฝ๋ ์์ฑ ๋ณ๊ฒฝ ์ด๋ฏ๋ก ๋์ ์ํ์ ๋ฌธ์ ๊ฐ ๋จ
- ๋ธ๋ก ํค๋ ๋ณ๊ฒฝ(๋ธ๋ก SCN, ITL ์ฌ๋กฏ ๋ฑ)๋ ๋์ ์ํ์ ๋ฌธ์ ๊ฐ ๋จ (Lost Update ๋ฐ์)
Consistent ๋ชจ๋ ์ฝ๊ธฐ
์ฟผ๋ฆฌ SCN ๊ณผ ๋ธ๋ก SCN ์ ๋น๊ตํด ์ฝ์ด๋ ๋๋ ๋ธ๋ก์ธ์ง ํ์ธ ํ๋ฉด์ ์ฝ๊ธฐ (๋ธ๋ก ์ฝ๋ ๋์ค ๋ธ๋ก ๋ด์ฉ ๋ณ๊ฒฝ ๋์ ๋ถ๊ฐ)
Pin ๋ ๋ฒํผ ๋ธ๋ก
alter system flush buffer_cache;
์๋ ๋ฐ๋ ค ๋์ง ์๋๋ค.alter system set events 'immediate trace name flush_cache';
(9i)
๋ฒํผ Pinning
- ๋ฒํผ๋ฅผ ์ฝ๊ณ ๋์ ๋ฒํผ Pin์ ์ฆ๊ฐ ํด์ ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค Call์ด ์งํ๋๋ ๋์ ์ ์งํ๋ ๊ธฐ๋ฅ
- ๋์น ํ๋ ์์ด ๋ฒํผ๋ฅผ ์ฝ์ผ๋ฏ๋ก ๋ ผ๋ฆฌ ์ฝ๊ธฐ ํ์๊ฐ ๊ฐ์ ๋จ
- ๋ฒํผ Pinning ๋ฐ์ ์ง์
- ์ธ๋ฑ์ค๋ฅผ ์ค์บํ๋ฉด์ ํ ์ด๋ธ์ ์ก์ธ์คํ ๋์ ์ธ๋ฑ์ค ๋ฆฌํ ๋ธ๋ก (์ ํต์ )
- ์ธ๋ฑ์ค๋ก๋ถํฐ ์ก์ธ์ค๋๋ ํ๋์ ํ ์ด๋ธ ๋ธ๋ก (8i)
- NL ์กฐ์ธ ์ Inner ํ ์ด๋ธ์ Lookup ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ๋ฃจํธ ๋ธ๋ก (9i)
- Index Skip Scan ์ ๋ธ๋์น ๋ธ๋ก (9i)
- NL ์กฐ์ธ ์ Inner ํ ์ด๋ธ์ ๋ฃจํธ ์ธ ๋ค๋ฅธ ์ธ๋ฑ์ค ๋ธ๋ก (11g)
- DML ์ํ ์ Undo ๋ธ๋ก
๋ธ๋ก ์ก์ธ์ค ๋ฐฉ๋ฒ | ์ฆ๊ฐ ์์น |
---|---|
๋์น ํ๋ ํ | session logical reads |
๋ฒํผ Pinning ํ | buffer is pinned count |
๋ธ๋ก ์ก์ธ์ค ๋ฐฉ๋ฒ ๋ณ ์ฆ๊ฐ ์์น
- ๋ฒํผ Pinning ์ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค Call (Parse, Execute, Fetch) ๋ด์์๋ง ์ ํจ
- ๋ฒํผ Pinning ์ ํตํ ๋ธ๋ก I/O ๊ฐ์ํจ๊ณผ๋ SQL ํ๋์ ์ค์ ๋ถ๋ถ
- Reorg ๋ฅผ ํตํ ์ธ๋ฑ์ค ํด๋ฌ์คํฐ๋ง ํฉํฐ (๋ฒํผ Pinning) ๊ฐ์ ๊ฐ๋ฅ
Redo
Redo ๊ตฌ๋ถ | ์์ฑ |
---|---|
Online | Redo ๋ก๊ทธ ๋ฒํผ์ ๋ฒํผ๋ง๋ ๋ก๊ทธ ์ํธ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ ํ์ผ, ์ต์ ๋ ๊ฐ ๊ตฌ์ฑ, ๋ผ์ด๋ ๋ก๋น ๋ก๊ทธ ์ค์์นญ ๋ฐ์ |
Archived | Online Redo ๋ก๊ทธ ํ์ผ์ด ์ฌ์ฌ์ฉ ๋๊ธฐ ์ ๋ค๋ฅธ ์์น๋ก์ ๋ฐฑ์ ๋ณธ |
๋ฐ์ดํฐ/์ปจํธ๋กค ํ์ผ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋์ Redo ๋ก๊ทธ ์ํธ๋ฆฌ๋ก์ Redo ๋ก๊ทธ์ ๊ธฐ๋ก
Redo ๋ชฉ์
- Database Recovery
- Cache Recovery (Instance Recovery)
- Fast Commit
- Media Fail ๋ฐ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ ์ํด Archived Redo ๋ก๊ทธ ์ฌ์ฉ
- ์ธ์คํด์ค ๋น์ ์ ์ข
๋ฃ ์ ํ๋ฐ์ฑ์ ๋ฒํผ ์บ์ ๋ฐ์ดํฐ ๋ณต๊ตฌ ์ํด Redo ๋ก๊ทธ ์ฌ์ฉ
- ์ธ์คํด์ค ์ฌ๊ธฐ๋ ์ Online Redo ๋ก๊ทธ์ ๋ง์ง๋ง Checkpoint ์ดํ ํธ๋์ญ์ ์ Roll Forward (๋ฒํผ ์บ์์๋ง ์กด์ฌํ๋ ๋ณ๊ฒฝ ์ฌํญ์ด Commit ์ฌ๋ถ์ ๊ด๊ณ ์์ด ๋ณต๊ตฌ ๋จ)
- Undo ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด Commit ์๋ ํธ๋์ญ์ ์ Rollback (Transaction Recovery)
- ๋ฐ์ดํฐ ํ์ผ์๋ Commit ๋ ๋ณ๊ฒฝ ์ฌํญ๋ง ์กด์ฌ
- Fast Commit ์ ์ํด Redo ๋ก๊ทธ ์ฌ์ฉ
- ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํผ ๋ธ๋ก์ด ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์์ง๋ง Redo ๋ก๊ทธ๋ฅผ ๋ฏฟ๊ณ ๋น ๋ฅด๊ฒ ์ปค๋ฐ ์๋ฃ
- ๋ณ๊ฒฝ ์ฌํญ์ Redo ๋ก๊ทธ์๋ ๋ฐ๋ก ๊ธฐ๋กํ๊ณ , ๋ฒํผ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ-๋์คํฌ ๋๊ธฐํ๋ ๋์ค์ ์ผ๊ด ์ํ
- ๋ฒํผ ๋ธ๋ก์ ๋์คํฌ์ ๊ธฐ๋ก์ Random ์ก์ธ์ค(๋๋ฆผ), Redo ๋ก๊ทธ ๊ธฐ๋ก์ Append ์ก์ธ์ค (๋น ๋ฆ)
- ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํผ ๋ธ๋ก์ด ์์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์์ง๋ง Redo ๋ก๊ทธ๋ฅผ ๋ฏฟ๊ณ ๋น ๋ฅด๊ฒ ์ปค๋ฐ ์๋ฃ
Delayed ๋ธ๋ก ํด๋ฆฐ์์
- ๋ก์ฐ Lock ์ด ๋ฒํผ ๋ธ๋ก ๋ด ๋ ์ฝ๋ ์์ฑ์ผ๋ก ๊ตฌํ ๋์ด ์์ด, Commit ์ ๋ฐ๋ก ๋ก์ฐ Lock ํด์ ๋ถ๊ฐ๋ฅ
- Commit ์์ ์๋ Undo ์ธ๊ทธ๋จผํธ ํค๋์ ํธ๋์ญ์ ํ ์ด๋ธ์๋ง Commit ์ ๋ณด ๊ธฐ๋ก, ๋ธ๋ก ํด๋ฆฐ์์(Commit ์ ๋ณด ๊ธฐ๋ก, ๋ก์ฐ Lock ํด์ )์ ๋์ค์ ์ํ
- Redo ๋ ์ฝ๋๋ Redo ๋ก๊ทธ ๋ฒํผ โ Redo ๋ก๊ทธ ํ์ผ ๊ธฐ๋ก ๋จ
- 3์ด๋ง๋ค DBWR ๋ก๋ถํฐ ์ ํธ ๋ฐ์ ๋ (DBWR ์ Dirty ๋ฒํผ๋ฅผ ๋ฐ์ดํฐ ํ์ผ์ ๊ธฐ๋กํ๊ธฐ ์ LGWR ์ ์ ํธ ๋ณด๋) - Write Ahead Logging (DBWR ๊ฐ Dirty ๋ธ๋ก์ ๋์คํฌ์ ๊ธฐ๋กํ๊ธฐ ์ , LGWR ๋ ํด๋น Redo ์ํธ๋ฆฌ๋ฅผ ๋ชจ๋ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก ํด์ผ ํ๋ค.)
- ๋ก๊ทธ ๋ฒํผ์ 1/3์ด ์ฐจ๊ฑฐ๋, Redo ๋ ์ฝ๋๋์ด 1MB ๋์ ๋
- ์ฌ์ฉ์ Commit/Rollback - Log Force at Commit (์ต์ Commit ์์ ์๋ Redo ์ ๋ณด๊ฐ ๋์คํฌ์ ์ ์ฅ ๋์ด์ผ ํ๋ค.)
- ์ฌ์ฉ์ Commit
- LGWR ๊ฐ Commit ๋ ์ฝ๋ Redo ๋ก๊ทธ ๋ฒํผ ๊ธฐ๋ก
- ํธ๋์ญ์ ๋ก๊ทธ ์ํธ๋ฆฌ์ ํจ๊ป Redo ๋ก๊ทธ ํ์ผ ๊ธฐ๋ก (์ดํ ๋ณต๊ตฌ ๊ฐ๋ฅ)
- ์ฌ์ฉ์ ํ๋ก์ธ์ค์ Success Code ๋ฆฌํด
log file sync
LGWR ํ๋ก์ธ์ค๊ฐ ๋ก๊ทธ ๋ฒํผ ๋ด์ฉ์ Redo ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก ํ๋ ๋์ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐํ๋ ํ์
Undo
- Undo ์ธ๊ทธ๋จผํธ๋ ์ผ๋ฐ ์ธ๊ทธ๋จผํธ์ ๋ค๋ฅด์ง ์๋ค. (Extend ๋จ์ ํ์ฅ, ๋ฒํผ ์บ์ ์บ์ฑ, ๋ณ๊ฒฝ์ฌํญ Redo ๋ก๊น )
- ํธ๋์ญ์ ๋ณ๋ก Undo ์ธ๊ทธ๋จผํธ๊ฐ ํ ๋น ๋๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด Undo ๋ ์ฝ๋ ๋จ์๋ก ๊ธฐ๋ก ๋จ (๋ณต์ ํธ๋์ญ์ ์ด ํ Undo ์ธ๊ทธ๋จผํธ ๊ณต์ ๊ฐ๋ฅ)
๊ตฌ๋ถ | ์ค๋ช |
---|---|
Rollback | 8i ๊น์ง, Rollback ์ธ๊ทธ๋จผํธ ์๋ ๊ด๋ฆฌ |
Undo | 9i ๋ถํฐ, AUM(Automatic Undo Management) ๋์ |
AUM
- 1 Undo ์ธ๊ทธ๋จผํธ, 1 ํธ๋์ญ์ ๋ชฉํ๋ก ์๋ ๊ด๋ฆฌ
- Undo ์ธ๊ทธ๋จผํธ ๋ถ์กฑ ์ ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋๋ Undo ์ธ๊ทธ๋จผํธ ํ ๋น
- Undo ์ธ๊ทธ๋จผํธ ํ์ฅ ๋ถ๊ฐ ์ ๋ค๋ฅธ Undo ์ธ๊ทธ๋จผํธ๋ก ๋ถํฐ Free Undo Space ํ์ (Dynamic Extent Transfer)
- Undo Tablespace ๋ด Free Undo Space ๊ฐ ์์ง ๋๋ฉด ์๋ฌ ๋ฐ์
Undo ๋ชฉ์
- Transaction Rollback
- ํธ๋์ญ์ Rollback ์ Undo ๋ฐ์ดํฐ ์ฌ์ฉ
- Transaction Recovery
- Instance Recovery ์ Roll Forward ํ Commit ์๋ ํธ๋์ญ์ Rollback ์ Undo ๋ฐ์ดํฐ ์ฌ์ฉ
- Read Consistency
- ์ฝ๊ธฐ ์ผ๊ด์ฑ์ ์ํด Undo ๋ฐ์ดํฐ ์ฌ์ฉ (๋ค๋ฅธ DB๋ Lock ์ ํตํด ์ฝ๊ธฐ ์ผ๊ด์ฑ ๊ตฌํ)
Undo ์ธ๊ทธ๋จผํธ ํธ๋์ญ์ ํ ์ด๋ธ ์ฌ๋กฏ
Undo ์ธ๊ทธ๋จผํธ ์ค ์ฒซ ์ต์คํ ํธ, ์ฒซ ๋ธ๋ก์ Undo ์ธ๊ทธ๋จผํธ ํค๋์ ํธ๋์ญ์ ํ ์ด๋ธ ์ฌ๋กฏ์ด ์์น
- ํธ๋์ญ์
ํ
์ด๋ธ ์ฌ๋กฏ ๊ธฐ๋ก ์ฌํญ
- ํธ๋์ญ์ ID: USN(Undo Segment Number)# + Slot# + Wrap#
- ํธ๋์ญ์ ์ํ ์ ๋ณด (Transaction Status)
- ์ปค๋ฐ SCN (ํธ๋์ญ์ ์ด ์ปค๋ฐ ๋ ๊ฒฝ์ฐ)
- Last UBA (Undo Block Address)
- ๊ธฐํ
- ํธ๋์ญ์ ํ ์ด๋ธ ์ฌ๋กฏ(Slot) ํ ๋น ๋ฐ Active ํ์ ํ ํธ๋์ญ์ ์์ ๊ฐ๋ฅ (๋๊ธฐ ์ด๋ฒคํธ : undo segment tx slot)
- ํธ๋์ญ์
์ ๋ณ๊ฒฝ์ฌํญ์ Undo ๋ธ๋ก์ Undo ๋ ์ฝ๋๋ก์ ์์ฐจ์ ์ผ๋ก ํ๋์ฉ ๊ธฐ๋ก ๋จ (Last UBA[Undo Block Address] ์ ๋ณด๋ก ๋ง์ง๋ง Undo ๋ ์ฝ๋ ํ์ธ
- Undo ๋ ์ฝ๋๋ ์ฒด์ธ ํํ๋ก ์ฐ๊ฒฐ ๋๋ฉฐ, Rollback ์ ์ฒด์ธ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ์์ ์ํ
v$transaction.{used_ublk, used_urec}
- ํธ๋์ญ์ ์ด ์ฌ์ฉ์ค์ธ Undo Block ์, Undo ๋ ์ฝ๋ ์ ํ์ธ ๊ฐ๋ฅ
๊ตฌ๋ถ | Undo ๋ ์ฝ๋ ๋ด์ฉ | v$transaction.used_urec ์ฆ๊ฐ(TBL) | v$transaction.used_urec ์ฆ๊ฐ(TBL+IDX) | ๋น๊ณ |
---|---|---|---|---|
INSERT | ์ถ๊ฐ๋ ๋ ์ฝ๋ ROWID | 1 | 2 | _ |
UPDATE | ๋ณ๊ฒฝ | ์ปฌ๋ผ | Before Image | 1 |
DELETE | ์ ์ฒด | ์ปฌ๋ผ | Before Image | 1 |
DML ๋ณ Undo ๋ ์ฝ๋ ๋ด์ฉ
- ์ปค๋ฐ ๋ ์์๋๋ก ํธ๋์ญ์
์ฌ๋กฏ ์์ฐจ์ ์ฌ์ฌ์ฉ
- ์ปค๋ฐ ์๋ Active ์ํ์ Undo ๋ธ๋ก ๋ฐ ํธ๋์ญ์ ์ฌ๋กฏ์ ์ฌ์ฌ์ฉ ์๋จ
- ์ปค๋ฐ์ ์ํด ํธ๋์ญ์ ์ํ ์ ๋ณด (committed), ๊ทธ ์์ ์ ์ปค๋ฐ SCN์ด ์ ์ฅ๋ ํธ๋์ญ์ ์ฌ๋กฏ์ด ์ฌ์ฌ์ฉ ๋จ
- Undo Retention (undo_retention)
- ์๋ฃ๋ ํธ๋์ญ์ ์ Undo ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ ์๊ฐ๋งํผ "๊ฐ๊ธ์ " ์ ์ง
- ๊ฐ์ ๊ธฐ์ค์ผ๋ก unexpired / expired ๊ตฌ๋ถ ๋๋ฉฐ Undo Extent ํ์์ expired ์ํ์ Extent ๋จผ์ ํ์ฉ, ํ์์ unexpired ์ํ์ Extent ๋ ํ์ฉ
- guarantee ์ต์
: unexpired ์ํ์ Extent ํ์ฉ ๋ถ๊ฐ
alter tablespace undotbs1 retention guarantee;
- Automatic Undo Retention Tuning
- ์์คํ ์ํฉ์ ๋ฐ๋ผ tuned_undo_retention ๊ฐ ์๋ ๊ณ์ฐ ๋ฐ Undo Extent ๊ด๋ฆฌ (undo_retention ์ต์๊ฐ์ด ๋๋ฉฐ "๊ฐ๊ธ์ " ์ง์ผ ์ง)
๋ธ๋ก ํค๋ ITL ์ฌ๋กฏ
ํ ์ด๋ธ/์ธ๋ฑ์ค ๋ธ๋ก ํค๋์๋ ITL(Interested Transaction List) ์ฌ๋กฏ ์กด์ฌ
- ITL ์ฌ๋กฏ ๋ฒํธ
- ํธ๋์ญ์ ID
- UBA (Undo Block Address)
- ์ปค๋ฐ Flag
- Locking ์ ๋ณด
- ์ปค๋ฐ SCN (ํธ๋์ญ์ ์ด ์ปค๋ฐ ๋ ๊ฒฝ์ฐ)
๋ ์ฝ๋ ๊ฐฑ์ ์ ๋ธ๋ก ํค๋์ ITL ์ฌ๋กฏ ํ๋ณด ํ ํธ๋์ญ์ ID ๋ฐ ํธ๋์ญ์ Active ์ํ ๊ธฐ๋ก ์ ํ ํ์
- ITL ์ฌ๋กฏ ํ๋ณด ๋ ๋ ๊น์ง ํธ๋์ญ์ ์ Blocking ๋จ (enq: TX - allocate ITL entry)
- ITL ์ฌ๋กฏ ์ ๊ด๋ จ ํ๋ผ๋ฏธํฐ : initrans(1/2), maxtrans(255), pctfree
Lock Byte
- ๋ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๋ก์ฐ ํค๋์ ๊ด๋ จ ํธ๋์ญ์ ITL ์ฌ๋กฏ ๋ฒํธ ๊ธฐ๋ก ํ๋ Lock Byte ํ ๋น
- ๋ก์ฐ Lock ๊ตฌํ = ๋ก์ฐ ๋จ์ Lock + ํธ๋์ญ์ Lock ์กฐํฉ (TX Lock)
- ๋ ์ฝ๋ ๊ฐฑ์ ์์
- ๋์ ๋ ์ฝ๋์ Lock Byte ํ์ธ : ํ์ฑํ ์ํ
- ITL ์ฌ๋กฏ ์ ํธ๋์ญ์ ID ํ์ธ
- ํธ๋์ญ์ ํ ์ด๋ธ ์ฌ๋กฏ ์์ ํธ๋์ญ์ ์ํ ํ์ธ : ํ์ฑํ ์ํ
- ๋๊ธฐ
- Lock ๋งค๋์
- ๋ค๋ฅธ DBMS ๋ Lock ๋งค๋์ ๋ก ๊ฐฑ์ ์ค ๋ ์ฝ๋ ์ ๋ณด ๊ด๋ฆฌ, ์ค๋ผํด์ ๋ณ๋ ๋ฆฌ์์ค ์์ (๋ ์ฝ๋ ์์ฑ)
- Lock ๋งค๋์ ๋ ์ ํํ ๋ฆฌ์์ค ๋ฌธ์ ๋ก ๋ก์ฐ โ ๋ธ๋ญ โ ํ ์ด๋ธ ๋ ๋ฒจ๋ก Lock ์์ค์ปฌ๋ ์ด์ ๋ฐ์ ๊ฐ๋ฅ (๊ธ๊ฒฉํ ๋์์ฑ ์ ํ)
ITL ์ฌ๋กฏ์ UBA(Undo Block Address) ์ ๋ณด
ํธ๋์ญ์ ์ ์ํ ๋ณ๊ฒฝ ์ด์ ๋ฐ์ดํฐ(Before Image)๊ฐ ์ ์ฅ๋ Undo ๋ธ๋ก ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์ ๋ณด (CR Copy ์์ฑ ์ ์ฌ์ฉ)