°ø°£ °ü¸®
°ø°£À» È¿À²ÀûÀ¸·Î °ü¸®ÇÏ´Â °ÍÀº µ¥ÀÌÅͺ£À̽ºÀÇ ¼º´É¿¡ Áß¿äÇÑ ÀÏÀÔ´Ï´Ù. ÀÌ Àå¿¡¼­´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ÀͽºÅÙÆ®¿Í ºí·ÏÀ» °ü¸®ÇÏ´Â ¹æ¹ýÀ» ´Ù·ì´Ï´Ù.

ºí·Ï
¿À¶óŬ¿¡¼­, ºí·ÏÀº µ¥ÀÌÅÍ ÆÄÀÏ I/OÀÇ °¡Àå ÀÛÀº ´ÜÀ§ÀÌÀÚ ÇÒ´çµÉ ¼ö ÀÖ´Â °ø°£ÀÇ °¡Àå ÀÛÀº ´ÜÀ§ÀÔ´Ï´Ù. ¿À¶óŬ ºí·ÏÀº ÇϳªÀÌ»óÀÇ ¿¬¼ÓÀûÀÎ ¿î¿µÃ¼Á¦ ºí·ÏÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù.

ÀͽºÅÙÆ®
ÀͽºÅÙÆ®´Â ¿©·¯ ¿¬¼ÓÀûÀÎ µ¥ÀÌÅÍ ºí·ÏÀ¸·Î ¸¸µé¾îÁø µ¥ÀÌÅͺ£À̽º ÀúÀåÀå¼Ò °ø°£ ÇÒ´çÀÇ ³í¸®Àû ´ÜÀ§ÀÔ´Ï´Ù. Çϳª ÀÌ»óÀÇ ÀͽºÅÙÆ®°¡ ¸ð¿© ¼¼±×¸ÕÆ®¸¦ ÀÌ·ì´Ï´Ù. ¼¼±×¸ÕÆ®¿¡¼­ ±âÁ¸ °ø°£ÀÌ ¿ÏÀüÈ÷ »ç¿ëµÇ¸é, ¿À¶óŬÀº ¼¼±×¸ÕÆ®¿¡ ´ëÇØ »õ·Î¿î ÀͽºÅÙÆ®¸¦ ÇÒ´çÇÕ´Ï´Ù.

¼¼±×¸ÕÆ®
¼¼±×¸ÕÆ®´Â Å×ÀÌºí½ºÆäÀ̽º ³»ÀÇ Æ¯Á¤ ³í¸®Àû ÀúÀ屸Á¶¿¡ ´ëÇÑ ¸ðµç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ÀͽºÅÙÆ®ÀÇ ÁýÇÕÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¿À¶óŬÀº °¢ Å×ÀÌºí¿¡ ´ëÇØ Çϳª ÀÌ»óÀÇ ÀͽºÅÙÆ®¸¦ ÇÒ´çÇÏ¿©, ±× Å×ÀÌºí¿¡ ´ëÇÑ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ Çü¼ºÇÕ´Ï´Ù. À妽º¿¡ ´ëÇؼ­´Â Çϳª ÀÌ»óÀÇ ÀͽºÅÙÆ®¸¦ ÇÒ´çÇÏ¿©, À妽º ¼¼±×¸ÕÆ®¸¦ Çü¼ºÇÕ´Ï´Ù.

µ¥ÀÌÅͺ£À̽º ÀÛ¾÷À¸·Î ÀÎÇØ µ¥ÀÌÅÍ°¡ Áõ°¡ÇÏ¿© ÇÒ´çµÈ °ø°£À» ÃÊ°úÇÒ ¶§, ¿À¶óŬÀº ¼¼±×¸ÕÆ®¸¦ È®ÀåÇÕ´Ï´Ù. INSERT³ª UPDATE ¹®À» ½ÇÇà½Ãų ¶§ ¼¼±×¸ÕÆ®¸¦ È®ÀåÇÏ¿© µ¿ÀûÀ¸·Î È®ÀåÀÌ ÀÌ·ç¾îÁö°Ô µÇ¸é ¼º´ÉÀº °¨¼ÒÇÕ´Ï´Ù. ¼­¹ö°¡ ¿©À¯ °ø°£À» ã°í µ¥ÀÌÅÍ µñ¼Å³Ê¸®¿¡ ÀͽºÅÙÆ®¸¦ Ãß°¡Çϱâ À§ÇÏ¿© ¿©·¯ ¼øȯÀû(recursive) SQL¹®À» ½ÇÇàÇϱ⠶§¹®ÀÔ´Ï´Ù.    

µ¿ÀûÀÎ È®ÀåÀ» ÇÇÇϱâ À§ÇÏ¿© ´ÙÀ½À» ¼öÇàÇÕ´Ï´Ù:

