并行性 -容许多个用户访问同一数据数据库
一致性 - 一次只容许一个用户修改数据并发
完整性 - 为全部用户提供正确的数据。若是一个用户进行了修改并保存,所作的修改将反映给全部用户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 自动解锁!