PGA, DBWN, LGWR, CKPT, SMON, PMON

๋ง๊ตฌ์”จยท2023๋…„ 10์›” 1์ผ
1

PGA

๐Ÿ’ก ์„œ๋ฒ„ ํ”„๋กœ์„ธ์„œ์˜ ๊ฐœ๋ณ„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋‹ค. ์ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ •๋ ฌ ์ž‘์—…์„ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค!

์ •๋ ฌ์„ ์ผ์œผํ‚ค๋Š” SQL
1. order by
2. union
3. minus
4. intersect
5. sort merge join
6. ๋ฐ์ดํ„ฐ ๋ถ„์„ํ•จ์ˆ˜ ์‚ฌ์šฉ ์‹œ
7. create index ์ƒ์„ฑ๋ฌธ ์‹คํ–‰ ์‹œ (ํŠนํžˆ critical)
โœ… ํ˜„์—…์—์„œ ์œ„ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒฝ์šฐ out of memory ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์„œ ์ž‘์—…์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค.
โœ… PGA ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๊ด€๋ฆฌ๋ฅผ ์ž๋™, ์ˆ˜๋™ ์œผ๋กœ ํ•˜๋Š”๊ฒƒ์€ dba๊ฐ€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ์˜ค๋ผํด์ด ์•Œ์•„์„œ ํ•ด์ฃผ๋ฏ€๋กœ ํ‰์ƒ์‹œ์— ํŽธํ•˜์ง€๋งŒ ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค ์ƒ์„ฑํ•  ๋•Œ๋Š” ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

ํ”„๋กœ์„ธ์„œ ๊ตฌ์กฐ

์˜ค๋ผํด ํ”„๋กœ์„ธ์„œ์˜ ์ข…๋ฅ˜ 3๊ฐ€์ง€
1. User Process : ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ

์œ ์ €ํ”„๋กœ์„ธ์„œ --- SQL --- ์„œ๋ฒ„ํ”„๋กœ์„ธ์„œ
  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋กœ์„ธ์Šค
    โœ”๏ธ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค : ์œ ์ € ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฑด๋„ค์ค€ SQL์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์„œ
    โœ”๏ธ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค : ์˜ค๋ผํด DB๋ฅผ ์šด์˜ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ
  2. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ์„ธ์Šค : ๋ฆฌ์Šค๋„ˆ์™€ ๊ฐ™์€ ์˜ค๋ผํด์— ์ ‘์†ํ•  ๋•Œ ํ•„์š”ํ•œ ํ”„๋กœ์„ธ์„œ
sqldeloper       ์ ‘์†            ๋ฆฌ์Šค๋„ˆ
์›๊ฒฉ์ง€ ----------------------> ์˜ค๋ผํด ์„œ๋ฒ„ 
  ๐Ÿก                               ๐Ÿ™๏ธ
  ์ง‘                               ํšŒ์‚ฌ
  
C:\Users\ITWILL> lsnrctl status  <-- ๋ฆฌ์Šค๋„ˆ ์ƒํƒœ ํ™•์ธ  


์ธ์Šคํ„ด์Šค : ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จํ•œ ํ”„๋กœ์„ธ์Šค๋“ค
๊ทธ๋ฆฌ๋“œ ํ”„๋กœ์„ธ์Šค : ๋””์Šคํฌ์— ๊ด€๋ จํ•œ ํ”„๋กœ์„ธ์Šค๋“ค

DBWN (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ก์ž ํ”„๋กœ์„ธ์„œ)

๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„ํผ ์บ์‹œ์˜ ๋”ํ‹ฐ ๋ฒ„ํผ๋ฅผ ๋””์Šคํฌ์— ๊ธฐ๋กํ•ด์ค€๋‹ค.

๐ŸŒฑ free buffer : ๋น„์–ด์žˆ๋Š” ๋ฒ„ํผ
๐ŸŒฑ pinned buffer : ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋ฒ„ํผ (์ง€๊ธˆ ๋ง‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ผ๊ฐ”์œผ๋‚˜ ๋ณ€๊ฒฝ๋˜์ง„ ์•Š๋Š” ๋ฒ„ํผ)
๐ŸŒฑ dirty buffer : ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋ฒ„ํผ (๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์„œ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ์™€ ์„œ๋กœ ์ผ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ)

LGWR (๋กœ๊ทธ ๊ธฐ๋ก์ž ํ”„๋กœ์„ธ์„œ)