°ø°£À» ½±°Ô °ü¸®Çϱâ À§ÇÏ¿©, DBA´Â ÀûÀýÇÑ Å©±âÀÇ ¼¼±×¸ÕÆ®¿Í ÀͽºÅÙÆ®·Î °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î, ÀÛÀº ÀͽºÅÙÆ® º¸´Ù´Â Å« ÀͽºÅÙÆ®°¡ ¼±È£µË´Ï´Ù.

Å©±â°¡ Å« ÀͽºÅÙÆ®ÀÇ ÀåÁ¡

Å©±â°¡ Å« ÀͽºÅÙÆ®ÀÇ ´ÜÁ¡

Å« ÀͽºÅÙÆ®¸¦ Àû°Ô ÇÒ´çÇÒ °ÍÀΰ¡ ¾Æ´Ï¸é ÀÛÀº ÀͽºÅÙÆ®¸¦ ¸¹ÀÌ ÇÒ´çÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÒ ¶§¿¡´Â, Å×À̺íÀÇ Áõ°¡¿Í »ç¿ë¿¡ ´ëÇÑ °èȹ¿¡ ¸ÂÃß¾î °¢°¢ÀÇ ÀÌÁ¡°ú °áÇÔÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.

µ¥ÀÌÅͺ£À̽º Æ©´× ¸ñÇ¥ ÁßÀÇ Çϳª´Â ¾×¼¼½ºµÇ´Â ºí·ÏÀÇ ¼ö¸¦ ÃÖ¼ÒÈ­ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¸ñÇ¥¸¦ ´Þ¼ºÇϱâ À§ÇÏ¿©, °³¹ßÀÚ´Â ¾ÖÇø®ÄÉÀ̼ǰú SQL ¹®À» Æ©´×ÇÏ°í, DBA´Â ´ÙÀ½À» ÅëÇØ ºí·Ï ¾×¼¼½º¸¦ °¨¼Ò½Ãŵ´Ï´Ù:

ºÒÇàÇÏ°Ôµµ, DBA¿¡°Ô ¸¶Áö¸· 2°³ÀÇ ¸ñÇ¥´Â ¼­·Î »óÃæµË´Ï´Ù. Áï, ¸¹Àº µ¥ÀÌÅ͸¦ ºí·ÏÀ¸·Î ¾ÐÃà½ÃÅ°¸é, Çà ÀÌÀüÀÌ Áõ°¡Çϱ⠶§¹®ÀÔ´Ï´Ù

ºí·Ï Å©±âÀÇ Æ¯¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù:

¼±ÅÃµÈ ºí·Ï Å©±â´Â ¼º´É¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù. ÀϹÝÀûÀÎ GuidelineÀº ´ÙÀ½°ú °°½À´Ï´Ù:


ÀÛÀº ¿À¶óŬ ºí·Ï

ÀåÁ¡

´ÜÁ¡

Å« ¿À¶óŬ ºí·Ï

ÀåÁ¡

´ÜÁ¡

µ¥ÀÌÅͺ£À̽º ºí·ÏÀÇ Å©±â¸¦ ÀçÁ¶Á¤Çϴµ¥ Ãß°¡ ¸Þ¸ð¸®°¡ ¾øÀ» °æ¿ì, DB_BLOCK_BUFFERS¸¦ Àç¼³Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ij½¬ ÀûÁßÀ²¿¡ ¿µÇâÀ» ¹ÌÄ¥ °ÍÀÔ´Ï´Ù.

±â¼úÀû ÁÖÀÇ»çÇ×


2°³ÀÇ °ø°£ °ü¸® ÆĶó¹ÌÅÍ PCTFREE¿Í PCTUSED¸¦ »ç¿ëÇÏ¿©, ¼¼±×¸ÕÆ®ÀÇ ¸ðµç µ¥ÀÌÅÍ ºí·Ï ³»¿¡¼­ ¿©À¯ °ø°£ÀÇ »ç¿ëÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. Å×ÀÌºí ¶Ç´Â Å¬·¯½ºÅÍ(°íÀ¯ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ °®°í ÀÖ´Â)¸¦ »ý¼ºÇϰųª º¯°æÇÒ ¶§, À̵é ÆĶó¹ÌÅ͸¦ ÁöÁ¤ÇϽʽÿÀ. ¶ÇÇÑ, À妽º(°íÀ¯ À妽º ¼¼±×¸ÕÆ®¸¦ °®°í ÀÖ´Â)¸¦ »ý¼ºÇϰųª º¯°æÇÒ ¶§ PCTFREE °ø°£°ü¸® ÆĶó¹ÌÅ͸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

PCTFREE ÆĶó¹ÌÅÍ
PCTFREE ÆĶó¹ÌÅÍ´Â ºí·Ï¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â ÇàÀ» °»½ÅÇÒ ¶§ »ç¿ëÇϱâ À§ÇÑ ¿©À¯ °ø°£À¸·Î ³²°ÜµÑ µ¥ÀÌÅÍ ºí·ÏÀÇ ÃÖ¼Ò ÆÛ¼¾Æ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.

