事务
1-事务的四个特性是什么?分别解释…
(1)原子性(Atomic)
(2)一致性(ConDemoltent)
(3)隔离性(Isolated)
(4)持久性(Durability)
2-事务的提交有那三种方式?分别说明…
提交事务是指把对数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用COMMIT语句来完成。
事务的提交方式包括如下3种:
显式提交:使用commit命令使当前事务生效。
自动提交:在SQL *Plus里执行“set autocommit on;”命令。
隐式提交:除了显式提交之外的提交,如发出DDL命令、程序中止和关闭数据库等。
3-事务回滚命令是什么?有什么作用?
回退事务是指撤销对数据库进行的全部操作,Oracle利用回退段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回退整个事务,Oracle系统内部将会执行如下操作过程。
(1)首先使用回退段中的数据撤销对数据库所做的修改。
(2)然后Oracle后台服务进程释放掉事务所使用的系统资源。
(3)最后显示通知,告诉用户事务回退成功。
4-回滚点的作用?请用完整的sql场景来解释…设置2个回滚点…
回退点又称为保存点,即指在含有较多SQL语句的事务中间设定的回滚标记,其作用类似于调试程序的中断点。利用保存点可以将事务划分成若干小部分,这样就不必回滚整个事务,可以回滚到指定的保存点,有更大的灵活性。
回滚到指定保存点将完成如下主要工作。
回滚保存点之后的部分事务。
删除在该保存点之后建立的全部保存点,该保存点保留,以便多次回避。
解除保存点之后表的封锁或行的封锁。
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> savepoint sp1;
保存点已创建。
SQL> insert into dept values(50,'宣传部','上海');
已创建 1 行。
SQL> savepoint sp2;
保存点已创建。
SQL> delete from dept where deptno=40;
已删除 1 行。
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
50 宣传部 上海
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL> rollback to sp2;
回退已完成。
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
50 宣传部 上海
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> rollback to sp1;
回退已完成。
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
锁
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锁。
内部锁:包含内部数据库、内部结构,对于用户不可访问。
这节课之后,对于数据库的理解要再深入点了,往往数据库卡死会用到这里的知识点来分析和处理.