๐Ÿ’ก ๋ฆฌ๋‘๋กœ๊ทธ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ๋ฆฌ๋‘๋กœ๊ทธ ํŒŒ์ผ์— ๋‚ด๋ ค์“ฐ๋Š” ํ”„๋กœ์„ธ์„œ์ด๋‹ค.

๋กœ๊ทธ๋ผ์ดํ„ฐ๋Š” ๋””๋น„๋ผ์ดํ„ฐ๋ณด๋‹ค ๋จผ์ € ์ž‘๋™ํ•œ๋‹ค. ํ˜น์‹œ๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ๋‚ ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋กœ๊ทธ์— ๋จผ์ € ๊ธฐ๋กํ•ด๋‘๋Š” ๊ฒƒ! ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, scott์˜ ์›”๊ธ‰์ด 3000์ธ๋ฐ 0์œผ๋กœ update๋ฅผ ํ•จ.
์ด ๊ฒฝ์šฐ ๋ฐ”๋กœ data file์„ ์ˆ˜์ •ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, redo log file ๋จผ์ € 3000 ์—์„œ 0์œผ๋กœ n์›” n์ผ n์‹œ n๋ถ„์— ์ˆ˜์ •ํ•œ๋‹ค๊ณ  ๊ธฐ๋กํ•ด๋‘๊ณ , ๊ทธ ํ›„์— data file ์—…๋ฐ์ดํŠธ (๋‚ ์•„๊ฐ€๋Š” ์ƒํ™ฉ ๋Œ€๋น„)

LGWR๊ฐ€ ์ž‘๋™๋˜๋Š” 4๊ฐ€์ง€ ์‹œ์ 

  1. ์‚ฌ์šฉ์ž๊ฐ€ commitํ–ˆ์„ ๋•Œ
  2. ์ฒดํฌํฌ์ธํŠธ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ DBWR๋ณด๋‹ค ๋จผ์ € ์ž‘๋™ (๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ๋””๋น„๋กœ ๋‚ด๋ ค์“ฐ๋Š” ์ด๋ฒคํŠธ)
  3. ๋กœ๊ทธ๋ฒ„ํผ๊ฐ€ 1/3 ์ฐผ์„ ๋•Œ
  4. 3์ดˆ๋งˆ๋‹ค ์ž‘๋™

CKPT (์ฒดํฌํฌ์ธํŠธ ํ”„๋กœ์„ธ์Šค)

๐Ÿ’ก ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋””์Šคํฌ๋กœ ๋‚ด๋ ค์“ฐ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ผ์œผํ‚ค๋Š” ํ”„๋กœ์„ธ์„œ

                ๋กœ๊ทธ๋ฒ„ํผ          ๋””๋น„๋ฒ„ํผ์บ์‰ฌ
                    โ†“                 โ†“
ckpt ------------> lgwr -----------> dbwr
โ†“                   โ†“                 โ†“
์ปจํŠธ๋กคํŒŒ์ผ      ๋ฆฌ๋‘๋กœ๋“œํŒŒ์ผ       ๋ฐ์ดํ„ฐ ํŒŒ์ผ
๋ฐ์ดํ„ฐ ํŒŒ์ผ ํ—ค๋”

โœ… ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ๋กœ๊ทธ๋ผ์ดํ„ฐ์—๊ฒŒ ๋กœ๊ทธ๋ฒ„ํผ์— ์žˆ๋Š” ๋กœ๊ทธ์ •๋ณด๋ฅผ ๋ฆฌ๋‘๋กœ๊ทธํŒŒ์ผ์— ๋‚ด๋ ค์“ฐ๋ผ๊ณ  ์ง€์‹œํ•˜๊ณ  ๋กœ๊ทธ๋ผ์ดํ„ฐ๊ฐ€ ๋‹ค ๋‚ด๋ ค์ผ์œผ๋ฉด ๋””๋น„๋ผ์ดํ„ฐ์—๊ฒŒ ๋”ํ‹ฐ๋ฒ„ํผ๋ฅผ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋‚ด๋ ค์“ฐ๋ผ๊ณ  ์ง€์‹œํ•œ๋‹ค. ๋‹ค ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์ง€๊ธˆ ๋ช‡๋ฒˆ์งธ ์ฒดํฌํฌ์ธํŠธ๋‹ค! ๋ผ๋Š” ๊ฒƒ์„ ์ปจํŠธ๋กค ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐํŒŒ์ผ ํ—ค๋”์— ๋‚ด๋ ค์“ด๋‹ค. ์ด ์ž‘์—…์ด ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค. ์ด ์ฃผ๊ธฐ๋Š” ๋””๋น„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์ž๋™ํ™”ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” show parameter fast_start_mttr_target์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฐธ๋ฅ˜๊ฐ’์ด 0์ด๋ผ๋ฉด ์ž๋™๊ด€๋ฆฌ์ค‘์ธ๊ฒƒ.

