Oracle table lock的5種模式

2022-02-03 08:34:15 字數 1376 閱讀 3381

oracle中的鎖定可以分為幾類:

1、dml lock(data lock),

2、ddl lock(dictionary lock)

3、internal lock/latch。

dml lock又可以分為row lock和table lock。row lock在select.. for update/insert/update/delete時隱式自動產生,而table lock除了隱式產生,也可以呼叫lock table in  name來顯示鎖定。
如果不希望別的session lock/insert/update/delete表中任意一行,只允許查詢,可以用lock table table_name in exclusive mode。(x)這個鎖定模式級別最高,併發度最小。
如果允許別的session查詢或用select for update鎖定記錄,不允許insert/update/delete,可以用

lock table table_name in share row exclusive mode。(srx)

如果允許別的session查詢或select for update以及lock table table_name in share mode,只是不允許insert/update/delete,可以用

lock table table_name in share mode。(share mode和share row exclusive mode的區別在於乙個是非搶占式的而另乙個是搶占式的。進入share row exclusive mode後其他session不能阻止你insert/update/delete,而進入share mode後其他session也同樣可以進入share mode,進而阻止你對錶的修改。(s)

還有兩種鎖定模式,row share(rs)和row exclusive(rx)。他們允許的併發操作更多,一般直接用dml語句自動獲得,而不用lock語句。

-------------------------------------

怎麼unlock table 解鎖

方法一、kill session:
sql> select object_id,session_id from v$locked_object;  //注意session_id 就是上鎖的 session標誌

sql> select username,sid,serial#  from v$session where sid=。。;      //這裡的sid = session_id

sql> alter system kill session 'id,serial#';     //殺死該session

方法二、rollback/commit 終止事務處理

oracle table lock的5種模式

oracle中的鎖定可以分為幾類 dml lock data lock ddl lock dictionary lock 和internal lock latch。dml lock又可以分為row lock和table lock。row lock在select.for update insert u...

JavaScript 建立物件的5種常見模式

1 工廠模式 定義 以函式來封裝以特定介面建立物件的細節,其實就是通過函式來建立乙個物件並返回。缺點 每次呼叫都會返回乙個物件,不能節省記憶體,同時物件例項無法獲取其物件型別。function createperson name,age,job return o var person1 create...

StarFlow 工作流 5種設定參與者的模式

5中設定環節參與者模式 1 配置流程是設定固定參與者 2 與流程啟動者相同 3 a環節的參與者保持與b環節參與者相同 4 提供乙個介面。動態獲取參與者 下面的例項提供四種實現方式 流程圖 例項 processengine processengine new configuration buildpr...