17.8.1 ƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg‚ð�\�¬
ƒXƒe�[ƒgƒ�ƒ“ƒg�Eƒ�ƒbƒN‚̃^ƒCƒ€ƒAƒEƒg
ƒ�ƒ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‚É‚Í�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=2Oracle‚Å‚Í�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
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