SMON (system monitor process)


๐Ÿ’ก ์˜ค๋ผํด startup์‹œ ๋ณต๊ตฌ ์ž‘์—…์„ ์ˆ˜ํ–‰
โ—๏ธ db๋ฅผ ๋‚ด๋ฆด ์ผ์ด ์žˆ์œผ๋ฉด ๋‚ด๋ฆฌ๊ธฐ์ „ ๋ฐ˜๋“œ์‹œ ์ˆ˜๋™์œผ๋กœ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์ผ์œผํ‚จ ํ›„ ๋‚ด๋ ธ๋‹ค ์˜ฌ๋ฆฌ์ž. startup ํ•  ๋•Œ smon์ด ์ธ์Šคํ„ด์Šค ๋ฆฌ์ปค๋ฒ„๋ฆฌ๋ฅผ ํ•  ์–‘์ด ๊ฑฐ์˜ ์—†์–ด์ง„๋‹ค.

๐Ÿ’ก ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” temporary segment๋ฅผ ์ •๋ฆฌ

  • ์ž„์‹œ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ?
  1. order by
  2. temporary tablespace
  3. with์ ˆ
  4. create index..
  5. sort merge join
  6. ์ž„์‹œํ…Œ์ด๋ธ”
  7. ๊ธฐํƒ€ ์ •๋ ฌ์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  SQL
    โœ… with์ ˆ ์•ˆ์˜ ๋‚ด์šฉ์ด temporary tablespace์˜ temporary segmanet์— ์ž„์‹œํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ฐ€ ๋‹ค๋ฅธ์ผ์„ ์œ„ํ•ด ๊ณต๊ฐ„์„ ๋น„์›Œ์ค˜์•ผํ•  ๋•Œ smon์ด ์ •๋ฆฌํ•ด์ค€๋‹ค.

์ถ”๊ฐ€
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋น„์ •์ƒ ์ข…์š”๋˜๋ฉด DBWR๊ฐ€ ๋ฐ์ดํ„ฐํŒŒ์ผ์— ์ €์žฅ์„ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์–ด
๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹คํ•˜๊ฒŒ ๋˜๋Š”๋ฐ SMON ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„์ •์ƒ ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘๋  ๋•Œ redo log file์˜ ๋กœ๊ทธ ์ •๋ณด๋ฅผ ์ฝ์–ด์„œ data file์— ๊ธฐ๋ก๋˜์ง€ ์•Š์€ ์ด์ „์— ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•ด ์ฃผ๊ฒŒ ๋œ๋‹ค.(MOUNT๋‹จ๊ณ„์—์„œ)

roll Forward : ์ž‘์—…์ค‘์ด๋˜ ์‹œ์Šคํ…œ์ด ๋น„ ์ •์ƒ ์ข…๋ฃŒ ๋˜์—ˆ์„๋•Œ ์˜ค๋ผํด์„ ์žฌ๊ธฐ๋™ํ•˜๊ฒŒ ๋˜๋ฉด redo log file์— ์žˆ๋Š” ๋‚ด์šฉ์„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ

roll back : commit์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์€ ์ž‘์—…์— ๋Œ€ํ•ด undo segment๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— rollback๋ฅผ ์ˆ˜ํ–‰

PMON (process monitor process)

๐Ÿ’ก ์œ ์ € ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋น„์ •์ƒ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ ์ž์›๋“ค์„ ๋‹ค ์ •๋ฆฌํ•ด์ฃผ๋Š” ํ”„๋กœ์„ธ์„œ

์„œ๋ฒ„๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํด๋ผ์ด์–ธํŠธ ์…ง๋‹ค์šด ๋ฌธ์ œ์ด๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด ๋…ธํŠธ๋ถ์ด ๊บผ์กŒ์Œ!)

