°úÁ¤ ¸ñÇ¥

º» °úÁ¤¿¡¼­´Â Æ®·£Àè¼ÇÀÇ °³³ä¿¡ ´ëÇؼ­ »ó¼¼È÷ ¾Ë¾Æº¸°í, Æ®·£Àè¼ÇÀ» ±¸¼ºÇÏ´Â ¿©·¯ °¡Áö ¿ä¼Òµé¿¡ ´ëÇؼ­ ¹è¿ó´Ï´Ù. ¶ÇÇÑ 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 ¹®ÀåÀº ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù.
¸í½ÃÀûÀÎ COMMIT À̳ª ROLLBACK  ¾øÀÌ SQL*Plus¸¦ Á¤»óÀûÀ¸·Î Á¾·á

ÀÚµ¿ ·Ñ¹é

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)
  2  VALUES      (50, 'ADVERTISING', 'MIAMI');
1 row created.

SQL> UPDATE employee
  2  SET    deptno = 50
  3  WHERE  empno = 7876;
1 row updated.

SQL> COMMIT;
Commit complete.

 

º¯°æ ·Ñ¹é
ROLLBACK ¹®ÀåÀ» »ç¿ëÇÏ¿© ¸ðµç ¹Ì°áÁ¤ º¯°æÀ» ¹ö¸³´Ï´Ù.                                               
´ÙÀ½Àº ROLLBACKÀÔ´Ï´Ù.

¿¹
TEST Å×À̺íÀÇ ·¹Äڵ带 Á¦°ÅÇÏ·Á°í ÇÏ¸é ¶æÇÏÁö ¾Ê°Ô Å×À̺íÀ» Áö¿ö ¹ö¸± ¼ö ÀÖ½À´Ï´Ù. ½Ç¼ö¸¦ Á¤Á¤ÇÑ ´ÙÀ½¿¡ ¿Ã¹Ù¸¥ ¹®ÀåÀ» ´Ù½Ã ½ÇÇàÇÏ¿© µ¥ÀÌÅ͸¦ ¿µ±¸ÀûÀ¸·Î º¯°æÇÕ´Ï´Ù.

SQL> DELETE FROM  test;
25,000 rows deleted.
SQL> ROLLBACK;
Rollback complete.
SQL> DELETE FROM  test
  2  WHERE        id = 100;
1 row deleted.
SQL> SELECT   *
  2  FROM     test
  3  WHERE    id = 100;
No rows selected.
SQL> COMMIT;
Commit complete.

 

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

ÀÚ¿øÀÌ °øÀ¯µÇ´Â °ÍÀ» ¸·¾ÆÁÝ´Ï´Ù.
ÀÚ¿øÀ» ¹èŸÀûÀ¸·Î lockÇϴ ù¹ø° Æ®·£Àè¼ÇÀº ¹èŸÀû Àá±ÝÀÌ ÇØÁ¦µÇ±â Àü±îÁö´Â ÀÚ¿øÀ» º¯°æÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ Æ®·£Àè¼ÇÀÔ´Ï´Ù.

share lock

ÀÚ¿øÀÌ °øÀ¯µÇµµ·Ï Çã¿ëÇÕ´Ï´Ù.
µ¥ÀÌÅ͸¦ Àд ´ÙÁß »ç¿ëÀÚ´Â µ¥ÀÌÅ͸¦ °øÀ¯ÇÏ°í, writer(¹èŸÀû Àá±ÝÀÌ ÇÊ¿äÇÑ)¿¡ ÀÇÇØ µ¿½Ã¿¡ ¾×¼¼½º µÇ´Â °ÍÀ» ¸·±â À§Çؼ­ °øÀ¯ Àá±ÝÀ» À¯ÁöÇÕ´Ï´Ù. ¶È°°Àº ÀÚ¿ø»ó¿¡¼­ ¿©·¯ °³ÀÇ Æ®·£Àè¼ÇÀº °øÀ¯ Àá±ÝÀ» ¿ä±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 Implicit commitÀÌ ÀϾ´Â °æ¿ì´Â?(µÎ °¡Áö)
A. SQL*Plus°¡ ºñÁ¤»óÀûÀ¸·Î Á¾·áµÇ¾úÀ» °æ¿ì.
B. ALTER TABLE¹®À» ½ÇÇàÇßÀ» °æ¿ì.
C. GRANT¹®À» ½ÇÇàÇßÀ» °æ¿ì.
D. COMMIT¹®À» ½ÇÇàÇßÀ» °æ¿ì.
´ä

X Á¤´ä:BC


X Á¤´ä:AD


X Á¤´ä:A


X Á¤´ä:CDEF


X Á¤´ä:D