Skip to main content

01B

About 3 minOracle DBcrashcourseoracleoracle-dboracle-sql

01B ๊ด€๋ จ


๊ธฐ๋ณธ Architecture

์˜ค๋ผํด์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ด๋ฅผ ์•ก์„ธ์Šคํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด์— ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ ์˜์—ญ(SGA)์ด ์žˆ๋‹ค.

0F
0F
  • ๋””์Šคํฌ I/O ์— ๋น„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ I/O ๋Š” ๋งค์šฐ ๋น ๋ฅด๋‹ค.
  • ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์•ก์„ธ์Šค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” Lock ๊ณผ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ธ SGA ์— ์œ„์น˜ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ก์„ธ์Šค๋ฅผ ์ง๋ ฌํ™” ํ•˜๊ธฐ ์œ„ํ•œ Latch๋„ ํ•„์š”.
  • ์˜ค๋ผํด์€ ๋ธ”๋ก ๋‹จ์œ„๋กœ I/O ํ•˜๋ฉฐ, DBWR/CKPT ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์บ์‹œ-๋ฐ์ดํ„ฐํŒŒ์ผ ๋™๊ธฐํ™” ์ˆ˜ํ–‰.
  • Database: ๋””์Šคํฌ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ(Datafile, Redo Log File, Control File...)
  • Instance: SGA(System Global Area) + Process
    • Server Process: ์‚ฌ์šฉ์ž ๋ช…๋ น ์ฒ˜๋ฆฌ
      • Dedicated Server Process: ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ์ „์šฉ ํ”„๋กœ์„ธ์Šค, ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์„œ๋น„์Šค ์ œ๊ณต (SQL ํŒŒ์‹ฑ, ์ตœ์ ํ™”, ์‹คํ–‰, ๋ธ”๋ก ์ฝ๊ธฐ, ์ฝ์€ ๋ฐ์ดํ„ฐ ์ •๋ ฌ, ๋„คํŠธ์›Œํฌ ์ „์†ก)
      • ์Šค์Šค๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์ผ์„ ๋งŒ๋‚˜๋ฉด OS, I/O ์„œ๋ธŒ์‹œ์Šคํ…œ, Background Process ๋“ฑ์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ๋Œ€์‹  ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”์ฒญ
    • Background Process : ๋’ค์—์„œ ์—ญํ•  ์ˆ˜ํ–‰
์˜ค๋ผํด ์ ‘์†ํ•  ์‹œ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ๊ณผ์ •
์˜ค๋ผํด ์ ‘์†ํ•  ์‹œ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ๊ณผ์ •
  • ๋ฆฌ์Šค๋„ˆ์— ์—ฐ๊ฒฐ ์š”์ฒญ ์‹œ ์„œ๋ฒ„ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„์šฐ๊ณ (Fork) ๋ฉ”๋ชจ๋ฆฌ(PGA)๋ฅผ ํ• ๋‹น ํ•œ๋‹ค.
    • ๋น„์šฉ์ด ํฐ ์ž‘์—… ์ด๋ฏ€๋กœ ์„ฑ๋Šฅ์„ ์œ„ํ•ด Connection Pool ์„ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ํ•„์ˆ˜
Connection Pool
Connection Pool
RAC
RAC
  • ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—‘์„ธ์Šค ํ•˜๋Š” ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑ
  • ๊ณผ๊ฑฐ ๊ณต์œ  ๋””์Šคํฌ ๋ฐฉ์‹, ํ˜„์žฌ ๊ณต์œ  ์บ์‹œ ๋ฐฉ์‹
  • ๊ธ€๋กœ๋ฒŒ ์บ์‹œ ๊ฐœ๋… : ๋กœ์ปฌ ์บ์‹œ์— ์—†๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์›๊ฒฉ ๋…ธ๋“œ์—์„œ ์ „์†ก ๋ฐ›์Œ
  • ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ Dirty ๋ฒ„ํผ๋„ Interconnect ๋ฅผ ํ†ตํ•ด ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ๊ฐฑ์‹  ์ˆ˜ํ–‰, OPS ๋Š” ๋””์Šคํฌ๋กœ ์“ฐ๊ธฐ ์ž‘์—… ์„ ํ–‰ ํ•„์š” (Ping)
