发表于: 2005.05.04 23:32
分类: 读书笔记
出处: http://yangtingkun.itpub.net/post/468/28633
---------------------------------------------------------------
事务是一个或多个SQL语句构成的逻辑单元。
Oracle中的事务开始于第一个可执行的SQL。可执行的SQL语句是指产生对Oracle直接的语句,比如DML和DDL语句。
事务结束于以下情况:
用户发出COMMIT或ROLLBACK语句;
用户发出DDL语句;
用户断开和数据库的连接,这时当前事务会提交;
用户的进程异常终止,这时当前的事务会回滚。
当发出COMMIT后,Oracle会进行下列操作:
相应回滚段的内部事务表记录事务已经提交。并将对应的SCN(系统改变号)记录到表中;
LGWR把所有余下的缓冲区中的重做日志条目存储到硬盘上,并在联机重做日志中记录SCN;
释放表和行上的锁定;
Oracle标识事务完成。
当发出ROLLBACK后,Oracle会进行下列操作:
撤销所有已做的修改,通过从回滚段中读取数据来完成;
释放会话的锁定,释放在队列等待中被占用锁定的每个事项;
标识事务完成。
Discrete Transaction:通过使用BEGIN_DISCRETE_TRANSACTION过程。这种事务采用DIRECT PATH方式,不产生UNDO信息,产生的REDO信息存放在内存中单独的位置。
自治事务(Autonomous Transaction):自治事务独立于调用当前事务的事务。独立事务的提交和回滚不会影响到父事务。











