ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 事务

事务

原创 Linux操作系统 作者:wxdlut 时间:2012-03-14 19:23:24 0 删除 编辑

1、A transaction ends when it is commited or rolled back,either  explicitly with a COMMIT or ROLLBACK statement or implicitly when a DDL statement is issued?

我们知道oracle中是以事务为单位进行数据库的更改操作的。那么oracle是在什么时机来提交的呢?对于DML语句,oracle不会自动提交事务,直到有一条commit或者rollback命令来处理时才会将改动反应到数据库里。而对于DDL和DCL,oracle会马上提交,也就是说一执行完这两类语句,就会反应到数据库中,还有一种情况是,前面执行的DML没有被手动提交,执行完DDL或者DCL后,oracle也会将DML对与数据的改动提交到数据库中去。

oralce的事务开始于第一条DML语句,结束于下面几种情况

  1. 一条显式的COMMIT或者Rollback命令
  2. 一条DDL或者DCL语句
  3. 用户退出SQL*plus或者SQL*plussheet 或者iSQL*plus
  4. 系统崩溃

这种Commit和rollback机制的好处是:

  1. 保证了数据的一致性
  2. 在数据永久改变之前可以预览数据
  3. 可以将逻辑上的一组操作一起提交到数据库。我们经常需要保证表1和表2的数据一致,要么同时插入,要么同时不插入。使用这种Commit和rollback机制就非常方便。

这样我们就要在脑子里形成这样一个印象,oracle会在我们执行了DCL或者DDL时,或者正常退出SQL*plus相关工具时,进行隐式的commit操作,而在系统崩溃时,或者非正常退出SQL*plus相关工具时是会自动的回滚数据,执行rollback操作的。

还需要说明的是只要事务没有完成,你所操作的数据是被锁定的,除了你之外的其他用户,是查询不到的你所做的更改的,也是无法进行更新或者删除操作的,如果其他用户试图操作这些数据,将会被迫等待,这时往往造成机器死机,直到你把相关的数据提交或者回滚。

在oracle中我们也还可以进行语句级的回滚操作,这时我们需要定义savepoint回滚点。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22492385/viewspace-718555/,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle网络连接
请登录后发表评论 登录
全部评论

注册时间:2012-03-09

  • 博文量
    61
  • 访问量
    62665