SQL Trace - ์ •ํ™•ํ•œ ์ดํ•ด ํ•„์š”(query, current)
SQL Trace - ์ •ํ™•ํ•œ ์ดํ•ด ํ•„์š”(query, current)
ํ•ญ๋ชฉ์„ค๋ช…
count์ˆ˜ํ–‰ ํšŸ์ˆ˜
cpuCPU ์‹œ๊ฐ„(์ดˆ)
elapsed์ˆ˜ํ–‰ ์‹œ๊ฐ„(์ดˆ)
diskPhysical(Disk) Read Block Count / physical reads
queryConsistent Read Block Count / consistent gets
currentCurrent(Dirty) Read Block Count / db block gets
rowsRecord 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 ์ž…๋ ฅํ•ด ๋ฆฌํ„ด ๋ฐ›์€ ํ•ด์‹œ ๊ฐ’์ด ๊ฐ™์€ ๋ธ”๋ก๋“ค์„ ๊ฐ™์€ ํ•ด์‹œ ๋ฒ„ํ‚ท์— ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(ํ•ด์‹œ ์ฒด์ธ)๋กœ ๊ตฌ์กฐํ™”
      • ํ•„์š”ํ•œ ๋ธ”๋ก ์ฃผ์†Œ๋ฅผ ํ•ด์‹œ ๋ฒ„ํ‚ท์—์„œ ์Šค์บ” ํ›„ ์žˆ์œผ๋ฉด ์ฝ๊ณ , ์—†์œผ๋ฉด ๋””์Šคํฌ์—์„œ ์ฝ์–ด ํ•ด์‹œ ์ฒด์ธ์— ์—ฐ๊ฒฐ ํ›„ ์ฝ์Œ
  • ๋ฒ„ํผ ํ—ค๋”๋งŒ ํ•ด์‹œ ์ฒด์ธ์— ์—ฐ๊ฒฐ ๋จ, ๋ฐ์ดํ„ฐ ๊ฐ’์€ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ ๋ธ”๋ก์„ ์ฐพ์•„ ์–ป๊ฒŒ ๋จ
ํ•ด์‹œํ•จ์ˆ˜ ์˜ˆ์ œ : MOD
ํ•ด์‹œํ•จ์ˆ˜ ์˜ˆ์ œ : MOD

์บ์‹œ ๋ฒ„ํผ ์ฒด์ธ

  • ๊ฐ ํ•ด์‹œ ์ฒด์ธ์€ Latch ์— ์˜ํ•ด ๋ณดํ˜ธ ๋จ
    • DB ๋ฒ„ํผ ์บ์‹œ๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์กด์žฌ ํ•˜๋ฏ€๋กœ ๋™์‹œ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ ํ•˜๋ฉฐ, ์•ก์„ธ์Šค ์ง๋ ฌํ™”(Serialization) ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•„์š” (i.e. Latch)
    • Latch ๋ฅผ ํš๋“ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ๊ทธ Latch ์— ์˜ํ•ด ๋ณดํ˜ธ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ง„์ž… ํ—ˆ์šฉ
    • Cache Buffers Chains: ํ•ด์‹œ ์ฒด์ธ์— ๋ฒ„ํผ ๋ธ”๋ก์„ ์Šค์บ”/์—ฐ๊ฒฐ/ํ•ด์ œ ์ž‘์—… ๋ณดํ˜ธ, ํ•˜๋‚˜์˜ Latch ๊ฐ€ ์—ฌ๋Ÿฌ ํ•ด์‹œ ์ฒด์ธ์„ ๋™์‹œ ๋ณดํ˜ธ
DB๋ฒ„์ „Latch ๊ฐฏ์ˆ˜
9i241 ๊ฐœ
10g394 ๊ฐœ
11g496 ๊ฐœ

DB ๋ฒ„์ „ ๋ณ„ Latch ๊ฐฏ์ˆ˜

๊ตฌ๋ถ„ํŒŒ๋ผ๋ฏธํ„ฐ์ฑ…์‹ค์ œ(11g)
ํ•ด์‹œ ๋ฒ„ํ‚ท ๊ฐœ์ˆ˜_db_block_hash_buckets2,097,1528,388,608
๋ž˜์น˜ ๊ฐœ์ˆ˜_db_block_hash_latches65,536262,144
๋ž˜์น˜ ๋‹น ํ•ด์‹œ ๋ฒ„ํ‚ท ์ˆ˜-3232
๋ธ”๋ก ๋ฒ„ํผ ๊ฐœ์ˆ˜_db_block_buffers836,6843,084,990
ํ•ด์‹œ ๋ฒ„ํ‚ท ๊ฐœ์ˆ˜ / ๋ธ”๋ก ๋ฒ„ํผ ๊ฐœ์ˆ˜-2.52.7