PCTUSED ÆĶó¹ÌÅÍ
PCTUSED ÆĶó¹ÌÅÍ´Â »õ·Î¿î ÇàÀÌ ºí·Ï¿¡ Ãß°¡µÇ±â Àü¿¡ Çà µ¥ÀÌÅÍ¿Í ¿À¹öÇìµå¿¡ ´ëÇØ »ç¿ëµÉ ¼ö ÀÖ´Â ºí·ÏÀÇ ÃÖ¼Ò ÆÛ¼¾Æ®¸¦ ¼³Á¤ÇÕ´Ï´Ù.

PCTFREE¿Í PCTUSEDÀÇ »óÈ£ ¿¬°ü °ü°è
¿¹¸¦ µé¾î, PCTFREE 20À¸·Î CREATE TABLE ¹®À» ½ÇÇà½Ãų °æ¿ì, ¿À¶óŬÀº °¢ ºí·Ï¿¡ Á¸ÀçÇÏ´Â Çà¿¡ ´ëÇØ °»½Å ÀÛ¾÷À» ¼öÇàÇϱâ À§ÇØ ÀÌ Å×À̺íÀÇ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¿¡ ÀÖ´Â °¢ µ¥ÀÌÅÍ ºí·ÏÀÇ 20%¸¦ ³²°ÜµÓ´Ï´Ù. ºí·ÏÀÇ »ç¿ëµÇ´Â °ø°£Àº (1)Çà µ¥ÀÌÅÍ¿Í ¿À¹öÇìµåÀÇ ÃÑÇÕÀÌ ÃÑ ºí·Ï »çÀÌÁîÀÇ 80%°¡ µÉ ¶§±îÁö  Áõ°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·± ´ÙÀ½, ºí·ÏÀº Ãß°¡ »ðÀÔÀ» ¸·±â À§ÇØ free list·ÎºÎÅÍ Á¦°ÅµË´Ï´Ù(2).

DELETE ¶Ç´Â UPDATE ¹®À» ½ÇÇà½ÃÅ°¸é, ¿À¶óŬÀº ¹®ÀåÀ» ó¸®ÇÏ°í, »ç¿ëµÇ°í ÀÖ´Â ºí·Ï °ø°£ÀÌ ÇöÀç PCTUSED º¸´Ù ÀÛÀº°¡¸¦ °Ë»çÇÕ´Ï´Ù. ÀÛÀ» °æ¿ì, ºí·ÏÀº free listÀÇ Ã³À½ ºÎºÐÀ¸·Î µî·ÏµË´Ï´Ù. Æ®·£Àè¼ÇÀÌ Ä¿¹ÔµÉ ¶§, ºí·ÏÀÇ ¿©À¯ °ø°£Àº ´Ù¸¥ Æ®·£Àè¼Ç¿¡ ÀÌ¿ëµÉ ¼ö ÀÖ½À´Ï´Ù(3).
µ¥ÀÌÅÍ ºí·ÏÀÌ ´Ù½Ã PCTFREE ÇÑ°è±îÁö ä¿öÁö¸é (4), ¿À¶óŬÀº ±× ºí·ÏÀÇ ÆÛ¼¾Æ®°¡ PCTUSED ÆĶó¹ÌÅÍ ¾Æ·¡·Î ³»·Á °¥ ¶§±îÁö »õ·Î¿î ÇàÀÇ »ðÀÔ ÀÛ¾÷¿¡ ºí·ÏÀ» »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.  

DML°ú PCTFREE ¹× PCTUSED
2°¡Áö À¯ÇüÀÇ ¹®ÀåÀÌ µ¥ÀÌÅÍ ºí·ÏÀÇ ¿©À¯ °ø°£À» Áõ°¡½Ãų ¼ö ÀÖ½À´Ï´Ù. Áï, ±âÁ¸ °ªÀ» ´õ ÀûÀº °ø°£À» »ç¿ëÇÏ´Â °ªÀ¸·Î °»½ÅÇÏ´Â UPDATE ¹®°ú DELETE ¹® ÀÔ´Ï´Ù.

ºí·ÏÀÇ ÇØÁ¦µÈ °ø°£Àº ¿¬¼ÓÀûÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ºí·ÏÀÇ Áß°£¿¡ ÀÖ´Â ÇàÀÌ »èÁ¦µÇ¾úÀ» ¶§, ¿À¶óŬÀº ´ÙÀ½ÀÇ °æ¿ì¿¡¸¸ µ¥ÀÌÅÍ ºí·ÏÀÇ ¿©À¯ °ø°£À» °áÇÕ(coalesce)ÇÕ´Ï´Ù:

  • INSERT ¶Ç´Â UPDATE¹®ÀÌ »õ·Î¿î Çà ºÎºÐÀ» Æ÷ÇÔÇϴµ¥ ÃæºÐÇÑ ¿©À¯ °ø°£À» °®°íÀÖ´Â  ºí·ÏÀ» »ç¿ëÇÏ·Á°í ½ÃµµÇÒ ¶§
  • ¿©À¯ °ø°£ÀÌ ´ÜÆíÈ­µÇ¾î, Çà ºÎºÐÀÌ ºí·ÏÀÇ ¿¬¼Ó ¼½¼Ç¿¡ »ðÀ﵃ ¼ö ¾øÀ» ¶§

