¶§·Î ÀÀ¿ëÇÁ·Î±×·¥ÀÌ µ¿½Ã Æ®·£Àè¼ÇÀ̶ó´Â ¿©·¯°³ÀÇ µ¶¸³ÀûÀÎ ¿¬°áÀ» °¡Áö°í ÀÖÀ¸¸é À¯¿ëÇÕ´Ï´Ù. µ¿½Ã Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥Àº µ¿½Ã¿¡ ¿©·¯°³ÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÏ°í °°Àº µ¥ÀÌÅͺ£À̽º¿¡ ¿©·¯°³ÀÇ ¿¬°áÀ» ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÁß ½º·¹µå µ¥ÀÌÅͺ£À̽º ¾×¼¼½º¿¡¼ ¼³¸íµÈ ¹®¸Æ API¸¦ ÅëÇØ ÀÀ¿ëÇÁ·Î±×·¥Àº µ¿½Ã Æ®·£Àè¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ÀÛ¼ºµÈ °¢ ¹®¸ÆÀº ´Ù¸¥ ¹®¸Æ°ú´Â µ¶¸³ÀûÀÔ´Ï´Ù. À̰ÍÀº »ç¿ëÀÚ°¡ ¹®¸ÆÀ» ÀÛ¼ºÇϰí, ±× ¹®¸ÆÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇϸç, ´Ù¸¥ ¹®¸ÆÀÇ COMMITÀ̳ª ROLLBACK¹® ¼öÇà°ú °°Àº Á¶Ä¡¿¡ ÀÇÇØ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÏ¿© SQL¹®À» ¼öÇàÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.
¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÏ¿© SQL¹®À» ¼öÇàÇϵµ·Ï Çã¿ëÇϰí, µÎ¹øÂ° µ¥ÀÌÅͺ£À̽º¿¡¼ ¼öÇàµÈ Á¶Ä¡ÀÇ ·Î±×¸¦ º¸°üÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í °¡Á¤ÇϽʽÿÀ. ÀÌ ·Î±×´Â ÃÖ½ÅÀÇ »óŸ¦ À¯ÁöÇØ¾ß ÇϹǷÎ, ·Î±×ÀÇ ¸Å °»½Å ÈÄ¿¡ COMMIT¹®À» ¹ßÇàÇØ¾ß ÇÏÁö¸¸, »ç¿ëÀÚ´Â SQL¹®ÀÌ ·Î±×¿¡ ´ëÇÑ È®¾àÀÇ ¿µÇâÀ» ¹Þ´Â °ÍÀ» ¿øÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀÌ µ¿½Ã Æ®·£Àè¼ÇÀ» À§ÇÑ ¿Ïº®ÇÑ »óȲÀÔ´Ï´Ù. »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼, µÎ °³ÀÇ ¹®¸ÆÀ» ÀÛ¼ºÇϽʽÿÀ. Çϳª´Â »ç¿ëÀÚÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÇ¾î ¸ðµç »ç¿ëÀÚ SQL¿¡ »ç¿ëµÇ°í, ´Ù¸¥ Çϳª´Â ·Î±× µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÇ¾î ·Î±× °»½Å¿¡ »ç¿ëµË´Ï´Ù. ÀÌ·¯ÇÑ ¼³°è·Î »ç¿ëÀÚ°¡ ·Î±× µ¥ÀÌÅͺ£À̽ºÀÇ º¯°æ»çÇ×À» È®¾àÇÒ¶§ »ç¿ëÀÚÀÇ ÇöÀç ÀÛ¾÷ ´ÜÀ§(UOW)¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.
µ¿½Ã Æ®·£Àè¼ÇÀÇ ¶Ç ´Ù¸¥ ÀÌÁ¡Àº ÇϳªÀÇ ¿¬°á¿¡¼ Ä¿¼¿¡ ´ëÇÑ ÀÛ¾÷ÀÌ ±¸°£ º¹¿øµÇ¸é, ´Ù¸¥ ¿¬°áÀÇ Ä¿¼¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. ÇϳªÀÇ ¿¬°á¿¡¼ÀÇ ±¸°£ º¹¿ø ÈÄ¿¡, ÀÛ¾÷µµ ¿Ï·áµÇ°í, ´Ù¸¥ ¿¬°á¿¡¼ Ä¿¼ÀÇ À§Ä¡µµ ¿©ÀüÈ÷ À¯ÁöµË´Ï´Ù.
µ¿½Ã Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥Àº ´ÜÀÏ ¿¬°áÀ» »ç¿ëÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥ ÀÛ¼º½Ã¿¡´Â ¹ß»ýÇÏÁö ¾Ê´Â ¹®Á¦Á¡ÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¿½Ã Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ¶§, ´ÙÀ½À» ÁÖÀÇÇϽʽÿÀ.
ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ °¢ ¹®¸ÆÀº µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Àá±Ý°ú °°Àº °¢ÀÚÀÇ µ¥ÀÌÅͺ£À̽º ÀÚ¿ø ¼¼Æ®¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Á¡À¸·Î ÀÎÇØ µÎ °³ÀÇ ¹®¸ÆÀÌ ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º ¿ÀºêÁ§Æ®¿¡ ¾×¼¼½ºÇÏ´Â °æ¿ì ±³Âø »óÅ¿¡ ³õÀÌ°Ô µÉ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ±³Âø »óŸ¦ ¹ß°ßÇϰí, ¹®¸Æ Áß Çϳª°¡ SQLCODE -911À» ¼ö½ÅÇϸç, ±× ÀÛ¾÷ ´ÜÀ§(UOW)´Â ±¸°£ º¹¿øµË´Ï´Ù.
ÇϳªÀÇ ½º·¹µå¿¡¼ ¹®¸ÆÀ» ÀüȯÇÏ´Â °ÍÀº ¹®¸Æ °£ÀÇ Á¾¼Ó °ü°è¸¦ ¸¸µå´Â °ÍÀÔ´Ï´Ù. ¹®¸Æ¿¡ µ¥ÀÌÅͺ£À̽º Á¾¼Ó¼ºµµ ÀÖ´Â °æ¿ì, ±³Âø »óÅ¿¡ ³õÀÏ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀϺΠÁ¾¼Ó¼ºÀº µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ ¿ÜºÎ¿¡ Àֱ⠶§¹®¿¡ ±³Âø »óÅ´ ¹ß°ßµÇÁö ¾Ê°í ÀÀ¿ëÇÁ·Î±×·¥Àº ÀϽà Áß´Ü »óŰ¡ µË´Ï´Ù.
ÀÌ·¯ÇÑ Á¾·ùÀÇ ¹®Á¦Á¡ÀÇ ¿¹·Î, ´ÙÀ½ÀÇ ÀÀ¿ëÇÁ·Î±×·¥À» »ý°¢ÇØ º¾½Ã´Ù.
context 1 UPDATE TAB1 SET COL = :new_val context 2 SELECT * FROM TAB1 COMMIT context 1 COMMIT
ù¹øÂ° ¹®¸ÆÀÌ ¼º°øÀûÀ¸·Î UPDATE¹®À» ½ÇÇàÇß´Ù°í °¡Á¤ÇϽʽÿÀ. °»½ÅÀº TAB1ÀÇ ¸ðµç Çà¿¡ Àá±ÝÀ» ¼³Á¤Çß½À´Ï´Ù. ÀÌÁ¦ Context 2°¡ TAB1ÀÇ ¸ðµç ÇàÀ» ¼±ÅÃÇÏ·Á ÇÕ´Ï´Ù. µÎ ¹®¸ÆÀÌ µ¶¸³ÀûÀ̹ǷÎ, Context 2´Â Context 1ÀÌ Â÷ÁöÇϰí ÀÖ´Â Àá±ÝÀ» ±â´Ù¸³´Ï´Ù. ±×·¯³ª Context 1Àº Context 2°¡ ½ÇÇàÀ» Á¾·áÇÒ ¶§±îÁö Àá±ÝÀ» ¸±¸®½ºÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌÁ¦ ÀÀ¿ëÇÁ·Î±×·¥Àº ±³Âø »óÅ¿¡ ³õÀÌ°Ô µÇ¾úÀ¸³ª µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº Context 1ÀÌ Context 2¸¦ ±â´Ù¸®°í ÀÖÀ½À» ¸ð¸£°í ÀÖÀ¸¹Ç·Î, ¹®¸Æ Áß ÇϳªÀÇ ±¸°£ º¹¿øÀ» °Á¦ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÀϽà Áߴܵ˴ϴÙ.
µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ ¹®¸Æ °£ÀÇ ±³Âø »óŸ¦ ¹ß°ßÇÒ ¼ö ¾øÀ¸¹Ç·Î, ±³Âø»óŸ¦ ¹æÁöÇϰųª ÃÖ¼ÒÇÑ ÇÇÇÒ¼ö ÀÖ´Â ¹æ½ÄÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥À» ¼³°èÇϰí ÄÚµùÇØ¾ß ÇÕ´Ï´Ù. À§ÀÇ ¿¹¿¡¼, ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î ±³Âø »óŸ¦ ÇÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
Äڵ带 º¯°æÇÏ¿© Context 1ÀÌ Context 2·Î ÀüȯÇϱâ Àü¿¡ È®¾àÀ» ¼öÇàÇϵµ·Ï ÇϽʽÿÀ.
Äڵ带 º¯°æÇÏ¿© °°Àº ¹®¸Æ¿¡¼ °»½Å ¹× ¼±ÅÃÀÌ ¸ðµÎ ÀÌ·ç¾îÁöµµ·Ï ÇϽʽÿÀ.
À̰ÍÀÌ ±³Âø »óŸ¦ ¹æÁöÇÏÁø ¾ÊÁö¸¸ ½ÇÇàÀÌ ´Ù½Ã Àç°³µÉ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù. Context 2´Â ¿äûµÈ Àá±ÝÀ» ¾òÀ» ¼ö ¾øÀ¸¹Ç·Î °á±¹ ±¸°£ º¹¿øµË´Ï´Ù. ÀÏ´Ü Context 2°¡ ±¸°£ º¹¿øµÇ¸é, Context 1Àº ½ÇÇàÀ» °è¼ÓÇϰí, ±×·¯¸é Àá±ÝÀÌ ÇØÁ¦µÇ¸ç, Context 2´Â ÀÛ¾÷À» Àç½ÃµµÇÕ´Ï´Ù.
±³Âø »óŸ¦ ¹æÁöÇÏ´Â ±â¹ýÀº À§ÀÇ ¿¹¸¦ Áß½ÉÀ¸·Î ¼³¸íµÇ¾úÁö¸¸, »ç¿ëÀÚ´Â ÀÌ ±â¹ýµéÀ» ¸ðµç µ¿½Ã Æ®·£Àè¼Ç ÀÀ¿ëÇÁ·Î±×·¥¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.