ํ•ด์‹œ ๋ฒ„ํ‚ท, ๋ธ”๋ก ๋ฒ„ํผ, ๋ž˜์น˜ ๊ฐฏ์ˆ˜

  • ํ•˜๋‚˜์˜ ํ•ด์‹œ ์ฒด์ธ์— ํ•˜๋‚˜์˜ ๋ฒ„ํผ๋งŒ ๋‹ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ ์ž„ - ํ•ด์‹œ ์ฒด์ธ ์Šค์บ” ๋น„์šฉ ์ตœ์†Œํ™”

  • ๋ธ”๋ก ๋ฒ„ํผ ๋Œ€๋น„ ํ•ด์‹œ ๋ฒ„ํ‚ท ๊ฐœ์ˆ˜๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋งŽ์•„์•ผ ํ•จ - 2.5๋ฐฐ ?

  • 9i ๋ถ€ํ„ฐ ์ฝ๊ธฐ ์ „์šฉ ์ž‘์—… ์‹œ cache buffers chains Latch ๋ฅผ Share ๋ชจ๋“œ ํš๋“ ๊ฐ€๋Šฅ

    • SELECT (X), ํ•„์š”ํ•œ ๋ธ”๋ก์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํ•ด์‹œ ์ฒด์ธ ์Šค์บ” (O)
  • ๋ฒ„ํผ ํ—ค๋”์— Pin ์„ค์ • ์‹œ cache buffers chains Latch ์‚ฌ์šฉ

    • Share ๋ชจ๋“œ ํš๋“ ํ›„, ์ฒด์ธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ํ˜น์€ ๋ฒ„ํผ ํ—ค๋”์— Pin ์„ค์ • ์‹œ Exclusive ๋ชจ๋“œ๋กœ ๋ณ€

์บ์‹œ ๋ฒ„ํผ LRU ์ฒด์ธ

LRU(Least Recently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜
LRU(Least Recently Used) ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์‚ฌ์šฉ ๋นˆ๋„ ๋†’์€ ๋ธ”๋ก๋“ค ์œ„์ฃผ๋กœ ๋ฒ„ํผ ์บ์‹œ๊ฐ€ ๊ตฌ์„ฑ ๋˜๋„๋ก ํ•จ
  • ๋ชจ๋“  ๋ฒ„ํผ ๋ธ”๋ก ํ—ค๋”๋ฅผ LRU ์ฒด์ธ์— ์—ฐ๊ฒฐ
    • ์‚ฌ์šฉ ๋นˆ๋„ ์ˆœ์œผ๋กœ ์œ„์น˜ ์ด๋™
    • Free ๋ฒ„ํผ ํ•„์š”์‹œ ์•ก์„ธ์Šค ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๋ธ”๋ก์„ ์šฐ์„  ๋ฐ€์–ด๋ƒ„ (์ž์ฃผ ์•ก์„ธ์Šค ๋˜๋Š” ๋ธ”๋ก์ด ์บ์‹œ์— ๋” ์˜ค๋ž˜ ๋‚จ๊ฒŒ ๋จ)
    • cache buffers lru chain Latch ๋กœ ๋ณดํ˜ธ
  • ๋ชจ๋“  ๋ฒ„ํผ ๋ธ”๋ก์€ ๋‘˜์ค‘ ํ•˜๋‚˜์˜ LRU ๋ฆฌ์ŠคํŠธ์— ์†ํ•จ
    • Dirty ๋ฆฌ์ŠคํŠธ : ์บ์‹œ ๋‚ด ๋ณ€๊ฒฝ ๋จ, ์•„์ง ๋””์Šคํฌ์— ๋ฐ˜์˜ ์•ˆ๋œ ๋ธ”๋ก ๊ด€๋ฆฌ (LRUW ๋ฆฌ์ŠคํŠธ)
      • ๋ณ€๊ฒฝ ์‹œ ๋ฆฌ์ŠคํŠธ์—์„œ ์ž ์‹œ ๋‚˜์˜ด
    • LRU ๋ฆฌ์ŠคํŠธ : Dirty ๋ฆฌ์ŠคํŠธ ์™ธ ๋‚˜๋จธ์ง€ ๋ธ”๋ก ๊ด€๋ฆฌ
      • ๋ณ€๊ฒฝ ์‹œ Dirty ๋ฆฌ์ŠคํŠธ๋กœ ์ด๋™
  • ๋ชจ๋“  ๋ฒ„ํผ ๋ธ”๋ก์€ ์…‹์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ์ž„
    • Free ๋ฒ„ํผ : ๋นˆ ์ƒํƒœ ํ˜น์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ๋™๊ธฐํ™” ๋œ ์ƒํƒœ, ์–ธ์ œ๋“  ๋ฎ์–ด ์“ธ ์ˆ˜ ์žˆ์Œ,
      • ๋ณ€๊ฒฝ ์‹œ Dirty ๋ฒ„ํผ ๋จ
    • Dirty ๋ฒ„ํผ : ๋ณ€๊ฒฝ ๋˜์–ด ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ๋™๊ธฐํ™” ํ•„์š” ์ƒํƒœ, ๋™๊ธฐํ™” ๋˜๋ฉด Free ๋ฒ„ํผ ๋จ
    • Pinned ๋ฒ„ํผ : ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—… ์ค‘์ธ ๋ฒ„ํผ ๋ธ”๋ก

๋ฒ„ํผ 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 ๊ตฌ๋ถ„์†์„ฑ
OnlineRedo ๋กœ๊ทธ ๋ฒ„ํผ์— ๋ฒ„ํผ๋ง๋œ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ํŒŒ์ผ, ์ตœ์†Œ ๋‘ ๊ฐœ ๊ตฌ์„ฑ, ๋ผ์šด๋“œ ๋กœ๋นˆ ๋กœ๊ทธ ์Šค์œ„์นญ ๋ฐœ์ƒ
ArchivedOnline Redo ๋กœ๊ทธ ํŒŒ์ผ์ด ์žฌ์‚ฌ์šฉ ๋˜๊ธฐ ์ „ ๋‹ค๋ฅธ ์œ„์น˜๋กœ์˜ ๋ฐฑ์—…๋ณธ

๋ฐ์ดํ„ฐ/์ปจํŠธ๋กค ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•˜๋‚˜์˜ Redo ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋กœ์„œ Redo ๋กœ๊ทธ์— ๊ธฐ๋ก

Redo ๋ชฉ์ 

  1. Database Recovery
  2. Cache Recovery (Instance Recovery)
  3. 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 ์•ก์„ธ์Šค (๋น ๋ฆ„)

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 ์ •๋ณด๊ฐ€ ๋””์Šคํฌ์— ์ €์žฅ ๋˜์–ด์•ผ ํ•œ๋‹ค.)
Fast Commit ๋ฉ”์ปค๋‹ˆ์ฆ˜
Fast Commit ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์‚ฌ์šฉ์ž Commit
  • LGWR ๊ฐ€ Commit ๋ ˆ์ฝ”๋“œ Redo ๋กœ๊ทธ ๋ฒ„ํผ ๊ธฐ๋ก
  • ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ ์—”ํŠธ๋ฆฌ์™€ ํ•จ๊ป˜ Redo ๋กœ๊ทธ ํŒŒ์ผ ๊ธฐ๋ก (์ดํ›„ ๋ณต๊ตฌ ๊ฐ€๋Šฅ)
  • ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์— Success Code ๋ฆฌํ„ด