µ¥ÀÌÅÍ ºí·ÏÀÇ ¿©À¯ °ø°£À» ¿¬¼ÓÀ¸·Î ¾ÐÃàÇÏ´Â °ÍÀ¸·Î ÀÎÇØ µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛÀÇ ¼º´ÉÀÌ °¨¼ÒÇϱ⠶§¹®¿¡, ¿À¶óŬÀº À§¿Í °°Àº °æ¿ì¿¡¸¸ ÀÌ·¯ÇÑ ¾ÐÃàÀ» ¼öÇàÇÕ´Ï´Ù.

Guidelines

´ÙÀ½°ú °°Àº µÎ °¡Áö »óȲ¿¡¼­´Â, Å×À̺í ÇàÀÇ µ¥ÀÌÅÍ°¡ ³Ê¹« Å©±â ¶§¹®¿¡ ´ÜÀÏ µ¥ÀÌÅÍ ºí·Ï¿¡ ´Ù µé¾î°¡Áö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

ÀÌÀü ¹× ¿¬¼âÈ­´Â ´ÙÀ½°ú °°ÀÌ ¼º´É¿¡ ºÎÁ¤ÀûÀÎ ¿µÇâÀ» ¹ÌĨ´Ï´Ù:

ÀÌÀü Çö»óÀº PCTFREE°¡ ³Ê¹« ³·°Ô ¼³Á¤ µÇ¾úÀ» ¶§ ¹ß»ýÇÕ´Ï´Ù. °»½Å ÀÛ¾÷À» ¼öÇàÇϴµ¥ ÃæºÐÇÑ ¿©À¯ ¸Þ¸ð¸®°¡ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ÀÌÀü Çö»óÀ» ÇÇÇϱâ À§Çؼ­´Â, °»½ÅµÇ´Â ¸ðµç Å×À̺íÀº ºí·Ï °ø°£ÀÌ °»½Å ÀÛ¾÷¿¡ ÃæºÐÇϵµ·Ï PCTFREE¸¦ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.  

ANALYZE ¡¦COMPUTE STATISTICS
ANALYZE ¹®ÀÇ COMPUTE STATISTICS optionÀ» »ç¿ëÇϸé Å×À̺íÀ̳ª Ŭ·¯½ºÅÍ ³»¿¡ ÀÌÀü ¹× ¿¬¼âÈ­ µÈ ÇàÀÌ Á¸ÀçÇÏ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.  ÀÌ ¸í·É¾î´Â ÀÌÀü ¹× ¿¬¼âÈ­ µÈ ÇàÀÇ ¼ö¸¦ ¼¼¾î DBA_TABLESÀÇ CHAIN_CNT¿­¿¡ ±â·ÏÇÕ´Ï´Ù.

NUM_ROWS¿­Àº ºÐ¼®µÈ Å×ÀÌºí ¶Ç´Â Å¬·¯½ºÅÍ¿¡ ÀúÀåµÈ ÃÑ Çà¼ö¸¦ °¡Áý´Ï´Ù.ÀÌÀüµÈ ÇàÀ» Á¦°ÅÇØ¾ß ÇÒ Áö¸¦ °áÁ¤Çϱâ À§Çؼ­ Àüü Çà ¼ö¿¡ ´ëÇÑ ÀÌÀü ¹× ¿¬¼âÈ­
µÈ ÇàÀÇ ºñÀ²À» °è»êÇϽʽÿÀ.

Table Fetch Continued Row Statistic
¶ÇÇÑ V$SYSSTATÀ̳ª report.txtÀÇ Table Fetch Continued Row Åë°èÁ¤º¸¸¦ È®ÀÎÇÏ¿© ÀÌÀü ¹× ¿¬°á µÈ ÇàÀÌ ÀÖ´ÂÁö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù.

Guidelines
PCTFREE¸¦ Áõ°¡½ÃÄÑ, ÀÌÀüµÇ´Â ÇàÀ» ÇÇÇϽʽÿÀ. ºí·Ï¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ´õ ¸¹Àº ¿©À¯ °ø°£ÀÌ ÀÖ´Ù¸é, ÇàÀº Áõ°¡Çϴµ¥ ÇÊ¿äÇÑ °ø°£À» °®°Ô µÉ °ÍÀÔ´Ï´Ù.  ¶ÇÇÑ ¸¹Àº »èÁ¦°¡ ÀÖ´Â Å×À̺íÀ̳ª À妽º¸¦ À籸¼º(Àç»ý¼º) ÇÒ ¼ö ÀÖ½À´Ï´Ù. 

