如果使用shutdown abort强制关闭数据库。
那redo log里面的信息如果没有被覆盖,数据还是不会丢失的对吗?
那redo log里面的信息如果被覆盖了,又没有归档,那数据库就会永久的丢失对吗?

解决方案 »

  1.   

    1、在数据没有完整性保证前,比如写入数据文件和UNDO(不管是否提交),
    重做日志不会覆盖。当然正常情况下不会丢失数据(这里的异常情况是
    指异常关机可能导致的数据坏块)。2、不会产生你说的这种情况。理由是,日志切换会触发检查点,检查点
    会触发DBWR写入数据文件(可能包含已提交和未提交的数据),所以,只
    有相关数据完成之后(达到一致),然后才允许切换日志。如果这时异常
    关机,数据库重启后,SMON将利用重做日志先前滚,前滚完成如果发现有
    未提交的事务,然后利用UNDO信息进行回滚。附:LGWR和DBWR的触发条件:
    触发LGWR进程:
      1. 用户提交 
      2. 有1/3重做日志缓冲区未被写入磁盘 
      3. 有大于1M的重做日志缓冲区未被写入磁盘 
      4. 3秒超时 
      5. DBWR 需要写入的数据的SCN大于LGWR记录的SCN,DBWR 触发LGWR写入。 触发DBWR进程:
    1. DBWR超时,大约3秒
    2. 系统中没有多余的空缓冲区来存放数据
    3. CKPT 进程触发DBWR