一、事务的基本概念
一组DML语句 insert、delete、update须要同时执行成功或失败。
事务结束:COMMIT , ROLLBACK;
辅助事务回滚一半,批量脚本的时候分批设置
SAVEPOINT <savepoint_name> ;
ROLLBACK TO [SAVEPOINT] <savepoint_name> ;
二、隐式提交和回滚
DDL:执行DDL先后系统会自动执行commit
退出redhat下都是提交的,windows下exit是提交,X掉为回滚:
异常退出:X掉窗口
正常退出:exit
同一会话死掉后不可能会再生,该会话未提交的事务会被回滚
要求:任何DML都要显示的提交或者回滚
logminer:挖掘出某个事务的全部语句
三、事务的ACID属性
3.一、原子性(Atomicity),事务语句一块执行,事务中包含的全部操做要么都作,要么都不作。
例如:A账户向B账户划帐1000,则先将A减小1000,再将B增长1000,这两个动做要么都提交,要么都回退,不可能
发生一个有效、一个无效的状况。
3.二、一致性(Consistency),事务处理先后数据知足业务一致性状态。数据必须都知足业务规则约束。
例如:A、B账户的总金额在转帐前和转账后必须一致,其中的不一致必须是短暂的,在事务提交前才会出现的。
3.三、隔离性(Isolation),B事务不能修改A事务未提交的数据,防止多个事务交叉并发执行致使数据的不一致。
例如:在A、B之间转账时,C同时向A转账,若同时进行则A、B之间的一致性不能获得知足。因此在A、B事务执行
过程当中,其余事务不能访问(修改)当前相关的数值。
3.四、持久性(Durability) ,事务提交后产生的改变永久保存,提交以后数据存放在磁盘中,是永久性的。 sql
四、事务的隔离级别
解锁并修改密码
alter user hr account unlock identified by hr;
开启串行事务,开始一个事务,针对某个会话的设置,提交或回滚后,该设置结束,只能普通用户
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
commit;
默认级别: 一个事务未提交之前,别的会话是看不到修改的
SET TRANSACTION ISOLATION LEVEL READ COMMITED
SET TRANSACTION READ ONLY; --不能再执行DML了
SET TRANSACTION READ WRITEwindows
五、查出未提交的事务,操做的IP,事务操做
select * from v$session where taddr=(select addr from v$transaction);
select * from v$sql --配合查询某会话正在执行的当前SQL语句
select * from v$open_cursor where sid=137;session
参考资料:
http://blog.csdn.net/huazi88888/article/details/8567599并发