Posted on 2007-03-05 14:34
dennis 閱讀(959)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
數(shù)據(jù)庫(kù)技術(shù)
Oracle中的鎖定可以分為幾類(lèi):DML lock(data lock),DDL lock(dictionary lock)和internal lock/latch。
DML lock又可以分為row lock和table lock。row lock在select.. for update/insert/update/delete時(shí)隱式自動(dòng)產(chǎn)生,而table lock除了隱式產(chǎn)生,也可以調(diào)用lock table
in name來(lái)顯示鎖定。
如果不希望別的session lock/insert/update/delete表中任意一行,只允許查詢(xún),可以用lock table table_name in exclusive mode。(X)這個(gè)鎖定模式級(jí)別最高,并發(fā)度最小。
如果允許別的session查詢(xún)或用select for update鎖定記錄,不允許insert/update/delete,可以用lock table table_name in share row exclusive mode。(SRX)
如
果允許別的session查詢(xún)或select for update以及l(fā)ock table table_name in share
mode,只是不允許insert/update/delete,可以用lock table table_name in share
mode。(share mode和share row exclusive mode的區(qū)別在于一個(gè)是非搶占式的而另一個(gè)是搶占式的。進(jìn)入share
row exclusive mode后其他session不能阻止你insert/update/delete,而進(jìn)入share
mode后其他session也同樣可以進(jìn)入share mode,進(jìn)而阻止你對(duì)表的修改。(S)
還有兩種鎖定模式,row share(RS)和row exclusive(RX)。他們?cè)试S的并發(fā)操作更多,一般直接用DML語(yǔ)句自動(dòng)獲得,而不用lock語(yǔ)句。
詳細(xì)參考concepts文檔中的"Type Of Locks":
http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96524/c21cnsis.htm#2937