oracle lockmode
ORACLEÀïËøÓÐÒÔϼ¸ÖÖģʽ:
0£ºnone
1£ºnull ¿Õ
e.g. 1¼¶ËøÓУºSelect£¬ÓÐʱ»áÔÚv$locked_object³öÏÖ¡£
2£ºRow-S Ðй²Ïí(RS)£º¹²Ïí±íËø£¬sub share
e.g. 2¼¶ËøÓУºSelect for update,Lock For Update,Lock Row Share
select for updateµ±¶Ô»°Ê¹ÓÃfor update×Ó´®´ò¿ªÒ»¸öÓαêʱ£¬ËùÓзµ
»Ø¼¯ÖеÄÊý¾ÝÐж¼½«´¦ÓÚÐм¶(Row-X)¶ÀÕ¼Ê½Ëø¶¨£¬ÆäËû¶ÔÏóÖ»Äܲé
ѯÕâЩÊý¾ÝÐУ¬²»ÄܽøÐÐupdate¡¢delete»òselect for update²Ù×÷¡£
3£ºRow-X ÐжÀÕ¼(RX)£ºÓÃÓÚÐеÄÐ޸ģ¬sub exclusive
e.g.3¼¶ËøÓУºInsert, Update, Delete, Lock Row Exclusive
ûÓÐcommit֮ǰ²åÈëͬÑùµÄÒ»Ìõ¼Ç¼»áûÓз´Ó¦, ÒòΪºóÒ»¸ö3µÄËø»áÒ»Ö±µÈ´ýÉÏÒ»¸ö3µÄËø, ÎÒÃDZØ
ÐëÊͷŵôÉÏÒ»¸ö²ÅÄܼÌÐø¹¤×÷¡£
4£ºShare ¹²ÏíËø(S)£º×èÖ¹ÆäËûDML²Ù×÷£¬share
e.g. 4¼¶ËøÓУºCreate Index, Lock Share
locked_modeΪ2,3,4²»Ó°ÏìDML(insert,delete,update,select)²Ù×÷, µ«DDL(alter,dropµÈ)²Ù×÷»áÌáʾ
ora-00054´íÎó¡£
00054, 00000, "resource busy and acquire with NOWAIT specified"
// *Cause: Resource interested is busy.
// *Action: Retry if necessary.
5£ºS/Row-X ¹²ÏíÐжÀÕ¼(SRX)£º×èÖ¹ÆäËûÊÂÎñ²Ù×÷£¬share/
Ïà¹ØÎĵµ£º
·½·¨Ò»£º
SQL>create table aa(a number);
´´½¨³É¹¦¡£
SQL> select * from aa;
A
--------
2
SQL>
SQL> insert all
2 into aa values(1)
3 into aa values(2)
4 select * from dual;
ÒÑ´´½¨2ÐС£
SQL> commit;
Ìá½»Íê³É¡£
SQL> select * from aa;
A
----------
2
1
2
·½·¨¶þ£º
S ......
ÎÞÒÉ×¢ÊÍÏÖÔÚ¶¼±»´ó¼Ò½ÓÊܺÍÈϿɣ¬ÔÚ´ó¼Ò±à³ÌÓõÄIDEÖж¼Ìṩ»òÓеÚÈý·½²å¼þÀ´Ö§³ÖÌáȡעÊÍÄÚÈÝʵÏÖ
¿ìËÙÁ˽â½á¹¹µÄ¹¦ÄÜ¡£µ«ÔÚÊý¾Ý¿âµÄ½Å±¾±àд·½ÃæÎÒÒ²ÊǾÀúÁ˰ٰãÕÛÄ¥ºó×ܽáÁËһЩ¶«Î÷·¢À´Óë´ó¼ÒÇд衣
ÏÂÃæÀ´¿´Ò»¸öOracle½¨±íµÄ·½Ê½¡£
create table ctable_name
(
......
ÔÚÒ»¸ö±íÖУ¬ÆäÖм¸¸ö×ֶεÄÖµÊÇÒ»ÑùµÄ£¬°´ÕÕÕ⼸¸ö×ֶνøÐзÖ×é²¢ºÏ²¢Êý¾Ý¡£
±íA id name role
1 ÕÅÈý &nb ......
Oracle
Ò»¡¢Êý¾Ý¿âÓïÑÔ£º
DCL:Êý¾Ý¿â¿ØÖÆÓïÑÔ(ÈçÊÂÎñ...)
DQL:Êý¾Ý¿â²éѯÓïÑÔ(select...)
DDL:Êý¾Ý¿â¶¨ÒåÓïÑÔ(create)
DML:Êý¾Ý¿â²Ù×÷ÓïÑÔ(¸üÐÂ....)
¶þ¡¢Oracle°æ±¾£º
Oracle8I i£º»¥ÁªÍø
Oracle10g g£ºÍø¸ñ£º°Ñ¸´ÔÓµÄÎÊÌâ·Ö²¼´¦Àí£¬×îºó°Ñ½á¹û×ۺϳÉ×î×ܽá¹û
°Ñ¸´ÔÓµÄÎÊÌâ·Ö²¼´¦Àí£¬×îºó°Ñ½á¹û×Ûº ......