ORACLE 事务与锁

1、事物的四个特性(ACID)
(1)原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。
(2)一致性(Consistency):事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。
(3)隔离性(Isolation):隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
(4)持久性(Durability):当事务正确完成后,它对于数据的改变是永久性的。

2、事务的提交
提交事务是指把对数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用COMMIT语句来完成。

事务的提交方式包括如下3种:
显式提交:使用commit命令使当前事务生效。
自动提交:在SQL *Plus里执行“set autocommit on;”命令。
隐式提交:除了显式提交之外的提交,如发出DDL命令、程序中止和关闭数据库等。

3、事务回滚(rollback)
回滚事务是指撤销对数据库进行的全部操作,Oracle利用回退段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回退整个事务,Oracle系统内部将会执行如下操作过程:
(1)首先使用回退段中的数据撤销对数据库所做的修改。
(2)然后Oracle后台服务进程释放掉事务所使用的系统资源。
(3)最后显示通知,告诉用户事务回退成功。

4、回滚点(savepoint)
回滚点又称为保存点,即指在含有较多SQL语句的事务中间设定的回滚标记。利用保存点可以将事务划分成若干小部分,这样就不必回滚整个事务,可以回滚到指定的保存点,有更大的灵活性。

回滚到指定保存点将完成如下主要工作:
回滚保存点之后的部分事务。
删除在该保存点之后建立的全部保存点,该保存点保留,以便多次回避。
解除保存点之后表的封锁或行的封锁。


5、锁机制
 在Oracle中,提供了两种锁机制。
(1)共享锁(share lock)。共享锁通过数据存取的高并行性来实现。如果获得了一个共享锁,那么用户就可以共享相同的资源。许多事务可以获得相同资源上的共享锁。例如,多个用户可以在相同的时间读取相同的数据。
(2)独占锁(exclusive lock)。独占锁防止共同改变相同的资源。假如一个事务获得了某一资源上的一个专用锁,那么直到该锁被解锁,其它的事务才能修改该资源,但允许对资源进行共享。例如,假如一个表被锁定在独占模式下,它并组织其它用户从同一个表得到数据。

6、锁的类型
DML锁(data locks 数据锁):用于保护数据的完整性
DDL锁(dictionary locks 字典锁):用于保护数据库对象的结构,如表、索引等的结构定义
内部锁:保护数据库的内部结构

发布了25 篇原创文章 · 获赞 1 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览