ํด๋ผ์ด์–ธํŠธ                                                ์„œ๋ฒ„

    user process                             server  process 

     update  emp              3000 ---> 0
      set  sal = 0
      where  ename='SCOTT';

์œ„ ์ƒํƒœ์—์„œ ํด๋ผ์ด์–ธํŠธ pc๊ฐ€ ๊บผ์ง€๋ฉด ์„œ๋ฒ„์ชฝ์—์„œ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋˜๊ฒƒ์„ ๋‹ค์‹œ ๋กค๋ฐฑํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ์ด ์ž‘์—…์„ ํ”ผ๋ชฌ์ด ํ•ด์ค€๋‹ค.

๐Ÿ’ก ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ์žฅ์‹œ๊ฐ„ ์ ‘์†ํ•˜๊ณ  ์žˆ๋Š” ์„ธ์…˜์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ผ์ •์‹œ๊ฐ„ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ธ์…˜์„ ๊ทธ๋ƒฅ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

๐Ÿ’ก ๋ฆฌ์Šค๋„ˆ์— ๋™์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„œ๋น„์Šค๋ฅผ ๋“ฑ๋กํ•œ๋‹ค. (12c๋ถ€ํ„ฐ๋Š” ์•„๋‹˜)

โ†“
                                    db ์ด๋ฆ„ (์ธ์Šคํ„ด์Šค ์ด๋ฆ„)

๋ฆฌ์Šค๋„ˆ(ํšŒ์‚ฌ๋กœ ์น˜๋ฉด ๊ฒฝ๋น„์› ์•„์ €์”จ )  <--- pmon ์ด ์„œ๋น„์Šค ์ด๋ฆ„์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

1. ํšŒ์‚ฌ์ฃผ์†Œ(ip์ฃผ์†Œ)
2. ํšŒ์‚ฌ ๋ณต๋„๋ฒˆํ˜ธ(ํฌํŠธ๋ฒˆํ˜ธ)
3. ํšŒ์‚ฌ์ด๋ฆ„(์„œ๋น„์Šค ์ด๋ฆ„)

๐Ÿ’ก DBA๋ฅผ ์œ„ํ•œ tip

dba๋กœ ์ผํ•˜๋‹ค ๋ณด๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์ด sql developer๋กœ ์˜ค๋ผํด์ด ์ ‘์† ์•ˆ๋œ๋‹ค๊ณ  ๋ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. sqldeveloper๋กœ ์ ‘์†์„ ํ•˜๋ ค๋ฉด ip์ฃผ์†Œ, ํฌํŠธ๋ฒˆํ˜ธ, ์„œ๋น„์Šค ์ด๋ฆ„์„ ์•Œ์•„์•ผ ํ•˜๊ณ , ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์ด 3๊ฐ€์ง€๋ฅผ ์ž˜ ์„œ๋น„์Šคํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ“์ด๊ฑธ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด? 
$ `lsnrctl status`

โ“ ์ˆ˜๋™์œผ๋กœ pmon์—๊ฒŒ ๋ฆฌ์Šค๋„ˆ์—์„œ ์„œ๋น„์Šค ์ข€ ๋“ฑ๋กํ•ด์ค˜~ ํ•˜๋Š” ๋ช…๋ น์–ด?

SQL> `alter system register;`

๊ทธ ํ›„์— exit ํ•˜๊ณ  `lsnrctl status` ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋“ฑ๋ก๋จ!!

โœ๏ธ ์˜ค๋ผํด 12C๋ถ€ํ„ฐ ์œ„์˜ 3๊ฐ€์ง€ pmon ์—ญํ•  ์ค‘์— ๋งˆ์ง€๋ง‰ 3๋ฒˆ์งธ ์—ญํ• ์ธ ๋ฆฌ์Šค๋„ˆ์— ์„œ๋น„์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ณ„๋„๋กœ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ”„๋กœ์„ธ์„œ ์ด๋ฆ„์ด LREG (lister registeration) ํ”„๋กœ์„ธ์„œ์ž…๋‹ˆ๋‹ค. (19c๋ฌธ์ œ ํ’€๋•Œ๋Š” ๋”ฐ๋ผ์„œ 3๋ฒˆ์งธ ์—ญํ• ์€ pmon์˜ ์—ญํ• ์ด ์•„๋‹˜. 1,2๋ฒˆ๋งŒ)

profile
Slow and steady wins the race.

0๊ฐœ์˜ ๋Œ“๊ธ€