Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋๋์ DML ์์ (INSERT, UPDATE, DELETE) ๋๋ ๋ค์์ ํธ๋์ญ์ ์ด ๋์์ ๋ฐ์ํ๋ฉด, ์ข ์ข ์ ์ ์๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ AWR ๋๋ ASH ๋ฆฌํฌํธ๋ฅผ ํ์ธํด๋ณด๋ฉด "enq: US - contention"์ด๋ผ๋ Undo Segment ๊ด๋ จ ๋๊ธฐ ์ด๋ฒคํธ๊ฐ ๋ํ๋๊ณค ํ์ฃ .
์ด ๊ธ์์๋ ์ค๋ฌด์์ ์์ฃผ ์ ํ ์ ์๋ Oracle์ enq: US - contention ๋ฌธ์ ์ ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด๋ชจํฐ์ฝ๊ณผ ํจ๊ป ์น์ ํ๊ฒ ์ ๋ฆฌํฉ๋๋ค.
❓ enq: US - contention์ด๋?
enq: US - contention์ Oracle์ Enqueue Wait Event ์ค ํ๋๋ก, ๋ค์์ ์๋ฏธํฉ๋๋ค:
- US → Undo Segment
- contention → ๊ฒฝํฉ (๋์ ์ ๊ทผ ์ถฉ๋)
์ฆ, ์ฌ๋ฌ ์ธ์ ์ด ๋์ผํ Undo ๋ธ๋ก ๋๋ ์ธ๊ทธ๋จผํธ์ ๋์์ ์ ๊ทผํ๋ ค ํ ๋ ๋ฐ์ํ๋ ๊ฒฝํฉ์ ๋๋ค. ํนํ ๋ค์ ์ํฉ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค:
✅ ๋๋์ DML ์์
✅ ๋ณ๋ ฌ ํธ๋์ญ์
์ฒ๋ฆฌ
✅ Undo ์ค์ ๋ฏธ๋น ๋๋ ์ฉ๋ ๋ถ์กฑ
๐งจ ์ฃผ์ ์์ธ ์์ฝ
| ์์ธ | ์ค๋ช |
| ๐ Undo ์ธ๊ทธ๋จผํธ ๋ถ์กฑ | ๋์ ํธ๋์ญ์ ์ด ๋ง์ ๋ ํ ๋นํ Undo ์ธ๊ทธ๋จผํธ๊ฐ ๋ถ์กฑ |
| ๐ฅ Hot Undo ๋ธ๋ก | ์ฌ๋ฌ ์ธ์ ์ด ๋์ผ ๋ธ๋ก์ ์ ๊ทผ |
| ๐งฑ ๋ณ๋ ฌ DML ๊ณผ๋ค ์ฌ์ฉ | ๋ณ๋ ฌ INSERT/UPDATE๋ก ๊ฒฝํฉ ์ ๋ฐ |
| ๐ Undo Retention ๋ถ์กฑ | Undo ๋ฐ์ดํฐ๊ฐ ๋นจ๋ฆฌ ์ฌ๋ผ์ ธ ์ฌ์ฌ์ฉ ์ถฉ๋ ๋ฐ์ |
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ: enq: US - contention ํ๋ ๊ฐ์ด๋
1️⃣ Undo Tablespace ์ฉ๋ ๋๋ฆฌ๊ธฐ ๐
ALTER DATABASE DATAFILE '/oracle/undotbs01.dbf' RESIZE 2G;Undo ์ธ๊ทธ๋จผํธ ์๋ฅผ ํ๋ณดํด ๊ฒฝํฉ ์ํ.
2️⃣ Undo Retention ์๊ฐ ์ฆ๊ฐ ⏳
ALTER SYSTEM SET UNDO_RETENTION = 1200 SCOPE=BOTH;3️⃣ ๋ณ๋ ฌ DML ์ค์ด๊ธฐ ๐ง
- ๋๋ DML ์์ ์ ๋ฐฐ์น๋ก ๋๋์ด ์ฒ๋ฆฌ
- ๋ณ๋ ฌ ํํธ ์กฐ์ :
/*+ NO_PARALLEL */SELECT * FROM v$active_session_history
WHERE event = 'enq: US - contention';๐ ์ถ๊ฐ ํ: ์์คํ ์ ๋ฐ์ ์ธ ํธ๋์ญ์ ๊ตฌ์กฐ ๊ฐ์ ์ด ์ค์
Undo ๊ด๋ จ ๊ฒฝํฉ์ ๋จ์ํ ๋ฆฌ์์ค๋ฅผ ๋๋ฆฌ๋ ๊ฒ๋ง์ผ๋ก๋ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ํธ๋์ญ์ ์ค๊ณ, ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ, ๋ฐฐ์น ์ฃผ๊ธฐ ๋ฑ์ ์ ๋ฐ์ ์ผ๋ก ์ ๊ฒํ๋ ๊ฒ์ด ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ ๋๋ค.
๊ฐ๋ฅํ๋ค๋ฉด Oracle ์ ๋ฌธ๊ฐ์ ํจ๊ป AWR, ADDM ๋ฆฌํฌํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์กฐ์ ๋ถ์์ ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๐ก️