ANALYZE ... LIST CHAINED ROW
LIST CHAINED ROWS ¿É¼Ç°ú ÇÔ²² ANALYZE ¸í·ÉÀ» »ç¿ëÇÏ¿©, Å×ÀÌºí ¶Ç´Â Å¬·¯½ºÅÍ¿¡¼­ ÀÌÀüµÇ¾ú°Å³ª ¿¬°áµÈ ÇàÀ» ½Äº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·ÉÀº ÀÌÀüµÇ¾ú°Å³ª ¿¬°áµÈ °¢ Çà¿¡ ´ëÇÑ Á¤º¸¸¦ ¼öÁýÇÏ¿© ƯÁ¤ Ãâ·Â Å×ÀÌºí¿¡ ³õ½À´Ï´Ù. ¿¬°áµÈ ÇàÀ» Æ÷ÇÔÇÏ´Â Å×À̺íÀ» »ý¼ºÇϱâ À§Çؼ­´Â, UTLCHAIN.SQL ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÅ°½Ê½Ã¿À.

  create table CHAINED_ROWS(
     owner_name         varchar2(30),
     table_name         varchar2(30),
     cluster_name       varchar2(30),
     partition_name     varchar2(30),
     head_rowid         rowid,
     analyze_timestamp  date);

ÀÌ Å×À̺íÀ» ¼öµ¿À¸·Î »ý¼ºÇÒ °æ¿ì, Å×À̺íÀÇ ¿­ À̸§, µ¥ÀÌÅÍ À¯Çü, Å©±â´Â CHAINED_ROWS Å×À̺íÀÇ °Í°ú °°¾Æ¾ß ÇÕ´Ï´Ù.

´ÙÀ½ÀÇ SQL*Plus ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ÀÌÀüµÈ ÇàÀ» »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù:
 
   /* Get the name of the table with migrated rows */
   accept table_name prompt ¡®Enter the name of the table with migrated rows:¡¯
   /* Clean up from last execution */
   set echo off
   drop table migrated_rows;
   drop table chained_rows;

   /* Create the CHAINED_ROWS table */
   @?/rdbms/admin/utlchain
   set echo on
   spool fix_mig
   /* List the chained & migrated rows */
   analyze table &table_name list chained rows;
   /* Copy the chained/migrated rows to another table */
   create table migrated_rows as
       select   orig.*  
           from   &table_name orig, chained_rows  cr
           where    orig.rowid = cr.head_rowid;
           and     cr.table_name = upper (¡®&table_name¡¯);

   /* Delete the chained/migrated rows from the orignial table */
   delete from &table_name
       where rowid in ( select head_rowid  from  chained_rows);

   /*  Copy the chained/migrated rows back into the original table */
   insert into &table_name select * from  migrated_rows;

   spool off

ÀÌ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÒ ¶§¿¡´Â, ÇàÀÌ »èÁ¦ ½Ã À§¹ÝÇÏ°Ô µÉ ¿ÜºÎÅ°(foreign key) Á¦¾àÁ¶°ÇÀ» Ãâ·ÂÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

ÃÖ°í ¼öÀ§ Ç¥½Ã À§ÀÇ °ø°£Àº ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© Å×ÀÌºí ·¹º§¿¡¼­ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:

   ALTER TABLE <table_name> DEALLOCATE UNUSED¡¦

Àüü Å×ÀÌºí ½ºÄµ ½Ã, ¿À¶óŬÀº ÃÖ°í ¼öÀ§ Ç¥½Ã ¾Æ·¡ÀÇ ¸ðµç ºí·ÏÀ» ÀнÀ´Ï´Ù. ÃÖ°í ¼öÀ§ Ç¥½Ã À§ÀÇ ºó ºí·ÏÀº °ø°£À» ³¶ºñÇÒ ¼ö´Â ÀÖÁö¸¸, ¼º´ÉÀ» ÀúÇϽÃÅ°Áö´Â ¾Ê½À´Ï´Ù. ±×·¯³ª, ÃÖ°í ¼öÀ§ Ç¥½Ã ¾Æ·¡ÀÇ »ç¿ëµÈ ºí·Ï ÀÌÇÏ´Â ¼º´ÉÀ» ÀúÇϽÃų °ÍÀÔ´Ï´Ù.

Åë°è¸¦ ¼öÁýÇÏ°í µ¥ÀÌÅÍ µñ¼Å³Ê¸® ÀúÀåÀå¼Ò¿¡ ÀúÀåÇϱâ À§ÇÏ¿©, Å×À̺í, À妽º, Ŭ·¯½ºÅÍÀÇ ÀúÀåÀå¼Ò Ư¼ºÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̵é Åë°è¸¦ »ç¿ëÇÏ¿© Å×À̺íÀ̳ª À妽º°¡ »ç¿ëµÇÁö ¾ÊÀº °ø°£À» °®°í ÀÖ´ÂÁöÀÇ ¿©ºÎ¸¦ °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

