一、事务概述 :
1.事务由一系列的相关的sql语句组成的最小逻辑工作单元
2.oracle以事务为单位来处理数据,保证数据的一致性
3.如果对事务进行提交,该事物的所有sql语句操作都会提交,成为数据库的永久组成部分
4.如果事务遇到错误而被取消或者回滚,事务的所有sql语句操作都会被清除,数据库恢复到事务执行前的状态。
5.一个事务的所有sql语句要么全部被执行,要么全部没有执行
二、事务特性acid
一组sql语句要成为事务,必须满足以下特性
1.原子性a
事务是不可分割的原子工作单元;对数据的数据修改,要么全部执行,要不全部都不执行。
2.一致性c
事务完成时,必须使所有的数据保持一致。在相关数据库中,所有的规则都必须应用于事务的修改,以保持数据的完整性。事务结束时候,所有的内部数据结构(B树索引或者双向链表)都必须正确
3.隔离性i
由并发事务所做的修改必须与其他并发事务所做的修改隔离
4.持久性d
事务完成后,对系统的影响是永久性的
三、提交事务
提交事务表示该事务中对数据库所做的全部操作都将永久记录在数据库中。
提交事务commit语句,标志一个成功的隐性事务或者显性事务的结束.
执行commit语句数据库会做的动作
1.在回退段内的事务表中记录这个事务已经提交,并生成一个唯一的系统改变号scn,并将该scn值保存到事务表中,用于唯一标识这个事务
2.启动lgwr后台进程,将sga区中缓存的重做记录写到联机重做日志文件,并且将该事物scn值也保存到日志文件中
3.oracle服务器进程释放事务处理所使用的资源
4.通知用户事务已经提交
四、回滚事务
rollback 【to savepoint savepointName】 (已提交的事物不能回滚) **********
回滚事务表示该事务对数据库的所有操作都将取消
语句
rollback 表示将事务回滚到事务的起点或者事务的某个保存点
回滚事务,oracle会做的动作
1.oracle通过回退段中的数据撤销事务中所有的sql语句对数据库所做的任何操作
2.oracle服务器进程事务使用的所有资源
3.通知用户事务回滚成功
五、保存点
在事务的处理过程中,如果发生错误并且使用rollback进行回滚 ,那么整个事务对数据库的操作都将被撤销,在一个庞大的事务中,这是很浪费资源的,比如事务前半部分是正确的,事务的后半部分是错误的,那么我想回滚到前半部分结束位置,这时就可以使用保存点
一个事实可以建立多个保存点,将事务分割成一系列的部分.事务回滚就可以回滚到其中的某个保存点上
语法
savepoint 【savepointName】
savepointName:保存点的名字