並行性 -容許多個用戶訪問同一數據數據庫
一致性 - 一次只容許一個用戶修改數據併發
完整性 - 爲全部用戶提供正確的數據。若是一個用戶進行了修改並保存,所作的修改將反映給全部用戶spa
行級鎖:對操做的數據行進行鎖定,防止其餘用戶(鏈接)進行修改。code
表級鎖:對整個表進行鎖定。事務
對正在被修改的行進行鎖定。其餘用戶能夠訪問除被鎖定的行之外的行。資源
行級鎖是一種排他鎖,防止其餘事務修改此行。it
在使用如下語句時,Oracle會自動應用行級鎖:table
1.INSERTast
2.UPDATEdate
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;
Lock table emp in row share mode;
Lock table emp in row exclusive mode;
當兩個事務相互等待對方釋放資源時,就會造成死鎖,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 自動解鎖!