对于用户来说,数据库中保存的数据通常至关重要,所以各种手段就要被采取来防止各种可能的数据损失和数据库故障。而DBA的最主要任务就是维持数据库的高可靠性运行,尽量提高数据库的连续可用时间(Mean-Time-Between-Failures),降低数据库的平均恢复时间(Mean-Time-To-Recover,MTTR),同时最小化故障时的数据损失及业务影响。
在数据库环境中,常见的故障类型主要有:语句失败、用户进程失败、用户错误、实例失败、介质故障和网络故障。
通常实例失败是指数据库实例异常中断,如断电、异常错误导致Crash、Shutdown abort强制终止等,这类失败在下一次数据库重新启动后会自动执行实例恢复(Instance Recovery),通常能够自动顺利完成恢复启动数据库;而通常最为严重的故障主要是用户错误和介质故障。
用户错误主要指用户由于疏忽错误的drop/truncate掉数据表,或者误操作delete/update表中的数据并最终提交等。诸如此类的错误很常见,一旦这些错误出现,通常就需要DBA介入进行数据恢复或错误纠正。
介质故障一般指当数据库对数据文件进行读写时出现问题,问题可能是由于硬件的故障、软件的Bug、或者文件的意外删除等引发,介质故障是最为严重的数据库故障,也是DBA需要精心应付的主要问题。
为了防止种种故障可能造成的数据损失,Oracle提供了不同手段来进行数据备份,通过制定完善的备份策略,可以最小化数据损失。