DBA_TABLES ºä¸¦ ÁúÀÇÇÏ¿© °á°ú Åë°è ÀڷḦ º¸½Ê½Ã¿À.

¿­

¼³¸í

NUM_ROWS

Å×À̺íÀÇ Çà ¼ö

BLOCKS 

ÃÖ°í ¼öÀ§ Ç¥½Ã ¾Æ·¡ÀÇ ºí·Ï ¼ö

EMPTY_BLOCKS 

ÃÖ°í ¼öÀ§ Ç¥½Ã À§ÀÇ ºí·Ï ¼ö

AVG_SPACE

ÃÖ°í ¼öÀ§ Ç¥½Ã ¾Æ·¡ ºí·ÏÀÇ Æò±Õ ¿©À¯°ø°£

AVG_ROW_LEN 

Çà ¿À¹öÇìµå¸¦ Æ÷ÇÔÇÑ, Æò±Õ Çà ±æÀÌ

CHAIN_CNT    

Å×À̺íÀÇ ÀÌÀüµÈ ¶Ç´Â ¿¬°áµÈ Çà ¼ö

EMPTY_BLOCKS´Â ÀÌÀü¿¡´Â ¿ÏÀü »ç¿ëµÇ¾úÁö¸¸  ÇöÀç´Â ºñ¿öÀÖ´Â ºí·ÏÀ» ³ªÅ¸³»´Â °ÍÀÌ ¾Æ´Ï¶ó, ¾ÆÁ÷ »ç¿ëµÇÁö ¾ÊÀº ºí·ÏÀ» ³ªÅ¸³À´Ï´Ù.

±â¼úÀû ÁÖÀÇ»çÇ×
¿À¶óŬÀº SAMPLE ÀýÀÌ »ý·«µÉ °æ¿ì¿¡´Â 1064 ÇàÀ» »ùÇ÷ΠÇÏ°í, µ¥ÀÌÅÍÀÇ ¹Ý ÀÌ»óÀÌ SAMPLE ¼öÄ¡¿¡ ÀÇÇØ ÁöÁ¤µÇ¾úÀ» °æ¿ì¿¡´Â ESTIMATE°¡ ¾Æ´Ï¶ó COMPUTE¸¦ »ç¿ëÇÕ´Ï´Ù.

¶ÇÇÑ Áö¿øµÇ´Â À§ÀÇ ÆÐÅ°Áö¸¦ »ç¿ëÇÏ¿© ¼¼±×¸ÕÆ®ÀÇ °ø°£ »ç¿ë¿¡ °üÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÆÐÅ°Áö¿¡´Â 2°³ÀÇ ÇÁ·Î½ÃÀú°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù:

À̵é ÇÁ·Î½ÃÀú´Â catproc.sql¿¡ ÀÇÇØ ½ÇÇàµÇ´Â dbmsutil.sql ½ºÅ©¸³Æ®¿¡ ÀÇÇØ »ý¼ºµÇ¾î ¹®¼­È­µË´Ï´Ù. ÀÌ ÆÐÅ°Áö¸¦ ½ÇÇà½Ãų ¶§, FREE_LIST_GROUP_ID °ªÀ» Á¦°øÇØ¾ß ÇÕ´Ï´Ù. Oracle Parallel Server¸¦ »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì, 1À» »ç¿ëÇϽʽÿÀ.

ÀÌ ½ºÅ©¸³Æ®´Â »ç¿ëÀÚ¿¡°Ô Å×ÀÌºí ¼ÒÀ¯ÀÚ¿Í Å×À̺í¸í¿¡ °üÇÑ Á¤º¸¸¦ Á¦°øÇÏ°í, DBMS_SPACE.UNUSED_SPACE¸¦ ½ÇÇà½ÃÅ°¸ç, °ø°£ °ü·Ã Åë°è¸¦ Ãâ·ÂÇÕ´Ï´Ù.

 
Declare
   owner       varchar2(30);  
   name        varchar2(30)
   seq_type    varchar2(30)
   tblock      number;
   uBlock      number;
   ubyte       number;
   lue_fid     number;
   lue_bid     number;
   lublock     number;
BEGIN
   dbms_space.unused_space (¡®&owner¡¯, ¡®&table_name¡¯, ¡®TABLE¡¯,
        tblock, tbyte, ublock, ubyte, lue_fid, lue_bid, lublock);
   dbms_output.put_line (¡®Total blocks allocated to table = ¡®
        || to_char(tblock));
   dbms_output.put_line (¡®Total blocks allocated to table = ¡®
        || to_char(tbyte));
   dbms_output.put_line (¡®Unused blocks(above HWM)        = ¡®
        || to_char(ublock));
   dbms_output.put_line (¡®Unused blocks(above HWM)        = ¡®
        || to_char(ubyte));
   dbms_output.put_line (¡®Last extent used file id        = ¡®
        || to_char(lue_fid));
   dbms_output.put_line (¡®Last extent used beginning block id = ¡®
        || to_char(lue_bid));
   dbms_output.put_line (¡®Last extent block in last extent    = ¡®
        || to_char(lublock));
