17 8 1 ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð�\�¬

LANSA

17.8.1 ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð�\�¬

�Ú‘±ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg

ƒXƒe�[ƒgƒ�ƒ“ƒg�Eƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg

ƒX�[ƒp�[ƒT�[ƒo�[

ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚̃^ƒCƒv

SQLƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª•Ê‚̃vƒ�ƒZƒX‚©‚çƒ�ƒbƒN‚ª“ü—Í‚³‚ê‚é‚Ì‚ð‘Ò‚Â�ê�‡�Aƒ^ƒCƒ€ƒAƒEƒg‚ð�Ý’è‚·‚é•û–@‚Í‚Q‚‚ ‚è‚Ü‚·�BŽŸ‚Ì2‚‚̕û–@‚Å‚·�B

1  (Linux�ã‚Å‚Í‚È‚­�j Windows ‚¨‚æ‚Ñ IBM i �㠂ŃTƒ|�[ƒg‚³‚ꂽ�Ú‘±ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚Í‚·‚ׂĂÌLANSAŠJ”­ƒf�[ƒ^ƒx�[ƒX‚É�Ý’è‚Å‚«‚Ü‚·�BSQLƒT�[ƒo�[�AOracle‚¨‚æ‚ÑSybase Adaptive Server Anywhere‚Í�AŠe�Ú‘±‚²‚ƂɃ^ƒCƒ€ƒAƒEƒg‚ð�ݒ肵�A‚»‚Ì�Ú‘±�ã‚Å”­�¶‚·‚é‚·‚ׂẴ�ƒbƒN‚ªƒRƒ“ƒgƒ��[ƒ‹‚ðƒAƒvƒŠƒP�[ƒVƒ‡ƒ“‚É•Ô‚¹‚é‚悤‚É‚µ‚Ü‚·�B

2  Linux�ã‚ÌOracle‚ɂ‚¢‚Ä‚Í�A•Ê‚̃eƒNƒjƒbƒN‚ª•K—v‚Å‚·�B‚±‚̊‹«‚É‚¨‚¢‚Ä�A‘Ò‚¿ŽžŠÔ‚ÍLANSA‚ª�X�V‚Ü‚½‚Í�í�œ‚ðŽÀ�s‚·‚é‘O‚É‘I‘ð�ã‚Å�Ý’è‚Å‚«‚Ü‚·�B‚±‚ê‚̓Xƒe�[ƒgƒ�ƒ“ƒg�Eƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ƌĂ΂ê‚Ü‚·�BLANSA‚Í�AWindows‘Ήž‚ÌOracle�ã‚Å‚Ì‚±‚Ì�Ý’è‚àƒTƒ|�[ƒg‚·‚邽‚ß�AƒAƒvƒŠƒP�[ƒVƒ‡ƒ“‚ª�AWindows‚Ü‚½‚ÍLinux‚Ì‚Ç‚¿‚ç‚ÅŽÀ�s‚³‚ê‚é�ê�‡‚Å‚à�AˆêŠÑ‚µ‚½ƒ^ƒCƒ€ƒAƒEƒg�E‚Ó‚é‚Ü‚¢‚ðŠú‘Ò‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B

�Ú‘±ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg

�Ú‘±ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚É‚Í�Aƒ^ƒCƒ€ƒAƒEƒg‚Ü‚Å‚Ì‘Ò‚¿ŽžŠÔ‚ð�AX_DBMENV.DAT“à‚ÅLOCK_TIMEOUT‚Å�Ý’è‚·‚邱‚Æ‚ª•K—v‚Å‚·�Bƒ[ƒ�’l‚͉i‹v‚É‘Ò‚½‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Æ‚ð•\Ž¦‚µ�ALANSA‚̓^ƒCƒ€ƒAƒEƒg�EƒGƒ‰�[‚ðƒgƒ‰ƒbƒv‚Å‚«‚Ü‚¹‚ñ�B‚±‚ê‚Í�A‰ºˆÊŒÝŠ·�«‚Ì‚½‚ß‚É—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·�B�È—ª’l‚̓[ƒ�‚Å‚·�BŒv‘ª‚Ì’PˆÊ‚Í�Aƒf�[ƒ^ƒx�[ƒX‚̃^ƒCƒv‚É‚æ‚Á‚ĈقȂè‚Ü‚·�B‚±‚ê‚Í X_DBMENV.DAT“à‚̃Rƒ�ƒ“ƒg‚ÅŒ¾‹y‚³‚ê‚Ä‚¢‚Ü‚·�B—Ⴆ‚Î�ASQLƒT�[ƒo�[‚̓~ƒŠ•b’PˆÊ‚ł̃^ƒCƒ€ƒAƒEƒg‚ÌŽw’è‚ð—v‹�‚µ�AMySQL‚Í•b’PˆÊ‚Å‚ÌŽw’è‚ð—v‹�‚µ‚Ü‚·�B

‚ ‚킹‚Ä�ALOCK_TYPE=C (�È—ª’l) ‚à�ݒ肵‚Ü‚·�B

Oracle‚Å‚Í�AWindowsƒfƒBƒŒƒNƒgƒŠ‚Ì ORAODBC.INIƒtƒ@ƒCƒ‹“à‚Å’l‚ð�Ý’è‚·‚邱‚Æ‚à•K—v‚Å‚·�B‚±‚ê‚Í’Ê�íc:\windows‚Å‚·‚ª�Aset windir‚ð“ü—Í‚·‚邱‚Æ‚É‚æ‚è�AŽÀ�Û‚Ì’l‚ð�Ý’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·�B

ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð�Ý’è‚·‚é�Û�AORAODBC.INI “à‚Ɉȉº‚̂悤‚ȃeƒLƒXƒg‚ª‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢�B

[Oracle ODBC Driver Common]LockTimeOut=2 

Oracle‚Å‚Í�AX_DBMENV‚†.DAT “à‚Ì’l‚ÍLANSA‚̃�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚Ì‚Ó‚é‚Ü‚¢‚Ì‚Ý‚ð—LŒø‚É‚µ�AŽÀ�ۂɃ^ƒCƒ€ƒAƒEƒg’l‚ð�ݒ肵‚È‚¢‚±‚Æ‚É’�ˆÓ‚µ‚Ä‚­‚¾‚³‚¢�B•Ô‚³‚ê‚éƒGƒ‰�[�EƒR�[ƒh‚Í�Aƒ�ƒbƒN‚ÌŽÀ�s‚É‘I‘ð‚³‚ê‚½•û–@‚É‚æ‚Á‚ĈقȂè‚Ü‚·�B
DBMS_RETCODE_ROW_LOCKED=1013

X_DBMENV.DAT“à‚Å‚ÌOracle�Ý’è‚̃tƒ‹�EƒZƒbƒg‚ÍŽŸ‚Ì’Ê‚è‚Å‚·�B

   LOCK_TYPE=C

   LOCK_TIMEOUT=2

   CMD_LOCK_TIMEOUT=<setting ignored>

   DBMS_RETCODE_ROW_LOCKED=1013

 

ƒXƒe�[ƒgƒ�ƒ“ƒg�Eƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg

ƒXƒe�[ƒgƒ�ƒ“ƒg�Eƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ÍOracleŒÅ—L‚̃^ƒCƒ€ƒAƒEƒg‚Å‚·�BWindows‚ÆLinux Oracle�ã‚Å�A“¯‚¶ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚Ì‚Ó‚é‚Ü‚¢‚ð‰Â”\‚É‚µ‚Ü‚·�B

‚±‚̃^ƒCƒ€ƒAƒEƒg‚Å‚Í�AX_DBMENV.DAT“à‚Å LOCK_TIMEOUT‚ðƒ[ƒ�ˆÈŠO‚Ì’l‚É�ݒ肵�ALANSA‚Ì‹@”\‚ð—LŒø‰»‚·‚邱‚Æ‚à•K—v‚Å‚·‚ª�AŽÀ�ۂɃ^ƒCƒ€ƒAƒEƒg’l‚Í�ݒ肵‚Ü‚¹‚ñ�B‚ ‚킹‚Ä LOCK_TYPE=S‚à�ݒ肵‚Ü‚·�B

ƒ�ƒbƒN‚ª”­�¶‚µ‚½�ê�‡�Aƒ�ƒbƒN‚ÌŠJ•ú‚ð‘҂‚©�A‚Ü‚½‚Í‚Ü‚Á‚½‚­‘Ò‚½‚È‚¢‚©‚ɂ‚¢‚Ä‚à‘I‘ð‚µ‚Ü‚·�B‚±‚ê‚Í�ACMD_LOCK_TIMEOUT“à‚Å�ݒ肵‚Ü‚·�B‚»‚ꂼ‚ê�A"FOR UPDATE WAIT n" ‚Ü‚½‚Í "FOR UPDATE NOWAIT" ‚Å‚·�B

�ÅŒã‚É�Aƒ^ƒCƒ€ƒAƒEƒg�Ý’è‚Æ‚ ‚킹‚邽‚ß‚É�AƒGƒ‰�[�EƒR�[ƒh (DBMS_RETCODE_ROW_LOCKED ) ‚ðŽŸ‚Ì‚æ‚¤‚É�Ý’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·�B

—Ⴆ‚΃�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð2•b‚É‚·‚é�ê�‡‚Í�AŽŸ‚̂悤‚É�ݒ肵‚Ü‚·�B

  

   LOCK_TIMEOUT=2

   CMD_LOCK_TIMEOUT=FOR UPDATE WAIT 2

   DBMS_RETCODE_ROW_LOCKED=30006

 

ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð‘S‚­‘Ò‚½‚È‚¢‚悤‚É‚·‚é�ê�‡‚Í�AŽŸ‚̂悤‚É�ݒ肵‚Ü‚·�B

   LOCK_TYPE=S

   LOCK_TIMEOUT=2

   CMD_LOCK_TIMEOUT=FOR UPDATE NOWAIT

   DBMS_RETCODE_ROW_LOCKED=54

 

ƒX�[ƒp�[ƒT�[ƒo�[

Windows‚¨‚æ‚ÑLinuxƒT�[ƒo�[‚Å‚Í�AƒNƒ‰ƒCƒAƒ“ƒg‚ƃT�[ƒo�[‚Í�AƒT�[ƒo�[‚ÅŽg—p‚³‚ê‚Ä‚¢‚éƒf�[ƒ^ƒx�[ƒXƒ^ƒCƒv‚Ì x_dbmenv.dat “à‚Å“¯‚¶ƒ^ƒCƒ€ƒAƒEƒg�Ý’è‚É‚È‚Á‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ�B�@(LOCK_TYPE�ALOCK_TIMEOUT�ACMD_LOCK_TIMEOUT�ADBMS_RETCODE_ROW_LOCKED) �ݒ肪ˆÙ‚È‚é�ê�‡�A *DBMS_RECORD_LOCKED ‚©‚ç Y ‚ª•Ô‚Á‚Ä‚­‚é‚Í‚¸‚ÌŽž‚É N ‚ª•Ô‚³‚ê‚邱‚Æ‚ª‚ ‚è‚Ü‚·�B