本帖最后由 zjwssg 于 2010-01-24 16:15:25 编辑

解决方案 »

  1.   

    在线重做日志被覆盖时,会触发检查点,检查点会通知相应的DBWR进程将已修改的UNDO数据写入物理文件,
    只要当数据写入物理文件,日志文件才能被覆盖,否则数据库将被挂起等待,
    这时即使数据库崩溃,也可以根据undo数据来回退,因此不存在数据被抹掉的情况
      

  2.   

    如果从始至终都没有commit 过,那“在线重做日志被覆盖时,会触发检查点,检查点会通知相应的DBWR进程将已修改的UNDO数据写入物理文件“这个能实现数据写入物理文件,日志文件被覆盖  吗,还是日志都写满后,不commit,就必挂起。
      

  3.   

    日志写满ORACLE系统会自动触发检查点
    亦即:即使不人工commit,照样触发
      

  4.   


    触发LGWR进程的条件有: 
      1. 用户提交 
      2. 有1/3重做日志缓冲区未被写入磁盘 
      3. 有大于1M的重做日志缓冲区未被写入磁盘 
      4. 3秒超时 
      5. DBWR 需要写入的数据的SCN大于LGWR记录的SCN,DBWR 触发LGWR写入。 触发DBWR进程的条件有:
    1. DBWR超时,大约3秒
    2. 系统中没有多余的空缓冲区来存放数据
    3.  CKPT 进程触发DBWR 
    看了这些条件楼主应该就清楚了...
    ------------------------------------------------------------------------------
    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
      

  5.   

    要认清redo和undo的作用和区别。
      

  6.   

    整理了点资料, 楼主看了这个,应该会清楚很多..RedoLog Checkpoint 和 SCN关系
    http://blog.csdn.net/tianlesoftware/archive/2010/01/24/5251916.aspx------------------------------------------------------------------------------ 
    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 
      

  7.   

    对于insert来说,redo切换,触发检查点后,DBWn把数据是写入undo是吧,那夸张点,假如插入100亿条记录而不commit;那在redo都写满,触发多次检查点后,undo也必将写满吧,这之后会发生什么事啊?