数据库的恢复


数据放在二级介质中。

当二级介质出现问题的时候怎么办呢?

恢复的原因:

事务的提交不等于数据写回磁盘

         还有内存管理的问题:  
         最常用的数据可能还放在内存里,局部性原理    
         暂时不写回磁盘里    
         结果提交了之后还在内存里,这个时候崩了  

恢复的技术

转储

镜像

日志

很重要!!!!可能考名词解释:什么是日志

  • 一个数据库值钱的是数据文件和日志
  • 日志是磁盘上的一个文件,为了使数据库可恢复
  • 只有dbms可以操纵,你用不了
  • 以事务为单位,dbms在日志中记录了事务对数据的更新轨迹
  • 先写日志,后做日志所对应的更新

===> 基于日志可以查找出已经提交和未提交的事务,并且恢复到先前的一个一致性状态

        对于已经执行完的事务,前卷  (redo,让他重来一遍)  
        对于没执行完的事务,回退

检查点

checkpoint

用户超多-->事务超多-->生成超多记录-->日志文件超级大

日志文件不可能无穷大,所以事先要规定日志的大小,写完了之后要切换,切换了之后会生成一个归档文件(也叫离线日志文件),然后新写的日志信息叫做连接日志文件或者在线日志文件,你要决定要把归档文件存在哪里。要是问题出现的时候 ,要把所有日志搜个遍,太麻烦
dbms强行发生一个进程,一旦启动,前台用户的事务处于等待状态,后台提交的事务存入磁盘 (做个了结,完全一致),然后生成一个检查点
问题出现的时候,只需要看最近一个检查点后面的信息就够了

日志切换的时候一定会出现一个检查点
所以只需要看连接日志文件,不用看归档日志文件
所以数据库回复的过程只需要看连接日志文件cc

results matching ""

    No results matching ""