加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle中transaction是不是只有commit之后才能完成,不commit事

发布时间:2020-12-12 15:31:53 所属栏目:百科 来源:网络整理
导读:数据库]oracle中transaction是不是只有commit之后才能完成,不commit事物就完成不了??? [复制链接] 0 0 蓦然princes 家境小康 问答 好友 博客 消息 论坛徽章: 1 电梯直达 1 楼[收藏( 0 )][报告] 发表于 2014-04-11 20:19 | 只看该作者 | 倒序浏览 分享到

数据库]oracle中transaction是不是只有commit之后才能完成,不commit事物就完成不了???[复制链接] 0 0

蓦然princes

家境小康

  • 问答
  • 好友
  • 博客
  • 消息
论坛徽章: 1 1楼[收藏(0)][报告]发表于 2014-04-11 20:19| 只看该作者 | 倒序浏览 分享到: 本帖最后由 蓦然princes 于 2014-04-12 00:02 编辑

oracle中讲到transaction时提到,只有commit之后才一个事物才算完成。例如 一条insert语句,如果不commit
则,数据一致在SGA中,并没有写入Redolog file中。只有commit之后才会将SGA中的数据写入Redolog file中
一个transaction才算完成。
问题:在讲到后台进程时说:DBWR进程是由checkpoint时间触发、或者data Buffer cache达到一定界值之后触发
那就是说,如果一个insert语句执行完了,不进行commit,此时checkpoint时间发生,或者data Buffer cache
达到一定界限值,又或是,日志切换发生,都将触发DBWR进程进行数据写操作,但是在DBWR进行之前会
触发LGWR进程。此时没有进行commit的数据自动从SGA中的Relog Buffer中写道Redolog file中。
请问:这样不是和transaction中说的如果没有commit事物就没有完成矛盾了吗????也就是说,即使没有commit
那insert这个transaction也可能完成。

也就是说,任何操作不用commit进行提交,等到LGWR进程启动时(如:redolog Buffer达到1/3满,每三秒等)Sga中的redolog Buffer会写入到redolog file中, 这样的话,对于一个transaction,没有commit,也很有可能由于LGWR启动,将
sga中的数据写入到日志了啊。。。。我不知道哪里理解错了,请高手们指点小弟一下!!!感激不尽啊!!!
  • 文库|博客
  • 韩顺平玩转oracle视频教程笔记.doc
  • Oracle常见问题.pdf
  • Oracle--HINT--说明 (1).pdf
  • oracle-存储过程-函数-创建-删除-参数-传递-函数-查看-包-系统包.doc
  • ORACLE数据库巡检模板.doc
linux dhcp peizhi roc| 关于Unix文件的软链接| 求教这个命令什么意思,我是新手,刚刚学习 ...| sed -e "/grep/d" 是什么意思?谢谢 ...| jackson198574版主

  • 问答
  • 好友
  • 博客
  • 消息
论坛徽章: 17 2楼[报告]发表于 2014-04-15 16:10| 只看该作者 回复1#蓦然princes


不矛盾的,一般checkpoint的时候,脏数据会写入日志和数据文件,即使是没有提交commit也会写入数据文件,同时在日志文件中会有相关的信息描述,未提交commit和提交commit的数据都会在数据文件中,区别在于日志文件中记录的信息不同,一旦自动或者是手动执行rollback回滚操作的话,未提交commit的数据会被恢复为前映像的状态,不知道我的回答你是否满意? 全站 HTTPS如何规划、部署、优化?| 【公告】新版 ChinaUnix 客户端发布~| ChinaUnix打赏功能已上线!| 【大话IT】终年到,谁是你的存储挚爱? 家境小康

  • 问答
  • 博客
  • 3楼[报告] 发表于 2014-04-15 20:48 只看该作者
还不能确定你说的是不是正解,因为除了你没有其他人恢复啊?????为什么,难道是我问的问题没法回答吗????回复2#jackson198574


全站 HTTPS如何规划、部署、优化?| 【公告】新版 ChinaUnix 客户端发布~| ChinaUnix打赏功能已上线!| 问答
  • 博客
  • 4楼[报告] 发表于 2014-04-16 09:28 只看该作者
  • 本帖最后由 jackson198574 于 2014-04-16 09:32 编辑

    回复3#蓦然princes

    官方文档Concept:
    checkpoint
    1. A data structure that marks the checkpoint position,which is the SCN in the redo
    thread where instance recovery must begin.Checkpointsare recorded in the control
    file and each data file header,and are a crucial element of recovery.
    2. The writing of dirty data blocks in the database buffer cache to disk. The database
    writer (DBWn)process writes blocks to disk to synchronize the buffer cache with the
    data files.

    Checkpoint Process (CKPT)
    The checkpoint process (CKPT)updates the control file and data file headers with
    checkpoint information and signals DBWnto write blocks to disk. Checkpoint
    information includes the checkpoint position,SCN,location in online redo log to begin
    recovery,and so on. As shown in Figure 15–4,CKPT does not write data blocks to data
    files or redo blocks to online redo log files.

    家境小康

    • 问答
    • 博客
    • 5楼[报告] 发表于 2014-04-17 19:28 只看该作者
    高手,请问你的这段”不矛盾的,一般checkpoint的时候,脏数据会写入日志和数据文件,即使是没有提交commit也会写入数据文件,同时在日志文件中会有相关的信息描述,未提交commit和提交commit的数据都会在数据文件中,区别在于日志文件中记录的信息不同,一旦自动或者是手动执行rollback回滚操作的话,未提交commit的数据会被恢复为前映像的状态,不知道我的回答你是否满意?“内容在联机文旦哪里能找到,我找不到这段内容在官方文档中的讲解位置。。。。感激不尽回复4#jackson198574


    问答
  • 博客
  • 6楼[报告] 发表于 2014-04-17 20:20 只看该作者
  • 5#蓦然princes


    不是官方文档里的,你谷歌一下吧。 问答
  • 博客
  • 7楼[报告] 发表于 2014-04-17 20:22 只看该作者
  • 5#蓦然princes


    我这段描述回头看有问题,不过既然你看过官方文档了,最好自己多安排一些精力在研究官方文档上。 www_xylove 问答
  • 好友
  • 博客
  • 消息
  • 论坛徽章: 7 8楼[报告]发表于 2014-04-17 22:21| 只看该作者 commit做了什么?
    commit的本质是把 log buffer里的日志数据块刷新到redo logfiles磁盘中,保证了数据部丢失。
    zr2095 白手起家

    • 问答
    • 好友
    • 博客
    • 消息
    论坛徽章: 0 9楼[报告]发表于 2015-09-21 10:21| 只看该作者 2楼回答的很正确 闲来无聊 翻翻帖子

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读