标签:错误 日志系统 加锁 weight ima 数据 images www com
在看本文之前,请确保你已经了解了Oracle事务和锁的概念即其作用,不过不了解,请参考数据库事务的一致性和原子性浅析和Oracle TM锁和TX锁
1、提交事务
当执行使用commit语句可以提交事务.当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁。在此之前,与当前事务相关的数据都会被加锁,直到当前事务进行了commit操作,如果在这个过程中有其他回话试图操作相关数据,(这些数据已经被当前事务加锁),那么其他回话会进行等待,或者直接返回错误。
注意:只有在提交事务之后也就是进行commit操作之后,数据才会真正的发生改变,在commit提交之前操作,全部被记录入Oracle日志系统
2、回退事务
在说回退事务之前,先说Oracle事务的保存点(savepoint)的概念和作用,保存点是事务中的一点,用于取消部分事务,保存点记录的是当前数据库的状态
在事务commit提交前,可以使用rollback 到指定的保存点,来回退到指定的保存点
在事务commit提交后,保存点会被删除,这个时候,就无法进行回退了
这里在使用保存点之前,强调一点,任何commit操作,也就是事务提交操作,都会导致savepoint的被删除!!!
3、rollback to savepoint 取消部分事务
select * from test; savepoint a; ---创建回退点
接着删除一条数据
delete from test where deptno=10
select * from test;
ok,depetno为10的那行数据被删了,现在使用rollback+savepoint进行回退
rollback to a; select * from test;
数据又回来了,我在删除数据之前,添加了一个会退点,然后进行删除数据,接着发现那条数据不能删,我就通过保存点返回到删除数据之前的那个保存点所对应的数据库状态
4、rollback 取消全部事务
回退的机制和rollback to savepoint 一样,但是使用rollback就是取消当前事务的全部操作,也就说当前事务先前的操作会全部被取消
标签:错误 日志系统 加锁 weight ima 数据 images www com
原文地址:http://www.cnblogs.com/GreenLeaves/p/6638785.html