END;

Èֹ߼º Å×ÀÌºí¿¡ ´ëÇÑ À妽º ¶ÇÇÑ ¼º´É ¹®Á¦¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.  

µ¥ÀÌÅÍ ºí·Ï¿¡¼­, ¿À¶óŬÀº »èÁ¦µÈ ÇàÀ» »ðÀÔµÈ ÇàÀ¸·Î ±³Ã¼ÇÕ´Ï´Ù. ±×·¯³ª, À妽º ºí·Ï¿¡¼­´Â, ¿£Æ®¸®µéÀ» ¼ø¼­´ë·Î Á¤¿­ÇÕ´Ï´Ù. °ªÀº µ¿ÀÏÇÑ ¹üÀ§ÀÇ ´Ù¸¥ °ªµé°ú ÇÔ²² Àû´çÇÑ ºí·ÏÀ¸·Î °©´Ï´Ù.

¸¹Àº ¾ÖÇø®ÄÉÀ̼ÇÀº ¿À¸§Â÷¼ø À妽º ¼ø¼­·Î »ðÀÔÇÏ°í ÀÌÀü °ªÀ» »èÁ¦ÇÕ´Ï´Ù. ±×·¯³ª, ºí·ÏÀÌ ÇÑ ¿£Æ®¸®¸¸À» Æ÷ÇÔÇÏ´õ¶óµµ, ÀÌ ºí·ÏÀº À¯ÁöµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡, À妽º¸¦ ±ÔÄ¢ÀûÀ¸·Î À籸ÃàÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù.

À妽º ºí·ÏÀÇ ¸ðµç ¿£Æ®¸®¸¦ »èÁ¦ÇÒ °æ¿ì, ¿À¶óŬÀº ÀÌ ºí·ÏÀ» free list¿¡ ´Ù½Ã ³õ½À´Ï´Ù.

´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÏ¿© À妽º¿¡ ÀÇÇØ »ç¿ëµÇ´Â °ø°£À» °¨½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

  SQL> ANALYZE INDEX index_name VALIDATE STRUCTURE;

±×·± ´ÙÀ½ INDEX_STATS ºä¸¦ ÁúÀÇÇϽʽÿÀ:

¿­

 ¼³¸í

LF_ROWS 

 ÇöÀç ÀÎÅؽº¿¡ ÀÖ´Â °ªÀÇ ¼ö

LF_ROWS_LEN

 ¸ðµç °ªÀÇ ±æÀÌÀÇ ¹ÙÀÌÆ® ÇÕ

DEL_LF_ROWS 

 À妽º¿¡¼­ »èÁ¦µÈ °ªÀÇ ¼ö

DEL_LF_ROWS_LEN

 ¸ðµç »èÁ¦µÈ °ªÀÇ ±æÀÌ

        
ÁÖÀÇ: INDEX_STATS ºä´Â °¡Àå ¸¶Áö¸·¿¡ ºÐ¼®µÈ À妽º¸¦ º¸¿©ÁÝ´Ï´Ù. ¸¸ÀÎ µ¿ÀÏ »ç¿ëÀÚ·Î ´Ù¸¥ ¼¼¼ÇÀ¸·Î Á¢¼ÓÇÏ¿´´Ù¸é ºä´Â ±× ºä¸¦ ÁúÀÇÇÏ´Â ¼¼¼Ç¿¡¼­ ºÐ¼®µÈ À妽º¸¦ º¸¿© ÁÝ´Ï´Ù.

À妽º À籸¼º(REBUILD)
¾ÖÇø®ÄÉÀ̼ǰú ¿ì¼±¼øÀ§¿¡ µû¶ó ´Ù¸£°ÚÁö¸¸, »èÁ¦µÈ ¿£Æ®¸®°¡ ÇöÀç ¿£Æ®¸®ÀÇ 20% ¶Ç´Â ±× ÀÌ»óÀ» ³ªÅ¸³¾ °æ¿ì À籸ÃàÇÒ °ÍÀ» °áÁ¤ÇÒ °ÍÀÔ´Ï´Ù. À§ÀÇ ÁúÀǸ¦ »ç¿ëÇÏ¿© ºñÀ²À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. ALTER INDEX REBUILD ¹®À» »ç¿ëÇÏ¿©, ±âÁ¸ À妽º¸¦ À籸¼ºÇϰųª ¾ÐÃàÇϵçÁö, ¶Ç´Â ÀúÀåÀå¼Ò Ư¼ºÀ» º¯°æÇϽʽÿÀ. REBUILD ¹®Àº ±âÁ¸ À妽º¸¦ »ç¿ëÇÏ¿© »õ·Î¿î À妽º¸¦ ±¸ÃàÇÕ´Ï´Ù. STORAGE(ÀͽºÅÙÆ® ÇÒ´ç¿¡ ´ëÇØ), TABLESPACE(À妽º¸¦ »õ·Î¿î Å×ÀÌºí½ºÆäÀ̽º·Î À̵¿½ÃÅ°±â À§ÇØ), INITRANS(Ãʱ⠿£Æ®¸®ÀÇ ¼ö¸¦ º¯°æÇϱâ À§ÇØ)¿Í °°Àº ¸ðµç À妽º ÀúÀåÀå¼Ò ¸í·É¾î°¡ Áö¿øµË´Ï´Ù.¶ÇÇÑ, À妽º¸¦ ±¸ÃàÇÒ ¶§, ´ÙÀ½ Å°¿öµå¸¦ »ç¿ëÇÏ¿© À籸ÃàÇϴµ¥ ¼Ò¿äµÇ´Â ½Ã°£À» °¨¼Ò½Ãų ¼ö ÀÖ½À´Ï´Ù:

