程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle學習筆記七 鎖,oracle學習筆記

Oracle學習筆記七 鎖,oracle學習筆記

編輯:Oracle教程

Oracle學習筆記七 鎖,oracle學習筆記


鎖的概念

  • 鎖是數據庫用來控制共享資源並發訪問的機制。
  • 鎖用於保護正在被修改的數據
  • 直到提交或回滾了事務之後,其他用戶才可以更新數據
  • 對數據的並發控制,保證一致性、完整性。

            

 

並行性 -允許多個用戶訪問同一數據 一致性 - 一次只允許一個用戶修改數據 完整性 - 為所有用戶提供正確的數據。如果一個用戶進行了修改並保存,所做的修改將反映給所有用戶  

鎖的類型

  行級鎖:對操作的數據行進行鎖定,防止其他用戶(連接)進行修改。 表級鎖:對整個表進行鎖定。  

行級鎖

對正在被修改的行進行鎖定。其他用戶可以訪問除被鎖定的行以外的行。     行級鎖是一種排他鎖,防止其他事務修改此行。 在使用以下語句時,Oracle會自動應用行級鎖:   1.INSERT   2.UPDATE   3.DELETE   4.SELECT … FOR UPDATE SELECT … FOR UPDATE語句允許用戶一次鎖定多條記錄進行更新,鎖定的數據自能通過commit或者rollback進行提交或回滾後解鎖   SELECT … FOR UPDATE語法:

 SELECT … FOR UPDATE [OF columns]
[WAIT n | NOWAIT];

SELECT * FROM order_master WHERE vencode='V002'
           FOR UPDATE OF odate, del_date;
UPDATE order_master SET del_date='28-8月-05'
           WHERE vencode=’V002’;
COMMIT;

 

 

SELECT * FROM order_master WHERE vencode='V002' FOR UPDATE WAIT 5;

 

 

SELECT * FROM order_master WHERE vencode='V002' FOR UPDATE NOWAIT;

 

 

表級鎖

表級鎖鎖定整個表,限制其他用戶對表的訪問。    

使用表級鎖使用命令顯示地鎖定表,應用表級鎖的語法是:

 LOCK TABLE table_name IN mode MODE;

 

 

 

  • 行共享:row share,禁止排他鎖(不允許排他鎖再鎖定),允許其他的用戶鎖定表數據行共享使用。

 

Lock table emp in row share mode;

 

 

  • 行排他:exclusive 禁止使用排他鎖和共享鎖
Lock table emp in row exclusive mode;

 

  • 共享鎖:share,可以多個用戶同時鎖定一個表,但是只允許用戶查詢和不能修改數據

 

    • 1.鎖定表,僅允許其他用戶查詢表中的行
    • 2.禁止其他用戶插入、更新和刪除行
    • 3.多個用戶可以同時在同一個表上應用此鎖

       

  • 共享行排他:share row exclusive 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖
  • 排他鎖: exclusive,禁止其他的用戶再鎖定 限制最強的表鎖,僅允許其他用戶查詢該表的行。禁止修改和鎖定表

死鎖

當兩個事務相互等待對方釋放資源時,就會形成死鎖,Oracle會自動檢測死鎖,並通過結束其中的一個事務來解決死鎖 例:
--第一步:用戶1
update emp2 set sal=sal+25 where empno=7782;
--第二步:用戶2
update emp2 set sal=sal+25 where empno=7566;
--第三步:用戶1
update emp2 set sal=sal+25 where empno=7566;
--第四步:用戶2
update emp2 set sal=sal+25 where empno=7782;
--產生死鎖!!Oracle 自動解鎖!

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved