--======================
-- Oracle 备份恢复概念
--======================
数据库维护中,备份或恢复是重中之重的问题。尽管很多时候数据库系统运行缓慢,但对数据库数据的丢失而言,显然后者损失的代价是
不言而喻的。因此 DBA 至少在保证数据不丢失的情况下来提高系统的性能是最起码的要求。关于什么是备份与回复,在此不做赘言。
一、物理备份与逻辑备份
物理备份
是所有物理文件的一个副本,比如数据文件,控制文件,归档日志等。该副本能被存储在本地磁盘或磁带等等。
物理备份是备份或恢复的基础
包括冷备份 ( 非归档模式 ) 或热备份 ( 归档模式 )
逻辑备份
将表、存储过程等数据使用 Oracle 的 export 等工具导出到二进制文件,后续根据需要再使用 import 工具导入数据库。
逻辑备份则是对物理备份的方式的一种补充,多用于数据迁移。
二、备份恢复工具
1. 使用 RMAN 来备份恢复,支持命令行及 GUI 接口,支持第三方磁带库备份,功能比较强大。
支持备份数据库、表空间、数据文件、控制文件、归档日志等
可以保存频繁使用备份恢复脚本
支持增量备份,跳过未使用的块,以及控制备份速度
在备份期间侦测损坏的数据
通过自动并发、限制 I / O 等提高备份性能
2. 用户托管的备份与恢复,是一种手动备份恢复的方式。使用操作系统命令和 SQL * plus 来完成相关的备份与恢复。
三、备份与恢复的策略
1. 多路复用控制文件及多个并发备份
2. 多路复用联机重做日志文件
3. 在 ARCHIVELOG 模式下运行数据库,并将重做日志存档至多个位置
4. 时常备份物理数据文件,尽可能创建多个副本到可靠的位置
关于数据库的日常规划请参考: Oracle 常见故障及日常规划
四、备份与恢复的几类重要数据结构
1. 数据文件
2. 联机重做日志文件
3. 控制文件
4. 自动管理的撤销
5. 可选的备份文件 ( 参数文件、密码文件 )
上述有关概念请参考: Oracle 实例和Oracle 数据库(Oracle 体系结构)
五、常见的备份类型
联机数据库备份 --> 使用 archivelog 模式 ,SCN 不一致
脱机数据库备份 --> 使用 noarchivelog 模式 ,SCN 保持一致
整个数据库 --> 可以在不同的时间段来备份,减轻 I/O 压力,从而构建整个数据库
表空间 --> 在 archivelog 模式下,当处于 noarchivelog 模式下,则该表空间必须为只读或脱机
数据文件 --> 同表空间备份
控制文件 --> 可以使用 SQL 语句或 RMAN 来备份
归档日志
参数文件
六、备份的分类
前面提到了逻辑备份与物理备份的概念,下面描述根据备份的内容、大小、性质等进行再分类
1. 全部备份与部分备份
全部备份:包含所有的数据文件及至少一个控制文件,参数文件,密码文件等。
部分备份:包含零个或多个表空间,零个或多个数据文件,可能包含控制文件等。部分备份仅在归档模式下才有效。
2. 完整备份与增量备份
完整备份:一个或多个数据文件的一个完整副本,包含从备份开始处所有的数据块。
增量备份:包含从最近一次次备份以来被修改或添加的数据块。
又可分为
差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式
累计增量:是备份上级备份以来所有变化的块
增量备份的几种形式
0 级增量备份:是所有备份的基础,是一个完整备份,包含所有的数据块
1 级差异增量备份:包含最近一次 1 级累计备份或差异备份以来被更改的数据块
1 级累计增量备份:只包含最近一次 0 级备份以来被更改的数据块
增量备份支持 archivelog 和 noarchivelog 模式,也可以在打开或关闭时进行。但只有 RMAN 才能实现增量备
3. 脱机备份与联机备份
脱机备份:在数据库关闭阶段发生的备份,又称为一致性备份或冷备份。在一致性关闭数据库后,控制文件 SCN 与数据文件头部 SCN 一致
联机备份:在数据库使用阶段发生的备份,又称为非一致性备份或热备份。联机备份一个数据文件不与任何特定的 SCN 以及控制文件同步
可以是全部备份,也可以是部分备份,能够使用 RMAN 或操作系统命令完成
仅仅在 archivelog 模式下
4. 映像副本与备份集
映像副本:是某个文件的完整拷贝,未经过任何压缩处理,每个字节都与源文件相同。不支持增量备份也不能备份到磁带。
备份集:由一个或多个称为 piece 的物理文件组成的逻辑结构。备份片中可以是数据文件,控制文件以及归档日志文件。
支持数据的压缩,支持增量备份。
可以备份到磁盘,也可以备份到磁带。
七、还原与恢复
数据库恢复的策略,是使用最近的一次备份来实现数据库的还原,然后使用归档日志和联机日志将数据库恢复到最新或特定状态。
还原:从最近的备份文件中检索所需要的内容,并将其拷回到原来位置的过程称为还原。
可以基于数据库、表空间、数据文件、控制文件、参数文件进行还原
恢复:在还原的基础上,使用归档日志和联机日志将数据库刷新到最新的 SCN ,使数据库保持一致性。
恢复的类型
实例恢复
在 RAC 中,当一个实例崩溃,则幸存的示例将自动使用联机日志来前滚已提交的事务,撤销未提交的事务并释放锁。
崩溃恢复
指在单实例的环境中,或多实例环境中所有的实例崩溃发生。在崩溃恢复中,实例必须首先打开数据库,然后执行恢复操作。
一般而言,在崩溃或关机退出之后第一个打开数据库的实例将自动执行崩溃恢复。
介质恢复
介质恢复通常为响应介质故障并根据用户的命令来执行恢复。
可以使用联机或归档日志来使还原的备份为最新或将其更新至一个特定的时间点。
介质恢复可以将整个数据库、一个表空间一个数据文件还原至指定的时间点
可分为完全恢复或不完全恢复
完全恢复:使用归档、联机日志与数据库、表空间或数据文件等的备份结合使用以将其更新至最新的时间点。
步骤
a . 将受损的数据文件脱机
b . 还原受损的数据文件
c . 恢复受损的数据文件
d . 将已恢复的数据文件联机
不完全恢复:使用归档、联机日志与数据库、表空间或数据文件等的备份结合使用以将其更新至过去的某个时间点或 SCN 等
步骤
a . 加载数据库
b . 还原所有数据文件,同时可以选择还原控制文件
c . 将数据库恢复至某个时间点、序列、或系统改变号
d . 使用 RESETLOGS 关键字打开数据库
不完全恢复
不完全恢复选项
基于时间的恢复,也称为时点恢复,将数据库恢复到一个指定的时间点
基于表空间时间点恢复,使用户能够将一个或多个表空间恢复至与数据库其余的部分不同的某个时间点。
基于取消的恢复,它恢复到执行 CANCEL 命令为止。
基于更改的恢复或日志序列恢复 , 如果使用了 O / S 命令 , 则基于更改的恢复将一直恢复到重做记录中一个指定的 SCN 为止
从人为错误中闪回
使用闪回特性从人为的错误中恢复
恢复工具
使用 RMAN 来进行恢复
RMAN 可以从备份机或映像副本中将数据文件还原至当前位置或新位置。当需要使用归档日志时, RMAN 将自动还原并应用归档日志
RMAN 支持完全介质恢复、不完全介质恢复
RMAN 恢复的基本命令式 restore 和 recover
使用 SQL * plus 来进行恢复
确定要恢复哪些文件。通常可以查询视图 V$RECOVER_FILE 。
从备份中还原介质故障损坏的文件 . 当用户没有备份时 , 可以使用必要的重做日志且控制文件包含损坏文件名称时仍可以执行恢复。
如果无法将文件还原至其原始位置,则用户必须重新定位还原的文件并将该新位置更新到控制文件。
还原必要的存档重做日志文件。
八、更多参考
Oracle 联机重做日志文件(ONLINE LOG FILE)