°úÁ¤ ¸ñÇ¥
º» °úÁ¤¿¡¼´Â
Æ®·£Àè¼ÇÀÇ °³³ä¿¡ ´ëÇؼ »ó¼¼È÷ ¾Ë¾Æº¸°í, Æ®·£Àè¼ÇÀ» ±¸¼ºÇÏ´Â ¿©·¯ °¡Áö ¿ä¼Òµé¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù. ¶ÇÇÑ COMMIT, SAVEPOINT ±×¸®°í ROLLBACK
¹®ÀåÀ¸·Î Æ®·£Àè¼ÇÀ» Á¦¾îÇÏ´Â ¹æ¹ýÀ» ¹è¿ó ´Ï´Ù.
Æ®·£Àè¼ÇÀÇ ½ÃÀÛ°ú Á¾·á ½Ã±â´Â?
Æ®·£Àè¼ÇÀº ½ÇÇà °¡´ÉÇÑ SQL ¹®ÀåÀÌ Á¦ÀÏ Ã³À½ ½ÇÇàµÉ ¶§ ½ÃÀÛÇÏ°í, ´ÙÀ½ÀÇ °æ¿ì¿¡ Á¾·áÇÕ´Ï´Ù.
ÇϳªÀÇ Æ®·£Àè¼ÇÀÌ ³¡³ ÈÄ¿¡ ´ÙÀ½ÀÇ ½ÇÇà °¡´ÉÇÑ SQL ¹®ÀåÀº ÀÚµ¿ÀûÀ¸·Î ´ÙÀ½ Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÒ
°ÍÀÔ´Ï´Ù.
DDL ¹®ÀåÀ̳ª DCL ¹®ÀåÀº ÀÚµ¿ÀûÀ¸·Î Ä¿¹ÔµÇ¹Ç·Î Æ®·£Àè¼ÇÀ» ¾Ï½ÃÀûÀ¸·Î Á¾·áÇÕ´Ï´Ù.
¸í½ÃÀû Æ®·£Àè¼Ç Á¦¾î ¹®Àå
COMMIT, SAVEPOINT ±×¸®°í ROLLBACK ¹®ÀåÀ» »ç¿ëÇÏ¿© Æ®·£Àè¼ÇÀÇ ³í¸®¸¦ Á¦¾îÇÒ ¼ö
ÀÖ½À´Ï´Ù.
¹®Àå |
¼³¸í |
COMMIT |
¸ðµç ¹Ì°áÁ¤ µ¥ÀÌÅ͸¦ ¿µ±¸ÀûÀ¸·Î º¯°æÇÔÀ¸·Î¼ ÇöÀç Æ®·£Àè¼ÇÀ»
Á¾·áÇÕ´Ï´Ù. |
SAVEPOINT name |
ÇöÀç Æ®·£Àè¼Ç ³»¿¡ savepoint ¸¦ Ç¥½ÃÇÕ´Ï´Ù. |
ROLLBACK [TO SAVEPOINT name] |
ROLLBACKÀº ¸ðµç ¹Ì°áÁ¤ µ¥ÀÌÅÍ º¯°æÀ» ¹ö¸²À¸·Î½á ÇöÀçÀÇ Æ®·£Àè¼ÇÀ» Á¾·áÇÕ´Ï´Ù. ROLLBACK TO SAVEPOINT name Àº savepoint¿Í ¸ðµç ¿¬ÀÌÀº º¯°æÀ» ¹ö¸³´Ï´Ù. |
ÁÖ: SAVEPOINT´Â ANSI Ç¥ÁØ SQLÀÌ ¾Æ´Õ´Ï´Ù.
¾Ï½ÃÀû Æ®·£Àè¼Ç ó¸®
»óÅÂ |
»óȲ |
ÀÚµ¿ Ä¿¹Ô |
DDL ¹®ÀåÀ̳ª DCL ¹®ÀåÀº ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù. |
ÀÚµ¿ ·Ñ¹é |
SQL*Plus ÀÇ ºñÁ¤»óÀûÀÎ Á¾·á³ª ,¶Ç´Â ½Ã½ºÅÛ ¿À·ù |
ÁÖ: SQL*Plus
AUTOCOMMIT ¸í·ÉÀº ONÀ̳ª OFF·Î Åä±ÛµÉ ¼ö ÀÖ½À´Ï´Ù. ONÀÌ¸é °¢°¢ÀÇ °³º°ÀûÀÎ DML ¹®ÀåÀÌ ½ÇÇàµÇÀÚ¸¶ÀÚ Ä¿¹ÔµË´Ï´Ù.±×·¯¹Ç·Î º¯°æÀ»
·Ñ¹éÇÒ ¼ö ¾ø½À´Ï´Ù. OFF·Î ¼³Á¤Çϸé COMMITÀº ¸í½ÃÀûÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ COMMITÀº DDL ¹®ÀåÀÌ ¿Ï·áµÇ°Å³ª
SQL*Plus¸¦ Á¾·áÇÒ ¶§ ¿Ï·áµË´Ï´Ù
½Ã½ºÅÛ
½ÇÆÐ
Æ®·£Àè¼ÇÀÌ ½Ã½ºÅÛ ½ÇÆп¡ ÀÇÇØ Áß´ÜµÉ ¶§ ¸ðµç Æ®·£Àè¼ÇÀº ÀÚµ¿ÀûÀ¸·Î
·Ñ¹éµË´Ï´Ù. ÀÌ°ÍÀº µ¥ÀÌÅÍ¿¡ ´ëÇؼ ¿øÇÏÁö ¾Ê´Â º¯°æÀ» ¸·¾Æ ÁÖ°í Å×À̺íÀ» ¸¶Áö¸·À¸·Î Ä¿¹ÔµÈ ½ÃÁ¡À¸·Î »óŸ¦ µÇµ¹¸³´Ï´Ù. SQLÀº Å×À̺íÀÇ
¹«°á¼ºÀ» º¸È£ÇÕ´Ï´Ù.
º¯°æÀ» Ä¿¹Ô
Æ®·£Àè¼Ç
µ¿¾È¿¡ ÀÌ·ç¾îÁö´Â ¸ðµç µ¥ÀÌÅÍ º¯°æÀº Æ®·£Àè¼ÇÀÌ Ä¿¹ÔµÇ±â Àü±îÁö´Â ÀÓ½ÃÀû ÀÔÀÌ´Ù.
COMMITÀ̳ª ROLLBACK ÀÌÀüÀÇ µ¥ÀÌÅÍ »óÅÂ
º¯°æ Ä¿¹Ô(°è¼Ó)
COMMIT ¹®ÀåÀ» »ç¿ëÇÏ¿© ¸ðµç ¹Ì°áÁ¤ º¯°æÀ» ¿µ±¸ÀûÀÎ º¯°æÀ¸·Î ¸¸µì´Ï´Ù.
´ÙÀ½ÀÌ
COMMITÀÔ´Ï´Ù.
º¯°æ Ä¿¹Ô(°è¼Ó)
À§ÀÇ ¿¹´Â EMP Å×À̺íÀ» °»½ÅÇÏ°í Á¾¾÷¿ø
7782(Clark)¿¡ ´ëÇÑ ºÎ¼ ¹øÈ£¸¦ 10À¸·Î ¼³Á¤ÇÕ´Ï´Ù. ±×·± ´ÙÀ½¿¡ COMMIT ¹®ÀåÀ» ¼öÇàÇÏ¿© ¿µ±¸ÀûÀ¸·Î º¯°æÀ»
ÇÕ´Ï´Ù.
¿¹
ÃÖ¼ÒÇÑ ÇÑ ¸íÀÇ Á¾¾÷¿øÀÌ ÀÖ´Â »õ·Î¿î ADVERTISING ºÎ¼¸¦ »ý¼ºÇÕ´Ï´Ù. µ¥ÀÌÅÍ º¯°æÀ»
¿µ±¸ÀûÀ¸·Î ¸¸µì´Ï´Ù.
SQL> INSERT INTO department(deptno,
dname, loc) |
SQL> UPDATE employee |
SQL> COMMIT; |
º¯°æ ·Ñ¹é
ROLLBACK ¹®ÀåÀ» »ç¿ëÇÏ¿© ¸ðµç ¹Ì°áÁ¤ º¯°æÀ» ¹ö¸³´Ï´Ù.
´ÙÀ½Àº ROLLBACKÀÔ´Ï´Ù.
¿¹
TEST Å×À̺íÀÇ ·¹Äڵ带 Á¦°ÅÇÏ·Á°í ÇÏ¸é ¶æÇÏÁö ¾Ê°Ô Å×À̺íÀ» Áö¿ö ¹ö¸± ¼ö
ÀÖ½À´Ï´Ù. ½Ç¼ö¸¦ Á¤Á¤ÇÑ ´ÙÀ½¿¡ ¿Ã¹Ù¸¥ ¹®ÀåÀ» ´Ù½Ã ½ÇÇàÇÏ¿© µ¥ÀÌÅ͸¦ ¿µ±¸ÀûÀ¸·Î º¯°æÇÕ´Ï´Ù.
SQL> DELETE FROM test; |
Savepoint·Î º¯°æÀ» ·Ñ¹é
SAVEPOINT ¹®ÀåÀ» »ç¿ëÇÏ¿© ÇöÀç Æ®·£Àè¼Ç ³»¿¡ Ç¥½ÃÀÚ(marker)¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.±×·¯¹Ç·Î Æ®·£Àè¼ÇÀº º¸´Ù
ÀÛÀº ¿µ¿ªÀ¸·Î ³ª´ ¼ö ÀÖ½À´Ï´Ù. ±×·± ´ÙÀ½¿¡ ROLLBACK TO SAVEPOINT ¹®ÀåÀ» »ç¿ëÇÏ¿© ÇØ´ç Ç¥½ÃÀÚ±îÁö·Î ¹Ì°áÁ¤ÀÇ º¯°æµéÀ» ¹ö¸³´Ï´Ù.
ÀÌÀüÀÇ savepoint¿Í ¶È°°Àº À̸§À¸·Î
µÎ¹ø° savepoint¸¦
»ý¼ºÇÑ´Ù¸é ÀÌÀüÀÇ savepoint´Â »èÁ¦ µË´Ï´Ù.
¹®Àå ·¹º§ ·Ñ¹é
¹®Àå ½ÇÇà
¿¡·¯°¡ ¹ß°ßµÇ¸é Æ®·£Àè¼ÇÀÇ ÀϺδ ¾Ï½ÃÀû ·Ñ¹éÀ¸·Î ¹ö·ÁÁú ¼ö ÀÖ½À´Ï´Ù. ´ÜÀÏ DML ¹®ÀåÀÌ Æ®·£Àè¼Ç ½ÇÇà µ¿¾È¿¡ ½ÇÆÐÇÑ´Ù¸é ±× ¹®Àå¿¡ ÀÇÇÑ
º¯°æÀº ¹®Àå ·¹º§ ·Ñ¹é¿¡ ÀÇÇØ Ãë¼ÒµÇÁö¸¸, Æ®·£Àè¼Ç¿¡ ÀÖ´Â ÀÌÀüÀÇ DML ¹®Àå¿¡ ÀÇÇØ ¸¸µé¾îÁø º¯°æÀº ¹ö·ÁÁöÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ±× ¹®ÀåµéÀº
»ç¿ëÀÚ¿¡ ÀÇÇؼ ¸í½ÃÀûÀ¸·Î Ä¿¹ÔÀ̳ª ·Ñ¹éµÉ ¼ö ÀÖ½À´Ï´Ù.
¿À¶óŬÀº ¸ðµç µ¥ÀÌÅÍ Á¤ÀǾî(DDL) ¹®Àå¿¡¼ ¾Ï½ÃÀû COMMITÀ»
¼öÇàÇÕ´Ï´Ù. ±×·¡¼, ºñ·Ï DDL ¹®ÀåÀÌ ¼º°øÀûÀ¸·Î ½ÇÇàµÇÁö ¾Ê¾Ò´õ¶óµµ ¼¹ö°¡ Ä¿¹ÔÀ» ½ÇÇàÇ߱⠶§¹®¿¡ ÀÌÀüÀÇ ¹®ÀåÀ¸ ·Î ·Ñ¹éÇÒ ¼ö
¾ø½À´Ï´Ù.
COMMITÀ̳ª ROLLBACK ¹®ÀåÀ» ½ÇÇàÇÏ¿© Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î Á¾·áÇÕ´Ï´Ù.
Àбâ ÀÏ°ü¼º
Àбâ ÀÏ°ü¼ºÀÌ ÇÊ¿äÇѵ¥ ÀÌ°ÍÀº ´ÙÀ½À» ¹ß»ý½Ãŵ´Ï´Ù.
Àбâ ÀÏ°ü¼ºÀÇ ¸ñÀûÀº °¢°¢ÀÇ »ç¿ëÀÚ°¡ DML ÀÛ¾÷À» ½ÃÀÛÇϱâ Àü¿¡, ¸¶Áö¸· Ä¿¹Ô ½Ã¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ¾Ë ¼ö ÀÖµµ·Ï º¸ÁõÇÏ´Â °ÍÀÔ´Ï´Ù.
Àá±Ý(Locking)À̶õ?
LockÀº »ç¿ëÀÚ °´Ã¼(Å×À̺íÀ̳ª Çà)³ª
»ç¿ëÀÚ¿¡°Ô º¸ÀÌÁö ¾Ê´Â ½Ã½ºÅÛ °´Ã¼(°øÀ¯ µ¥ÀÌÅÍ ±¸Á¶ ¹× µ¥ÀÌÅÍ »çÀü Çà) µîÀÇ ¶È°°Àº ÀÚ¿øÀ» ¾×¼¼½ºÇÏ´Â Æ®·£Àè¼Çµé »çÀÌÀÇ À¯ÇØÇÑ »óÈ£ÀÛ¿ë À»
¸·¾Æ ÁÝ´Ï´Ù.
¿À¶óŬ µ¥ÀÌÅÍ
Àá±Ý(Locking) ¹æ¹ý
¿À¶óŬ µ¥ÀÌÅͺ£À̽º¿¡¼
LockingÀº ¿ÏÀüÈ÷ ÀÚµ¿ÀûÀÌ¸ç »ç¿ëÀÚ ¾×¼ÇÀ» ¿ä±¸ÇÏÁö ¾Ê½À´Ï´Ù. ¾Ï½ÃÀû lockingÀº SELECT¸¦ Á¦¿ÜÇÑ ¸ðµç SQL¿¡ ´ëÇؼ
¹ß»ýÇÕ´Ï´Ù. ¿À¶óŬ µðÆúÆ® locking ±â¹ýÀº ÀÚµ¿ÀûÀ¸·Î Á¦¾à»çÇ×ÀÇ °¡Àå ³·Àº ·¹º§À» »ç¿ëÇÏ¿©, °¡Àå ³ôÀº ´Ü°èÀÇ µ¿½Ã¼ºÀ» Á¦°øÇÏ¸ç ¶ÇÇÑ µ¥ÀÌÅÍ ¹«°á¼ºÀ»
ÃÖ´ëÇÑ Á¦°øÇÕ´Ï´Ù. ¿À¶óŬÀº ¶ÇÇÑ »ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ¼öµ¿ À¸·Î Àá±×´Â(lock) °ÍÀ» Çã¿ëÇÕ´Ï´Ù.
Àá±Ý(Locking) ¸ðµå
¿À¶óŬÀº
´ÙÁß»ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º¿¡¼ µÎ °¡ÁöÀÇ locking ¸ðµå¸¦ »ç¿ëÇÕ´Ï´Ù.
Lock ¸ðµå |
¼³¸í |
exclusive |
ÀÚ¿øÀÌ °øÀ¯µÇ´Â °ÍÀ» ¸·¾ÆÁÝ´Ï´Ù. |
share lock |
ÀÚ¿øÀÌ °øÀ¯µÇµµ·Ï Çã¿ëÇÕ´Ï´Ù. |
Implicit commitÀÌ ÀϾ´Â °æ¿ì´Â?(µÎ °¡Áö)
A. SQL*Plus°¡ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ¾úÀ» °æ¿ì.
B.
ALTER TABLE¹®À» ½ÇÇàÇßÀ» °æ¿ì.
C. GRANT¹®À» ½ÇÇàÇßÀ» °æ¿ì.
D. COMMIT¹®À» ½ÇÇàÇßÀ» °æ¿ì.
´ä