本帖最后由 us_yunleiwangdb 于 2010-12-27 17:32:47 编辑

解决方案 »

  1.   

    restore database back_up from disk='d:\back.bak' with norecovery
      

  2.   

    同意billpu,在最后一步还原之前,
    restore都要加norecovery参数.表示不覆盖,后继还可以继续还原.restore database back_up from disk='d:\back.bak' with norecovery
    restore database back_up from disk='d:\back.log' with norecovery
    restore database back_up from disk='d:\back_201001' with norecovery
    restore database back_up from disk='d:\back_201002' --最后一个restore不加norecoveryuse back_up 
    select * from usedb
      

  3.   

    restore database back_up from disk='d:\back.bak'   with norecovery
    restore log back_up from disk='d:\back_201001.log'  with recovery
      

  4.   

    以上楼主,你们测试过吗,为什么我不可呢: 记住,我的备份文件有 back.bak,back.log,back_201001.log,back_201002.log。,我还原的时候
    restore database back_up from disk='d:\back.bak' with norecovery
    restore database back_up from disk='d:\back_201001.log' with norecovery
    restore database back_up from disk='d:\back_201002.log' with recovery
    我是丢掉下面这个备份日志
    ---restore database back_up from disk='d:\back.log' with norecovery
    为什么不能还原成功,总是报错呢,我么有太理解 还原的原理
      

  5.   

    各个数据库日志(Log)备份文件之间,是通过LSN(系统时间戳)来进行关联的.
    如果丢掉中间的一个,也就是LSN断号了,系统是不会也不允许进行还原的. 正确做法如2楼的例子..
      

  6.   

    restore database back_up from disk='d:\back.bak' with norecovery
    restore database back_up from disk='d:\back.log' with norecovery
    restore database back_up from disk='d:\back_201001' with norecovery
    restore database back_up from disk='d:\back_201002' 
      

  7.   

    不好意思,更正一下二楼的语法错误.restore database back_up from disk='d:\back.bak' with norecovery
    restore database back_up from disk='d:\back.log' with norecovery
    restore database back_up from disk='d:\back_201001.log' with norecovery--最后一个restore加recovery!
    restore database back_up from disk='d:\back_201002.log' with recoveryuse back_up 
    select * from usedb
      

  8.   

    楼主的备份流程是: 全备份 --> 日志备份1 --> 日志备份2 --> 日志备份3
    如果弄丢了日志备份1的文件, 那么日志备份2,日志备份3也是没办法还原D, 没办法的事.
      

  9.   

    可以考虑定期再做完整备份啊,例如
    全备份1 --> 日志备份11 --> 日志备份12 --> 日志备份13 
    --> 全备份2  --> 日志备份21 --> 日志备份22 --> 日志备份23 ...
    只要做好了全备份2,前面的全备份1,日志备份11,日志备份12,日志备份13就可以删除了.楼主原先的备份方式有以下问题.
     1.日志备份越来越多,磁盘空间不足.
     2.恢复时,逐个日志备份进行恢复,非常耗时.
      

  10.   

    你说的ALL RIGHT,正常确实是那么操作的,但是我想知道如果真的某一个日志文件丢失,不是数据库就无法进行还原,那么SQL里面是否可以用归档模式来做,我也不太清楚归档模式下是什么机制:能解答一下吗:
    如果用归档,是不是可以解决日志丢失的问题呢?谢谢你给答复
      

  11.   

    楼主学过Oracle的吧? 
    归档(Archive)是Oracle中对日志的管理方式(个人认为此方式就很好),
    SQL Server是没有归档一说的(至少我没听说).如果楼主怕日志备份丢失,
    可以考虑用镜像备份,也就是同时产生2个备份,一个在本地一个在网络路径.
      

  12.   

    恩,谢谢你一直能解答我的疑问,对于SQL 刚刚的日志文件丢失是否可以用 Log Explorer 这个工具去解决呢? 恩你说的很对,对于Oracle 却是分归档和非归档模式下进行日志记录的存储。
    对于以上问题看看 LOG Explorer能否解决呢?
      

  13.   

    估计不行.即使你的数据库是完整恢复模式,
    每次Backup Log...之后就把日志截断了(说法可能不太准确).
    再用LOG Explorer去查是查不到的.
      

  14.   

    Oracle的RMAN很强大,SQL Server不知何时赶得上.
      

  15.   

    是的,Oracle 在对数据库安全处理方面绝对要比SQL 好的太多了。认识你很开心,以后大家多多交流,做个朋友