玉祥平台客服-15087858732

标题: oracle 事务与commit和rollback [打印本页]

作者: fteair    时间: 2020-2-3 18:06

作者: 张兴康    时间: 2020-2-6 14:01
fteair 发表于 2017-3-3 18:06

啊呀,脑袋上好大个包
作者: 张兴康    时间: 2020-7-21 13:51
标题: oracle 事务与commit和rollback
事务:从第一条可执行的SQL语句遇到如下这些情况表示一个事务的结束与完成。
         1、遇到commit
         2、遇到rollback
         3、执行createdroprenamealterDML语句。
         4、正常的退出SQL*PLUS程序(称为隐式提交)好像需要AUTOCOMMIT设置值。
         5SQL语句执行出错,oracle将自动回滚所有操作(称为隐式回滚)。
第二个事务的开始:一个事务完成后的第一条可执行语句即表示另一个事务的开始。
commit语句:
         事务完成前oracle将发生如下事件
         1OracleSGA撤销段缓冲区中生成撤销记录(撤销段在撤销表空间中,撤销记录记录着旧值)。
         2OracleSGA重做日志缓冲区中生成重做日志项。
         3Oracle修改数据库缓冲区中的数据。
         事务完成时oracle将发生如下事件
         1、事务的重做日志项被标记系统唯一变更号SCN
         2、日志写进程将重做日志缓冲区中的事务日志和SCN写入到重做日志。
         3、释放Oracle持有的锁,事务标记为完成。
rollback语句:
         未提交的事务,可以使用rollback撤销或回滚SQL对事务做出的所有更改。回滚之后的事务被标记为完成。
         可以实现书签式的回滚(术语为:保留点savepoint)。例,在我操作事务时生成了A\B\C三个书签,那么继续操作的时候SQL出错了,那么oracle将自动回滚到书签C(称为语句级回滚),此时不像正常回滚(也就是不使用savepoint方式的回滚)那样事务被标记为完成,而是标记未完成则可继续执行。oracle的死锁发生在两个事务的SQL抢占同一个资源时,那么oracle回滚其中的一个事务语句来解决死锁。

作者: 张兴康    时间: 2020-7-21 13:51

作者: 陈晓龙    时间: 2020-7-21 14:09

作者: 陈晓龙    时间: 2020-7-21 14:09

作者: 陈晓龙    时间: 2020-7-21 14:09

作者: 张兴康    时间: 2020-7-22 13:38
陈晓龙 发表于 2017-2-21 14:09

又回复三个




欢迎光临 玉祥平台客服-15087858732 (http://bbs.delit.cn/) Powered by Discuz! X3.2