数据库系统中故障

数据库系统中可能发生各种各样的故障:

1、事务内部的故障

     事务内部的故障有的是可以通过事务程序本身发现的。从程序的角度来认识。例如银行转账:

    begin transaction

         读取账户甲余额balance

     balance=balance-amount(转账金额)

    if (balance<0)then

    {

         打印金额不足

         rollback

    }

     else  写回balance

    

     {

 

          读取账户乙的余额balance1

         balance1=balance1+amount

         写回banlance1

         commit

 

     }

这个操作包含两个更新要么全都做要不都不做。否则数据库就出现不一致的问题。事务故障说明事务没有达到预期的终点。需要撤销操作即事务撤销(undo)。注意关键词的使用commit 和rollback。

 

2、系统故障(软故障)影响当前事务,但并不破坏数据库。例如特定类型的硬件错误,操作系统故障,dbms代码错误,停电等。当尚未完成的事务结果可能写入物理数据库,造成数据库可能处于不正确的状态。这就需要保证数据的一致性,需要清楚这些事务对数据库的修改。

恢复系统时需要在系统重启时让所有非正常终止的事务回滚,强行撤销所有未完成的任务。

另一方面未写入物理数据库的数据,要重新写入。需要执行redo 操作。保证数据库的一致状态。

3介质故障又称为硬故障,硬盘损坏磁场干扰等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值