日期:2014-05-16  浏览次数:20287 次

oracle事务

1.      事务的基本特征(ACID)

1)  原子性(Atomicity)

事务的原子性是指事务中包含的操作,要么都做,要么都不做,保证数据库是一致的。

例如:A账户向B账户汇款1000元,整个过程可以分为两步:A账户减去1000元,B账户增加1000元。两个动作要么都提交,要么都回退,不可能发生一个有效,一个无效的情况。

2)  一致性(Consistency)

一致性是指数据库在事务操作前后要保持数据的必须满足业务规则约束。

例如:A,B账户在转账前后必须要保持总金额一致,其中的不一致必须是短暂的,在事务提交之前才会出现。

3)  并发性(Isolation)

隔离性是数据库允许多个并发事务同时对数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时而导致数据的不一致。

例如:A账户向B账户转账,同时C账户向A账户转账,此时对于A,B之间的一致性不能满足,所以在A,B事务执行过程中,其他事务不能进行访问(修改)当前相关的数值。

4)  持久性(Durability)

持久性是指在事务处理结束后,对数据的修改是永久的,及时系统故障也不会丢失。

在提交之前如果系统故障,则所有信息丢失,提交之后的数据存放在磁盘中,是永久的。

2.      在oracle中没有事务的开始语句,一个Transaction其实于一条DML(Insert,update,delete)语句,结束于以下几种情况:

1)  用户显示执行commit语句提交操作或rollback语句回退。

2)  当执行DDL语句事务自动提交

3)  用户正常断开连接时,transaction自动提交

4)  系统崩溃或断电时事务自动回退

3.      SQL分类

1)  数据操纵语言DML(DataMuanipulation Language0)

SELECT,INSERT,UPDATE,DELETE

2)  数据定义语言DDL(DataDefinition Language)

CREATE,ALTER,DROP,RENAME,TRUNCATE

3)  数据控制语言DCL(Data ControlLanguage)

GRANT REVOKE

4.      提交或回滚前数据的状态

1)  以前的数据可恢复

2)  当前的用户可以看到DML操作的结果

3)  其他用户不能看到DML操作的结果

4)  被操作的数据被锁住,其他用户不能修改这些数据

5.      提交后数据的状态

1)  数据的修改被永久写在数据库中

2)  数据以前的状态永久性丢失

3)  所有的用户都能看到操作后的结果

4)  记录锁被释放,其他用户可操作这些数据

6.      回滚后的数据的状态

1)  修改的数据被回退

2)  恢复数据以前的状态

3)  行级锁被释放