ʹÓÃOracle¶ÁÁËÔàÊý¾Ý... - Oracle / »ù´¡ºÍ¹ÜÀí
°¸Àý˵Ã÷:»ð³µÆ±ÊÛÆ±ÏµÍ³ ͬʱÆô¶¯¶à¸öÏß³ÌÄ£ÄâÂòƱ ´°¿ÚÊ×ÏȲéѯ³ö»¹Ê£Óà¶àÉÙÕÅÆ±,ÅжÏÊÇ·ñ×ã¹»,ÔÙ½øÐиüвÙ×÷ ËùÒÔÊÇÒ»ÌõselectÓï¾ä,Ò»ÌõupdateÓï¾ä ÏÖÔÚ³öÏÖµÄÎÊÌâ: µÚÒ»¸öÈËÂòÊ×ÏȲéѯʣÓà20ÕÅ,ÂòÁË2ÕÅ,updateΪ18ÕÅ µÚ¶þ¸öÈËÔÚupdate֮ǰ¾Í¶Á³öÁË,ËùÒÔËû¶Á³öµÄÊ£ÓàÆ±ÊýÒ²ÊÇ20ÕÅ,ÂòÁË2ÕÅ,updateΪ18ÕÅ ½á¹ûÂòÁË4ÕÅ,È·Ö»¼õÉÙÁË2ÕÅ ÇëÎÊÈçºÎ½â¾öÕâ¸öÎÊÌâÄØ?
Õâ¸öÎҼǵÃÊÇÓóÌÐò¶ÎµÄÏß³Ìͬ²½À´½øÐпØÖƵÄ,Êý¾Ý¿â½øÐпØÖÆ,Àí½â¹ý¿ÉÒÔÓÃSELECT FOR UPDATEÀ´½øÐпØÖÆ,ʵ¼ÊûÓÐÓ¦Óùý, ÄãµÄÒâ˼ÊÇÓÃsynchronizedÀ´¼ÓËøÊǰÉ?ÒýÓà ÊǵÄ,¼ÇµÃ»¹ÓÐÊÓÆµ×¨Ã޲Õâ¸öÀý×ÓµÄ,ORACLEÊý¾Ý¿â¶Ë¿ØÖƵϰ, ¿ÉÓÃSELECT ƱÊý FOR update½øÐмÓËø.... ÕâÑùÊÇÒ»ÖÖ½â¾öµÄ°ì·¨!ºÇºÇ ÄÇÓÖÓиöÎÊÌâ,ÂôƱµÄʱºò¶Á²»³öÁË SQL code: --ʹÓÃfor updateÊÖ¹¤¼ÓËø£¬¼ÓËø³É¹¦Ôò¼ÌÐø£¬·ñÔòÖ»Äܵȴý select name,amount from tickets where name='aaa' for update; --ÊÛÆ±¸üРupdate tickets set amount=amount-2 where name='aaa' --Ìá½»ÊÍ·ÅËø commit;ÒýÓà ÄÇÓÖÓиöÎÊÌâ,ÂôƱµÄʱºò¶Á²»³öÁË ²»ÓÃfor update£¬°ÑÊÂÎñ¸ôÀë¼¶Éè³É¿É´®Ðл¯¡£ È»ºó select *** update *** Á½ÕߺÏÒ»Æð¹¹³ÉÒ»ÊÂÎñ£¬ ÕâÑùÓ¦¸Ã²»»á³öÏÖÔà¶Á¡£ Õâ¸öÊÂÎñÓ¦¸Ã×㹻С£¨Ïà¹ØÓï¾äÒªÓÅ»¯£©£¬Ê±¼äºÜ¶Ì£¬²»´æÔÚ¶Á²»³öÊý¾ÝµÈ´ýºÜ³¤Ê
Ïà¹ØÎÊ´ð£º
¼ÙÉètable01 ÖÐÓÐ ÒÔÏÂ×ÊÁÏ emp_no emp_name ------- ------------ 0001 TOM 0002 JOHN 0003 MARY ³£Óõ绰 ¶øÎÒÃÇÒªµÃµ½ÒÔϵÄOUTPUT (»òÊǸ÷ÖÖÆäËûµÄoutput) 0001,TOM 0002,JOHN
......
java.sql.SQLException: Io Òì³£: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186646784)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4)))) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBErro ......
×öÍædata guard ºó ÔÚPrimary·þÎñÆ÷ Ö´ÐÐ SQL>SELECT SEQUENCE#,APPLIED from V$ARCHIVED_LOG ORDER BY SEQUENCE#; SEQUENCE# APP ---------- --- 13 NO 13 YES ......
Ö÷ÒªÏëʵÏÖ£ºÔÚÿÌìµÄ0µã֮ǰ×Ô¶¯½«Êý¾Ý²åÈëÊý¾Ý¿â£¬Ï£Íû´ó¼ÒÖ¸µã£¡ ×Ô¶¯²åÈë?Êý¾ÝÔ´ÄÄÀïÀ´µÄ,²åÈ뵽ʲôµØ·½ ´¥·¢Æ÷? Ó¦¸ÃÓÃJOB Êý¾ÝÔ´ÔÝʱÏëµÄÊǹ̶¨Êý¾Ý£¬²åÈëµ½Ò»Õűí ÄǾÍÊÇÓÃJOB¶¨Ê±Ö´ÐÐ,´ÓÎļþµ¼ÈëÊ ......