UNRECOVERATBLE°ú NOLOGGINGÀº µ¿ÀÏÇÏÁö ¾Ê½À´Ï´Ù.

ÁÖÀÇ: Oracle8ÀÇ Ãʱâ¹öÀü¿¡¼­´Â UNRECOVERABLE ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ¾úÁö¸¸, ±×°ÍÀº  NOLOGGING ¿É¼ÇÀ¸·Î ´ëüµÇ¾ú½À´Ï´Ù.

UNRECOVERABLE Àýó·³ »ç¿ëÇϱâ À§ÇÏ¿©, NOLOGGING ¿É¼ÇÀ¸·Î °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ ALTER ¸í·ÉÀ¸·Î LOGGINGÀ¸·Î º¯°æÇϽʽÿÀ. RECOVERABLE Àýó·³ »ç¿ëÇϱâ À§ÇÏ¿©, LOGGING ¿É¼ÇÀ¸·Î °´Ã¼¸¦ »ý¼ºÇϽʽÿÀ.

ALTER INDEX REBUILD´Â ÀϹÝÀûÀ¸·Î ºü¸¥ Àüü ½ºÄµ ±â´ÉÀ» ÀÌ¿ëÇϱ⠶§¹®¿¡ À妽º¸¦ ÇØÁ¦ÇÏ°í Àç»ý¼ºÇÏ´Â °Íº¸´Ù ÈξÀ ´õ ºü¸¨´Ï´Ù. µû¶ó¼­, ALTER INDEX REBUILD´Â º¹¼ö ºí·Ï I/O¸¦ »ç¿ëÇÏ¿© ¸ðµç À妽º ºí·ÏÀ» ÀÐÀº ´ÙÀ½ ºÐ±â ºí·ÏÀº »èÁ¦ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Á¢±Ù¹ýÀÇ ´õ ³ªÀº ÀåÁ¡Àº À籸Ãà ÀÛ¾÷ÀÌ ÁøÇà µÇ´Â µ¿¾È¿¡µµ ÀÌÀüÀÇ À妽º¸¦ ÁúÀÇ(DML¿¡ ´ëÇؼ­´Â ¾ÈµÊ)¿¡ ¿©ÀüÈ÷ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.

±â¼úÀû ÁÖÀÇ»çÇ×
ANALYZE ¸í·ÉÀÇ º¯ÇüÀ¸·Î À妽º°¡ ¼Õ»óµÉ °æ¿ì, À妽º¸¦ À籸ÃàÇØ¾ß ÇÕ´Ï´Ù.


 ¹®¸Æ

 ÂüÁ¶

 ÃʱâÈ­ ÆĶó¸ÞÅÍ 

 None

 µ¿ÀûÀÎ ¼º´É ºä 

 V$SYSSTAT
 V$SESSTAT
 V$MYSTAT

 µ¥ÀÌÅÍ µñ¼Å³Ê¸® ºä

 USER_, ALL_, DBA_CLUSTERS
 USER_, ALL_, DBA_INDEXES
 USER_, ALL_, DBA_TABLES
 INDEX_STATS

 ¸í·É¾î

 ALTER/CREATE INDEX/TABLE/CLUSTER
 ALTER INDEX ¡¦ REBUILD
 TRUNCATE
 ANALYZE ¡¦ COMPUTE STATISTICS
 ANALYZE ¡¦ LIST CHAINED ROWS

 ÆÐÅ°ÁöµÈ ÇÁ·Î½ÃÀú ¹× ÇÔ¼ö

 DBMS_SPACE

 ½ºÅ©¸³Æ® 

 dbmsutil.sql, utlchain.sql

 Áø´ÜÆÑ ¾ÖÇø®ÄÉÀ̼Ç

 Performance Manager 

X Á¤´ä:C


X Á¤´ä:A


X Á¤´ä:D


O


X Á¤´ä:DACB


O


O