数据库管理员的职责包括:尽量避免数据库出现故障,延长平均故障间隔时间(MTBF),通过冗余提供保护,缩短平均恢复时间(MTTR)和最大程度地减少数据丢失。
第一部分:数据库备份恢复的概念
一、数据库可能发生的故障类型
1、语句错误
2、用户进程错误
3、网络故障
4、用户错误
5、实例错误
6、介质故障
二、检查点、重做日志和归档日志
1、了解实例恢复:检查点(CKPT)进程
CKPT 负责以下事项:
1)使用检查点信息更新数据文件标题
2)使用检查点信息更新控制文件
3)在完全检查点向DBWn发出信号
2、了解实例恢复:重做日志和日志写进程
1)重做日志文件:
a)记录对数据库进行的更改
b)应多路复用以避免文件丢失
2)日志写进程的写入时间为:
a)提交时
b)三分之一已满时
c)每隔3 秒
d)在DBWn 写入之前
e)一致性关闭之前
3、了解实例恢复:自动实例恢复或崩溃恢复
1)原因是尝试打开的数据库中的文件在关闭时不同步
2)使用重做日志组中存储的信息来同步文件
3)涉及到两个不同的操作:
a)前滚:数据文件还原到出现实例错误之前所处的状态。
b)回退:已执行但尚未提交的更改会返回到初始状态。
4、实例恢复阶段
1) 数据文件不同步
2) 前滚(重做)
3) 文件中的提交和未提交数据
4) 打开数据库
5) 回退(还原)
6) 文件中的提交数据
5、优化实例恢复
1)在实例恢复期间,必须将检查点位置与重做日志末尾之间的事务处理应用到数据文件。
2)通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。
6、使用MTTR指导
1)以秒或分钟为单位指定所需的时间。
2)默认值为0(禁用)
3)最大值为3,600 秒(1 个小时)
7、针对可恢复性进行配置
要使数据库的配置可实现最大可恢复性,必须执行以下操作:
1)计划常规备份
2)多路复用控制文件
3)多路复用重做日志组
4)保留重做日志的归档副本
三、配置快速恢复区
1、快速恢复区
强烈建议使用,可简化备份存储管理 –磁盘上的空间(与工作数据库文件分开) ;位置由DB_RECOVERY_FILE_DEST 参数指定;大小由DB_RECOVERY_FILE_DEST_SIZE 参数指定; 足够大,可存放备份、归档日志、闪回日志、镜像控制文件和镜像重做日志; 根据保留策略自动进行管理; 配置快速恢复区意味着确定了位置、大小和保留策略。
2、多路复用控制文件
为了避免数据库出现故障,数据应具备多路复用控制文件。
3、重做日志文件
多路复用重做日志组可避免介质故障和数据丢失,这会增加数据库I/O。建议重做日志组满足以下条件:
1)每个组至少有两个成员(文件)
2)在每个磁盘驱动器上有一个成员
3)使用ASM的系统,每个磁盘组上有一个成员。
注:多路复用重做日志可能会影响数据库整体性能。
4、多路复用重做日志
5、归档日志文件
要保留重做信息,请通过执行以下步骤,创建重做日志文件的归档副本。
1)指定归档日志文件命名惯例
2)指定一个或多个归档日志文件的位置
3)将数据库切换到ARCHIVELOG 模式
6、归档程序(ARCn)进程
归档程序(ARCn):
1)是可选的后台进程
2)为数据库设置ARCHIVELOG 模式时会自动归档联机重做日志文件
3)保留对数据库所做的所有更改的记录
7、归档日志文件:命名与目标位置
1)要配置归档日志文件名和目标位置,请选择“Enterprise Manager > Availability > Configure Recovery Settings(Enterprise Manager > 可用性> 配置恢复设置)”。
2)如果使用文件系统,建议选择多个路径分别在不同的磁盘。
四、启用ARCHIVELOG模式
要将数据库置于ARCHIVELOG 模式下,请在Enterprise Manager 中执行以下步骤:
1)选中“ARCHIVELOG Mode(ARCHIVELOG 模式)”复选框并单击“Apply(应用)”。只有处于MOUNT 状态时才能将数据库设置为ARCHIVELOG 模式。
2)重新启动数据库(使用SYSDBA 权限)
3) (可选)查看归档状态
4) 备份数据库
注:处于ARCHIVELOG 模式下的数据库可访问所有备份和恢复选项。
第二部分:执行数据库备份
一、备份解决方案
1、使用以下方法可执行备份
1)Recovery Manager
2)Oracle Secure Backup
3)用户管理的备份
2、Oracle Secure Backup
1)Oracle Secure Backup 和RMAN 一起为Oracle 环境提供了端到端备份解决方案
•对文件系统数据和Oracle DB 使用集中式磁带备份管理
•对RMAN 备份使用最佳集成介质管理层
•可备份网络上任意位置的任意数据
2)为整体备份解决方案提供单一技术支持资源,可加快决问题的速度。
3)确保以较低的成本和复杂性提供可靠的数据保护。
3、用户管理的方案
1)指手动跟踪备份需求和状态的过程
2)通常使用用户自己编写的脚本
3)需要将数据库文件置于正确的模式以进行备份
4)依赖操作系统命令来备份文件
二、Recovery Manager(RMAN)
1、术语
1)备份策略可包括:
•整个数据库(整个)
•部分数据库(部分)
2)备份类型可指示包含以下项:
•所选文件中的所有数据块(完全备份)
•只限自以前某次备份以来更改过的信息(增量备份)
i、累积(自上次0 级备份以来的更改)
ii、差异(自上次增量备份以来的更改)
3)备份模式可为以下类型:
•脱机(一致备份或冷备份)
•联机(非一致备份或热备份)
2、备份可存储为:
1)映像副本
2)备份集
3、Recovery Manager(RMAN)
1)具有强大的控制能力和脚本编写语言
2)已与Enterprise Manager 集成在一起
3)具有已公布的API,可以用来连接到多数常用备份软件
4)可备份数据、控制文件、归档日志文件和服务器参数件
5)可将文件备份到磁盘或磁带
4、配置备份设置
5、调度备份
1)策略
2)选项
3)设置
4)调度
5)复查
6、将控制文件备份到跟踪文件
1)控制文件有一个附加备份选项
2)控制文件跟踪备份可用来在丢失了所有控制文件之后进行恢复
7、管理备份
8、查看备份报告
9、监视快速恢复区
10、使用RMAN命令行
第三部分:执行数据库恢复
一、数据库的打开状态
1、打开数据库
要打开数据库,必须满足以下条件:
•所有控制文件都必须存在且已同步
•所有联机数据文件都必须存在且已同步
•每个重做日志组必须至少有一个成员存在
2、使用数据库保持在打开状态
1)打开数据库后,如果丢失以下项时数据库就会失败
2)任何控制文件 –属于系统或还原表空间的数据文件
3)整个重做日志组 (只要组中至少有一个成员可用,实例就会保持在打开状态)
二、数据恢复思路
1、快速检测、分析和修复故障
2、停机和运行时的故障
3、将对用户的干扰降到最低
4、用户界面
•Enterprise Manager
•GUI(多个路径)
•RMAN 命令行
5、支持的数据库配置
•单实例
•非RAC
6、支持故障转移到备用数据库,但不支持分析和修复备用数据库
三、控制文件丢失
1、丢失了控制文件
1)如果控制文件丢失或损坏,则实例通常会中止
2)如果使用ASM存储,则执行以下步骤:
•使用 Enterprise Manager 执行恢复指导
•将数据库启动到 NOMOUNT 状态和使用 RMAN 命令从现有控制文件恢复控制文件
3)如果控制文件存储在普通的文件系统中,则执行以下步骤:
•关闭实例
•通过复制现有控制文件还原缺失的控制文件
4)在控制文件成功恢复后,打开数据库
四、重做日志文件丢失
丢失了重做日志文件:如果丢失了重做日志文件组中的某个成员,并且组中至少还有一个成员,请注意其后果是:
1、不会影响实例的正常操作
2、预警日志中会收到一条消息,通知您无法找到某个成员。
3、通过删除丢失的日志成员,再添加新的成员的方式来恢复。
4、如果该日志组已经归档,则可以清空该日志组,然后重建丢失的日志成员。
五、非归档模式下丢失数据文件
如果数据库处于 NOARCHIVELOG 模式下,并且丢失了任何数据文件,请执行以下任务:
1、如果实例尚未关闭,请关闭实例。
2、从备份还原整个数据库,包括所有数据文件和控制文件。
3、打开数据库
4、让用户重新输入自上次备份以来所做的所有更改。
六、归档模式下丢失非关键数据文件
如果丢失或损坏了某个数据文件,且该文件不属于SYSTEM 或 UNDO表空间,则可还原并恢复缺失的数据文件。
七、归档模式下丢失系统关键数据文件
如果丢失或损坏了某个数据文件,且该文件属于SYSTEM 或 UNDO表空间,请执行以下任务:
1、实例可能会也可能不会自动关闭。如果未自动关闭,请使用SHUTDOWN ABORT 关闭实例。
2、装载数据库
3、还原并恢复缺失的数据文件
4、打开数据库
八、数据恢复指导
1、数据故障:示例
1)组件无法访问:缺失操作系统级别的数据文件、访问权限不正确、表空间脱机
2)物理损坏:块校验和失败、块头字段值无效
3)逻辑损坏:目录不一致;行片段、索引条目或事务处理损坏
4)不一致:控制文件早于或晚于数据文件和联机重做日志
5)I/O 故障:超出打开的文件数限制、通道无法访问、网络或I/O 错误
2、评估数据故障
3、数据故障
4、列出数据故障
5、建议修复
6、执行修复
7、数据恢复指导视图
对动态数据字典视图进行查询:
1)V$IR_FAILURE:列出所有故障,其中包括已关闭的故障(LIST FAILURE命令的结果)
2)V$IR_MANUAL_CHECKLIST:列出手动建议(ADVISEFAILURE 命令的结果)
3)V$IR_REPAIR:列出修复(ADVISE FAILURE 命令的结果)
4)V$IR_FAILURE_SET:交叉引用故障和建议标识符
领取专属 10元无门槛券
私享最新 技术干货