Oracle学习总结13——事务与锁

1-事务的四个特性是什么?分别解释…
事务核心指的是一个会话所进行的更新操作要么一起成功,要么一起失败。
事务的ACID特性,即:原子性、一致性、隔离性、持久性。
(1)原子性:一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
(2)一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
(3)隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
(4)持久性:持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响

2-事务的提交有那三种方式?分别说明…
显示提交与隐式提交两种
显示提交需要利用commit来完成,而隐式提交则在语句执行后就完成了提交,不需要commit,比如alter语句。

3-事务回滚命令是什么?有什么作用?
rollback是回滚,可以撤销对数据库进行的全部操作。可以使事务回到上一个未提交的状态。需要注意的是,在事务完成提交以后,无法回滚之前的数据。

4-回滚点的作用?请用完整的sql场景来解释…设置2个回滚点…
回滚点的作用是可以方便事务回到自己标记回滚点的状态,下面对dept表进行操作

对scott模式下的dept表进行操作。在原始位置设置一个保存点sp1
Oracle学习总结13——事务与锁
插入一条deptno=50的数据后再设置一个保存点sp2
Oracle学习总结13——事务与锁
删除一条deptno=60的数据后查看整个表格
Oracle学习总结13——事务与锁
回滚到sp2保存点后,查看表格,表格回到了插入数据后的状态
Oracle学习总结13——事务与锁
回滚到sp1保存点后,此时表格恢复了初始状态
Oracle学习总结13——事务与锁
5-哪两种锁机制?分别解释…
在Oracle中,提供了两种锁机制。
(1)共享锁(share lock) 。共享锁通过数据存取的高并行性来实现。如果获得了一个共享锁,那么用户就可以共享相同的资源。许多事务可以获得相同资源上的共享锁。例如,多个用户可以在相同的时间读取相同的数据。
(2)独占锁( exclusive lock)。独占锁防止共同改变相同的资源。假如一个事务获得了某一资源上的一个专用锁,那么直到该锁被解锁,其它的事务才能修改该资源,但允许对资源进行共享。例如,假如一个表被锁定在独占模式下,它并组织其它用户从同一个表得到数据。
所有的锁在事务期间被保持,事务中的SQL语句所做的修改只有在事务提交时才能对其他事务可用。Oracle在事务提交和回滚事务时,释放事务所使用的锁。

6-哪三种锁的类型?分别解释…
DML锁:为了保证并行访问数据的完整性。是执行DML时保护数据的锁。Row Lock(TX)保护特定行,Table Lock(TM)保护整个表。比如像一个表中添加数据时要保证该表不会被删除。

DDL锁:保护方案对象的定义,当执行DDL语句时,运用DDL锁会隐式的提交事务,自动获取过程所定义的方案的DDL锁。是在DDL操作中会自动为对象加DDL锁,从而保护这些对象不会被其他会话锁修改。例如,如果我执行了一个DDL操作 alter table t,表T上就会加一个排他DDL锁,这个排他DDL锁会防止其他会话得到这个表上的DDL锁和TM锁。

内部锁:包含内部数据库、内部结构,对于用户不可访问。

这节课之后,对于数据库的理解要再深入点了,往往数据库卡死会用到这里的知识点来分析和处理.