log file sync

LGWR ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋กœ๊ทธ ๋ฒ„ํผ ๋‚ด์šฉ์„ Redo ๋กœ๊ทธ ํŒŒ์ผ์— ๊ธฐ๋ก ํ•˜๋Š” ๋™์•ˆ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐํ•˜๋Š” ํ˜„์ƒ


Undo

  • Undo ์„ธ๊ทธ๋จผํŠธ๋Š” ์ผ๋ฐ˜ ์„ธ๊ทธ๋จผํŠธ์™€ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค. (Extend ๋‹จ์œ„ ํ™•์žฅ, ๋ฒ„ํผ ์บ์‹œ ์บ์‹ฑ, ๋ณ€๊ฒฝ์‚ฌํ•ญ Redo ๋กœ๊น…)
  • ํŠธ๋žœ์žญ์…˜ ๋ณ„๋กœ Undo ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ํ• ๋‹น ๋˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด Undo ๋ ˆ์ฝ”๋“œ ๋‹จ์œ„๋กœ ๊ธฐ๋ก ๋จ (๋ณต์ˆ˜ ํŠธ๋žœ์žญ์…˜์ด ํ•œ Undo ์„ธ๊ทธ๋จผํŠธ ๊ณต์œ  ๊ฐ€๋Šฅ)
๊ตฌ๋ถ„์„ค๋ช…
Rollback8i ๊นŒ์ง€, Rollback ์„ธ๊ทธ๋จผํŠธ ์ˆ˜๋™ ๊ด€๋ฆฌ
Undo9i ๋ถ€ํ„ฐ, 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 ์„ธ๊ทธ๋จผํŠธ ํ—ค๋”์— ํŠธ๋žœ์žญ์…˜ ํ…Œ์ด๋ธ” ์Šฌ๋กฏ์ด ์œ„์น˜

0O
0O
  • ํŠธ๋žœ์žญ์…˜ ํ…Œ์ด๋ธ” ์Šฌ๋กฏ ๊ธฐ๋ก ์‚ฌํ•ญ
    • ํŠธ๋žœ์žญ์…˜ 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์ถ”๊ฐ€๋œ ๋ ˆ์ฝ”๋“œ ROWID12_
UPDATE๋ณ€๊ฒฝ์ปฌ๋ŸผBefore Image1
DELETE์ „์ฒด์ปฌ๋ŸผBefore Image1

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 ์ƒ์„ฑ ์‹œ ์‚ฌ์šฉ)


์ด์ฐฌํฌ (MarkiiimarK)
Never Stop Learning.