数据库维护中,备份或恢复是重中之重的问题。尽管很多时候数据库系统运行缓慢,但对数据库数据的丢失而言,显然后者损失的代价是
不言而喻的。因此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。
从备份中还原介质故障损坏的文件.当用户没有备份时,可以使用必要的重做日志且控制文件包含损坏文件名称时仍可以执行恢复。
如果无法将文件还原至其原始位置,则用户必须重新定位还原的文件并将该新位置更新到控制文件。
还原必要的存档重做日志文件。