ocp 042 第十四章:备份和恢复的概念
DBA部分工作内容
尽量避免数据库出现故障
努力延长平均故障间隔时间 (MTBF):定期执行操作系统维护
缩短平均恢复时间 (MTTR):提前确定恢复过程方案并配置备份
最大程度地保护数据不会丢失。
故障类别
语句故障:单个数据库操作(选择、插入、更新或删除)失败。
用户进程故障:单个数据库会话失败。
网络故障:与数据库的连接断开。
用户错误:用户成功完成了操作,但是操作不正确(删除了正确的表,或者是输入了错误的数据)
实例故障:数据库实例意外关闭
介质故障:丢失了一个或多个数据库文件(也就是说,文件已删除或磁盘出现故障)
故障对应的解决方法:
后台进程和恢复
检查点 (CKPT)
每隔三秒(或频率更高),CKPT 进程就在控制文件中存储一次数据,以记录DBWn 从SGA 写入到磁盘的已修改数据块。这就称为“检查点”。检查点的用途是标识联机重做日志文件开始进行实例恢复的位置(这个位置称为“检查点位置”)。
如果使用日志切换,CKPT 进程还会将这个检查点信息写入到数据文件头。
使用检查点的原因
· 确保定期将内存中的已修改数据块写入磁盘,以便在系统或数据库出现故障的情况下不会丢失数据
· 减少实例恢复所需的时间。在进行恢复时只需处理跟在最后一个检查点后面的联机重做日志文件
· 确保在关闭过程中所有已提交数据都写入到数据文件中
· 重做日志文件和日志写进程
重做日志文件
· 记录数据库的更改
· 应多路复用以避免文件丢失(尽量驻留在不同的磁盘中)
日志写进程何时执行写入
· 提交时
· 达到三分之一满时
· 每隔三秒
· DBWn 执行写入之前
· 归档程序 (ARCn)
是一个可选的后台进程(建议使用)
将数据库设置为ARCHIVELOG 模式时会自动归档联机重做日志文件
保留对数据库进行的所有更改的记录
联机重做日志组填满后,Oracle 实例便开始对下一个联机重做日志组执行写入。从一个联机重做日志组切换到另一个联机重做日志组的过程称为日志切换。ARCn 进程在每次进行日志切换时都会对已填满的日志组进行归档。
实例恢复
· 概览
原因是尝试打开一个数据库,该数据库中的文件在关闭时没有进行同步,是自动执行的,使用重做日志组中存储的信息来同步文件
两个操作
· 前滚:数据文件还原到实例出现故障之前所处的状态。
· 回退:已执行但尚未提交的更改会返回到初始状态。
· 实例恢复的阶段
数据文件不同步(数据文件头中包含的系统更改号 (SCN) 必须与数据库控制文件中存储的当前SCN 匹配,这样实例才能打开一个数据文件。)
前滚(重做): 文件中已提交和未提交的数据
回退(还原): 文件中已提交的数据
· 优化实例恢复
在实例恢复期间,必须将检查点位置与重做日志末尾之间的事务处理应用于数据文件。通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。
· 使用 MTTR 指导
以秒或分钟为单位指定所需的时间。
默认值为 0(禁用)
最大值为 3,600 秒(1 个小时)
(Enterprise Manager > 管理 > 指导中心 > MTTR 指导)
· 进行配置以提高可恢复性
计划常规备份:大多数介质故障需要从备份还原丢失或损坏的文件
多路复用控制文件:与数据库关联的所有控制文件是完全相同的。至少要有三个副本
多路复用重做日志组:至少要确保每个重做日志组有两个副本
保留重做日志的归档副本
文件
· 控制文件
控制文件是一个二进制小文件,用于说明数据库的结构。只要装载或打开了数据库,Oracle 服务器就必须能够写入这个文件。如果这个文件不存在,就不能装载数据库
控制文件至少有两个副本(Oracle 建议三个)
每个磁盘上一个副本
至少在单独的磁盘控制器上有一个副本
· 重做日志文件
每个组至少有两个成员(文件)
每个成员都位于一个独立的磁盘驱动器上
每个成员都位于一个独立的磁盘控制器上
· 多路复用重做日志
在“Redo Log Members(重做日志成员)”区域中,单击“Add(添加)”
· 归档日志文件
创建重做日志文件的归档副本
· 指定归档日志文件命名惯例
· 指定一个或多个归档日志文件的位置
· 将数据库切换到 ARCHIVELOG 模式。
命名与目的地
· %s:包含日志序列号作为文件名的一部分
· %t:包含线程号作为文件名的一部分
· %r:包含重置日志 ID 可确保归档日志文件名是唯一的,甚至在使用某些高级恢复技术重置了日志序列号之后也是如此
· %d:包含数据库ID 作为文件名的一部分
ARCHIVELOG 模式
· SQL> ALTER DATABASE ARCHIVELOG;(mount状态下),再重启数据库