X/Open(R) XA ÀÎÅÍÆäÀ̽º´Â º¹¼öÀÇ ÀÚ¿ø¿¡ ´ëÇÑ º¯°æÀ» Á¶Á¤Çϰí, ÀÌ·¯ÇÑ º¯°æ»çÇ×ÀÇ ¹«°á¼ºÀ» º¸ÀåÇÏ´Â °³¹æÇü Ç¥ÁØÀÔ´Ï´Ù. Æ®·£Àè¼Ç ó¸® ¸ð´ÏÅͶó°í ¾Ë·ÁÁ® ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î ¸ð´ÏÅ͵éÀº ÀϹÝÀûÀ¸·Î XA ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϸç, DB2°¡ ÀÌ ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇϹǷÎ, Çϳª ÀÌ»óÀÇ DB2 µ¥ÀÌÅͺ£À̽º°¡ ÀÌ·¯ÇÑ È¯°æ¿¡¼ ÀÚ¿øÀ¸·Î¼ µ¿½Ã¿¡ ¾×¼¼½ºµÉ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥¿¡¼ Á¦°øµÇ´Â XA ÀÎÅÍÆäÀ̽º Áö¿øÀÇ °³³ä°ú ±¸Çö¿¡ ´ëÇÑ Á¤º¸´Â °ü¸® ¾È³»¼: °èȹ Ã¥À» ÂüÁ¶ÇϽʽÿÀ. »ç¿ëÀÚÀÇ Ç÷§ÆûÀÌ X/Open XA Interface¸¦ Áö¿øÇÏ´ÂÁö ¿©ºÎ¸¦ ÆÇº°ÇÏ·Á¸é, ÀÀ¿ëÇÁ·Î±×·¥ ºôµå ¾È³»¼ Ã¥À» ÂüÁ¶ÇϽʽÿÀ.
Æ®·£Àè¼Ç 󸮽à TP ¸ð´ÏÅͿʹ µ¶¸³ÀûÀ¸·Î ¼öÇàµÇ´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡ ºñ±³ÇÒ ¶§ ´Ù¸¥ ¸ðµ¨ÀÌ »ç¿ëµÇ¹Ç·Î, XA ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â ºÐ»ê Æ®·£Àè¼Ç ÇÁ·Î¼¼½Ì(DTP) ȯ°æ¿¡¼ ¿î¿µÇÒ ¶§´Â Ưº°ÇÑ °í·Á»çÇ×ÀÌ ÀÖ½À´Ï´Ù. ÀÌ Æ®·£Àè¼Ç ó¸® ¸ðµ¨ÀÇ Æ¯Â¡Àº ´ÙÀ½°ú °°½À´Ï´Ù.
ÀÌ·¯ÇÑ È¯°æÀÇ °íÀ¯ÇÑ Æ¯¼ºÀ¸·Î DB2´Â ¿©±â¿¡¼ ¼öÇàµÇµµ·Ï ÄÚµùµÈ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ´ëÇÏ¿© Ưº°ÇÑ µ¿ÀÛ ¹× ¿ä±¸»çÇ×ÀÌ ÀÖ½À´Ï´Ù.
DTP ȯ°æ¿¡¼, ¿¹¸¦ µé¾î ½Ã½ºÅÛ ¿À·ù³ª ±³Âø »óÅ·ΠÀÎÇØ Àü¿ª Æ®·£Àè¼ÇÀÇ ÀÚ½ÅÀÇ ºÐ±â¸¦ Á¾·áÇϱâ À§ÇØ RMÀÌ ±¸°£ º¹¿øÀ» ½ÃÀÛÇÑ °æ¿ì, Æ®·£Àè¼Ç °ü¸® ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÑ µ¿±â ½ÃÁ¡ ¿äûÀÌ ¹ß»ýÇÒ ¶§±îÁö µ¿ÀÏÇÑ ÀÀ¿ëÇÁ·Î±×·¥ ÇÁ·Î¼¼½º·ÎºÎÅÍ ¿À´Â ´õ ÀÌ»óÀÇ ¿äûÀº ó¸®Çؼ´Â ¾ÈµË´Ï´Ù. ¿©±â¿¡´Â ÀúÀå ÇÁ·Î½Ãµà¾î ³»¿¡¼ ¹ß»ýÇÑ ±³Âø »óŵµ Æ÷ÇԵ˴ϴÙ. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÇ °æ¿ì, À̰ÍÀº SQLCODE -918(SQLSTATE 51021)°ú ÇÔ²² ¸ðµç ÈÄ¼Ó SQL ¿äûÀ» °ÅºÎÇϰí, »ç¿ëÀÚ¿¡°Ô CICS ȯ°æ¿¡¼ CICS SYNCPOINT ROLLBACK ¸í·É »ç¿ë°ú °°Àº Æ®·£Àè¼Ç °ü¸® ÇÁ·Î±×·¥ÀÇ µ¿±â ½ÃÁ¡ ¼ºñ½º¸¦ »ç¿ëÇÏ¿© Àü¿ª Æ®·£Àè¼ÇÀ» ±¸°£ º¹¿øÇØ¾ß ÇÔÀ» ¾Ë·ÁÁÝ´Ï´Ù. ¾î¶² ÀÌÀ¯¿¡¼°Ç, »ç¿ëÀÚ°¡ ´ë½Å Æ®·£Àè¼ÇÀ» È®¾àÇϱâ À§ÇØ TM¿¡°Ô ¿äûÇÑ °æ¿ì, RMÀº TM¿¡°Ô ±¸°£ º¹¿ø¿¡ ´ëÇØ ¾Ë·ÁÁÖ°í, TMÀÌ ´Ù¸¥ RMÀ» ±¸°£ º¹¿øÇϵµ·Ï ÇÕ´Ï´Ù.
WITH HOLD·Î ¼±¾ðµÈ Ä¿¼´Â CICS Æ®·£Àè¼Ç ó¸® ¸ð´ÏÅÍ¿ë XA/DTP ȯ°æ¿¡¼ Áö¿øµË´Ï´Ù.
WITH HOLD·Î ¼±¾ðµÈ Ä¿¼°¡ Áö¿øµÇÁö ¾Ê´Â °æ¿ì, OPEN¹®Àº SQLCODE -30090(SQLSTATE 25000)°ú ÇÔ²² °ÅºÎµÇ¸ç ÀÌÀ¯ ÄÚµå´Â 03ÀÔ´Ï´Ù.
WITH HOLD·Î ÁöÁ¤µÈ Ä¿¼°¡ ´õ ÀÌ»ó ÇÊ¿ä ¾øÀ» ¶§ ¸í½ÃÀûÀ¸·Î ´ÝÈ÷µµ·Ï ÇÏ´Â °ÍÀº Æ®·£Àè¼ÇÀÇ Ã¥ÀÓÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì ÀÌ Ä¿¼µéÀº ´Ù¸¥ Æ®·£Àè¼Ç¿¡ ÀÇÇØ °è½ÂµÇ¾î ÀÚ¿øÀÇ Ãæµ¹À̳ª ºÒÇÊ¿äÇÑ ¼Ò¸ð¸¦ À¯¹ßÇÕ´Ï´Ù.
CONNECT DECLARE DESCRIBE EXECUTE IMMEDIATE (¿©±â¼, ù¹øÂ° ÅäÅ« ¶Ç´Â Ű¿öµå´Â SETÀ̰í SET CONSTRAINTS°¡ ¾Æ´Ô) OPEN CURSOR FETCH CURSOR CLOSE CURSOR PREPARE (¿©±â¼, ù¹øÂ° ÅäÅ« ¶Ç´Â Ű¿öµå´Â °ø¹éÀÌ ¾Æ´Ï°Å³ª ¿ÞÂÊ °ýÈ£°¡ SET(SET CONSTRAINTS°¡ ¾Æ´Ô), SELECT, WITH ¶Ç´Â VALUES) SELECT...INTO VALUES...INTO
±×¿Ü ´Ù¸¥ ½Ãµµ´Â °ÅºÎµÇ¸ç SQLCODE -30090(SQLSTATE 25000)ÀÌ ¼ö½ÅµË´Ï´Ù.
PREPARE¹®Àº SELECT¹®À» ÁغñÇϱâ À§Çؼ¸¸ »ç¿ëµË´Ï´Ù. EXECUTE IMMEDIATE¹® ¿ª½Ã OS/390¿ë DB2 Universal DatabaseÀÇ SET SQLID¹®°ú °°ÀÌ ¾Æ¹«·± Ãâ·Â °ªÀ» ¸®ÅÏÇÏÁö ¾Ê´Â SQL SET¹®À» ½ÇÇàÇϵµ·Ï Çã¿ëµË´Ï´Ù.
³»ºÎÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¿¡ È®¾àÀ» ¹ßÇàÇϰí 2 ´Ü°è È®¾à 󸮸¦ ¹ÙÀÌÆÐ½ºÇÏ´Â API´Â °ÅºÎµÇ¸ç, SQLCODE -30090(SQLSTATE 25000)ÀÌ ¼ö½ÅµË´Ï´Ù. ÀÌ·¯ÇÑ API ¸ñ·ÏÀº ´ÙÁß»çÀÌÆ® °»½Å Á¦ÇÑ»çÇ×ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÌ APIµéÀº ´ÙÁß »çÀÌÆ® °»½Å(¿¬°á À¯Çü 2)¿¡¼ Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
´ÙÁß ½º·¹µå ÀÀ¿ëÇÁ·Î±×·¥À» °³¹ßÇϱâ·Î ÇÏ¿´´Ù¸é, ÇϳªÀÇ ½º·¹µå°¡ SQLÀ» »ç¿ëÇϵµ·Ï Çϰųª, °°Àº ÀÛ¾÷ ´ÜÀ§(UOW) ¾È¿¡¼ ´Ù¸¥ ½º·¹µå·ÎºÎÅÍÀÇ SQL¹®°ú ¾ôÈ÷Áö ¾Êµµ·Ï ´ÙÁß ÇÁ·Î¼¼½º ¼³°è¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Æ®·£Àè¼Ç °ü¸® ÇÁ·Î±×·¥ÀÌ ´ÙÁß ÇÁ·Î¼¼½º³ª ´ÙÁß ½º·¹µå¸¦ Áö¿øÇÏ´Â °æ¿ì, ½º·¹µå¸¦ Á÷·ÄÈÇÏ¿© ´Ù¸¥ ½º·¹µå°¡ ½ÃÀÛÇϱâ Àü¿¡ ÇϳªÀÇ ½º·¹µå°¡ µ¿±âÁ¡±îÁö ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ¿¹´Â AIX/CICSÀÇ all_operationÀÇ XASerialize ¿É¼ÇÀÔ´Ï´Ù. ÀÌ Á¤º¸°¡ µé¾î ÀÖ´Â AIX/CICS XAD ÆÄÀÏ¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº °ü¸® ¾È³»¼: °èȹÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
À§ÀÇ Á¦ÇÑ»çÇ×ÀÌ XA ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â TP ¸ð´ÏÅÍ È¯°æ¿¡¼ ¼öÇàµÇ´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡ Àû¿ëµÊ¿¡ ÁÖÀÇÇϽʽÿÀ. DB2 µ¥ÀÌÅͺ£À̽º°¡ XA ÀÎÅÍÆäÀ̽º¿Í ÇÔ²² »ç¿ëµÇµµ·Ï Á¤ÀǵǾî ÀÖÁö ¾ÊÀº °æ¿ì, ÀÌ·¯ÇÑ Á¦ÇÑ»çÇ×Àº Àû¿ëµÇÁö ¾ÊÁö¸¸, ¿©ÀüÈ÷ Æ®·£Àè¼Ç ÄÚµù½Ã ºÎÁÖÀÇÇÏ°Ô ´ÙÀ½¿¡ ½ÇÇàµÉ Æ®·£Àè¼Ç¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â »óŰ¡ µÇµµ·Ï ÇÏÁö ¾Ê´Â ¹æ½ÄÀ¸·Î ÄÚµùÇÏ´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù.
½ÇÇà °¡´É ÀÀ¿ëÇÁ·Î±×·¥À» »ý¼ºÇϱâ À§ÇÏ¿©, ÀÀ¿ëÇÁ·Î±×·¥ ¿ÀºêÁ§Æ®¸¦ ¾ð¾î ¶óÀ̺귯¸®, ¿î¿µ üÁ¦ ¶óÀ̺귯¸®, ÀÏ¹Ý µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ¹× TP ¸ð´ÏÅÍ¿Í Æ®·£Àè¼Ç °ü¸® ÇÁ·Î±×·¥ Á¦Ç° ¶óÀ̺귯¸®¿Í ¸µÅ©ÇØ¾ß ÇÕ´Ï´Ù.