只有当某个事物所产生的重做记录全部被写入重做日志后,Oracle才认为这个事物已经成功提交。
问题是:重做记录可能会在事物提交之前就写入到重做日志文件吗?例如如果重做日志高速缓存已经被写满,
logwr进程将把重做日志缓冲的所有内容全部写入联机日志文件中,而不管与这些重做记录所对应的
事物是否已经成功提交?

解决方案 »

  1.   


    重做记录可能会在事物提交之前就写入到重做日志文件吗?
    --会, 触发LGWR进程的条件有:
      1. 用户提交
      2. 有1/3重做日志缓冲区未被写入磁盘
      3. 有大于1M的重做日志缓冲区未被写入磁盘
      4. 3秒超时
      5. DBWR 需要写入的数据的SCN大于LGWR记录的SCN,DBWR 触发LGWR写入。------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  2.   

    如果会那么,当这个事物提交完成后,Oracle如何对这个已经写入联机重做日志做处理?
      

  3.   


    redo online log 是重复使用的,在redo log 下次切换的时候,这些信息会被覆盖掉。
    如果是数据库是归档模式,这个redo log 会进行归档。 
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  4.   

       我的意思是当这个事物完成时,orale如何同步这个事物因logwr出发条件写入logfile的这个未提交的事物。
      

  5.   


    只有当某个事务所产生的重做记录全部被写入重做日志文件之后,oracle才认为这个事务已经成功提交.重做记录也可能会在事务提交之前就写入重做日志文件.LGWR进程在开始写入下一个重做日志文件之前,必须确认这个即将被覆盖的重做日志文件已经完成如下工作:* 如果数据库处于非归档模式,已写满的重做日志文件在被覆盖之前,其中所有重做记录所对应的事务的修改
    操作结果必须已经全部被写入到数据文件中* 如果数据库处于归档模式,已写满的重做日志文件在被覆盖之前,不仅要对应所有事务的修改操作结果全部被 写入到数据文件中,还需要等待归档进程完成对它的归档操作
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  6.   

    写入就写入了呗 
    你说的ORACLE处理指的是什么
      

  7.   

    就是oralce如何同步,那个事物未提交就写入logfile文件的那个事物。