备份(backup)实际就是数据的副本,备份的目的是为了防止不可预料的数据丢失和应用错误。
转储(restore)是指当数据文件或控制文件出现损坏时,将已备份的副本文件还原到原数据库的过程。
恢复(recover)是指应用归档日志和重做日志事务更新副本文件到数据文件失败前的状态。
1.2.1 备份与恢复方法
1,用户管理的备份与恢复
用户管理的备份与恢复是指使用SQL 语句命令结合OS命令备份和恢复DB的方法(也被称为OS 备份与恢复)。
DB 文件 ────copy或cp────→ 备份文件
用户管理的备份是指执行OS (Copy)命令备份数据库物理文件的方法。
用户管理的恢复是指当DB出现介质失败时,将备份文件转储到DB,然后执行SQL 命令(recover tablespace)恢复DB的方法。
Users表空间备份文件────copy或cp────→转储后的Users表空间 ─────recover───→恢复后的Users 表空间
2,RMAN 管理的备份与恢复
RMAN(Recovery Manager,恢复管理器)管理的备份与恢复是指使用RMAN 命令备份和恢复DB的方法。因为这种备份与恢复方法需要借助目标DB的服务器进程,所以也被称为服务器管理的备份与恢复。
RMAN 备份是指执行RMAN 备份命令备份DB 物理文件的方法。
01.DBF 02.DBF 03.DBF 04.DBF ─────backup命令────→Demo_1.BAK
RMAN 恢复是指当DB 出现介质失败时,使用RMAN 命令转储并恢复DB 的方法。
Users 表空间最新备份文件─────restore────→转储后的Users 表空间 ─────recover────→恢复后的Users 表空间
3,逻辑备份与恢复
逻辑备份是指利用Oracle 工具程序EXPDP 或EXP 将DB 部分或全部的结构及其数据导出,并存储到OS 文件中的过程,该过程也称为导出(DB 必须处于OPEN 状态)。
DEPT EMP ─────EXPORT────→OS 文件
逻辑恢复是指当DB 对象被意外删除或截断之后,使用Oracle 工具程序IMPDP 或 IMP 将逻辑备份文件中的对象结构及其数据导入到DB 中的过程,该过程也称为导入。
DEPT EMP ←────IMPORT─────OS 文件
从Oracle Database 10g 开始,提供了数据泵导出导入工具EXPDP 和 IMPDP。EXPDP 和IMPDP 的速度要优于EXP 和IMP。
- EXP 和 IMP 是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
- EXPDP 和 IMPDP 是服务端的工具程序,它们只能在Oracle 服务器端使用,不能在Oracle 客户端使用。
- IMP 只能使用 EXP 导出文件,而不能使用 EXPDP 导出文件;IMPDP 只能使用 EXPDP 导出文件,而不能使用 EXP 导出文件。
1.2.2 制定恢复策略
作为DBA,最重要的管理职责就是备份和恢复。
当制定恢复策略时,DBA 应该考虑用户错误、介质失败以及数据块损坏的处理方法。
1,制定用户错误的恢复策略
当制定备份和恢复策略时,应该考虑如何处理用户或应用的不可预见错误操作,例如删除表、误载断表、批量更新数据的错误操作等。
处理用户错误有以下方法:
- 如果已经使用逻辑备份导出了误操作表的数据,那么某些情况下可以导入数据到误操作表。该技术的前提是规律性地导出了表的数据,并且在导出之间的数据变化不是特别重要。
- 你可以执行基于时间点的不完全恢复,将表空间或者DB 恢复到失败点的状态,这种方法可以避免表的数据丢失。当使用基于时间点的不完全恢复时,要求在失败点之前必须存在备份,并且在备份点与失败点之点的所有归档日志和重做日志必须全部存在。
- 使用FLASHBACK 快速恢复表数据。当使用FLASHBACK TABLE 恢复被删除的表时,要确定在数据库回收站中仍然存在被删除表;当使用FLASHBACK TABLE 恢复DML 误操作所影响的表数据时,必须确保激活了表的ROW MOVEMENT特征。
2,制定介质失败的恢复策略
在数据库运行期间,当其他外因阻止Oracle 读写DB 文件时,会发生介质失败。
典型的介质失败包括物理失败(例如磁头损坏)、覆盖或者破坏了DB 文件。
在DB 正常运行期间,介质失败要远远少于用户错误或者应用错误,但备份和恢复策略应该为介质失败做好准备。介质失败类型确定了需要使用的恢复技术,例如恢复DB 文件的策略不同于恢复控制文件的策略,SYSTEM 表空间的恢复策略不同于数据表空间的恢复策略。
3,制定数据块损坏的恢复策略
如果一个或多个数据文件只有少量数据块损坏,那么可以执行数据块介质恢复,而避免执行完全数据文件恢复。使用PL/SQL 系统包 DBMS_REPAIR 可以处理损坏数据坏,别外RMAN 的BLOCKRECOVER 命令可以用于恢复损坏数据块。
1.2.3 制定备份策略
数据恢复策略是数据备份策略的基础。当制定备份策略时,除了要为各种恢复策略提供必要的备份类型之外,DBA 还需要考虑到业务、操作、技术、软件以及硬件等各方面的要求。在制定备份和恢复计划时,一定要牢记“有备无患”。
1,多元化重做日志
多元化重做日志的目的是为了防止日志成员的损坏,从而提高DB 的安全运行时间(Mean-Time-Between-Failures,简写为MTBF)。当多元化重做日志时,应该将同一个日志组的不同日志成员分布到不同磁盘上,以防止磁盘损坏。假定某个日志组只包含一个日志成员,并且其唯一的日志成员出现介质失败,那么当切换到该日志组时DB 将会停止运行,此时就必须进行介质恢复。如是一个日志组包含多个日志成员,并且某个日志成员出现介质失败,那么此时DB 仍然可以正常运行,DBA 只需要删除损坏的日志成员即可。
2,多元化控制文件
多元化控制文件的目的是为了防止控制文件的损坏,从而降低控制文件的恢复时间(Mean-Time-To-Recover,简写为MTTR)。当多元化控制文件时,应该将不同的控制文件分布到不同的磁盘上,以防止磁盘损坏。如果数据库只包含一个控制文件,并且唯一控制文件出现介质失败,那么DB将无法装载,此时必须重新建立控制文件或者恢复控制文件。如果DB 包含多个控制文件,并且某个控制文件出现介质失败,那么DBA 只需要修改初始化参数control_files,而不需要重新建立或者恢复控制文件。
3,确定日志操作模式
重做日志记载了Oracle Database 的所有事务变化,Oracle 数据库具有NOARCHIVELOG 和 ARCHIVELOG 两种日志操作模式。当DB 处于ARCHIVELOG 模式时,只有在归档后重做日志才能被覆盖,并且所有事务变化被保留到归档日志;当DB 处于NOARCHIVELOG 模式时,重做日志可以直接被覆盖,并且过去的事务变化全部丢失。
(1)NOARCHIVELOG 模式的特点
- 不能执行联机备份。如果要进行备份,则必须关闭DB。
- 不能使用归档日志的任何恢复技术(完全恢复、FLASHBACK DATABASE、DBPITR、TSPITR)。
- 当某个数据文件出现介质失败时,有两种处理方法:第一种方法是删除该数据文件所包含的所有对象,然后删除该数据文件,数据训的其余部分仍然可以正常工作,但损坏数据文件的数据全部丢失;第二种方法是转储最近的完全备份,但备份以来的数据变化全部丢失。
(2)ARCHIVELOG 模式的特点
- 需要为归档日志分配专门的空间,并且需要管理已生成的归档日志。
- 在DB 打开时可以执行联机备份,不影响数据库的业务操作。
- 可以使用多种恢复技术(完全恢复、FLASHBACK DATABASE、DBPITR、TSPITR)。
4,选择备份保留策略
备份保留策略用于设置为满足恢复和其他需求保留备份文件的规则,备份保留策略可以基于冗余度(redundancy)或恢复窗口(recovery window)定义,不能满足保留策略的备份文件被称为旧文件(obsolete),并且这些陈旧备份可以被删除。备份保留策略必须使用RMAN来实现。
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
5,保留旧备份
保留早期数据文件和归档日志备份有以下几种原因:
- 当将数据库恢复到最近备份之前的时间点时,必须使用早期备份的数据文件和归档日志。
- 如果最近备份损坏,并且DB 也出现了介质失败,那么使用早期备份的数据文件和早期备份以来的所有归档日志可以完全恢复数据库。
6,确定备份周期
当制定备份策略时,备份周期也是很必要的,合理的备份周期可以降低介质恢复时间(MTTR)。备份周期应该根据数据库变化频率确定,数据库变化越频繁,备份周期应该越短。
7,在数据库物理结构发生改变后执行备份
当建立或删除表空间、增加数据文件、改变数据文件名称时,数据库物理结构会发生改变。当数据库物理结构发生改变时,在ARCHIVELOG模式下应该备份控制文件,在NOARCHIVELOG 模式下应该进行完全数据库备份。
8,备份频繁使用的表空间
一个Oracle 数据库往往包含许多表空间,但可能只在少量表空间上频繁执行DML 操作。如果表空间数据变化频繁,则增加备份次数,以降低恢复时间(MTTR)
;如果表空间数据变化比较慢,则减少备份次数;只读表空间因为其数据不会发生变化,所以只需要备份一次。
9,在NOLOGGING操作之后进行备份
当装载数据、建表和建立索引时,为了加快数据装载速度,可以指定NOLOGGING 选项。当指定NOLOGGING 选项时,数据变化不会被记载到重做日志。为了确保在表空间损坏时可以恢复这些数据,必须重新备份相应表空间。
10,使用EXP 和 EXPDP 导出数据
为了防止对象被意外删除或截断,可以使用EXP 或EXPDP 执行逻辑备份;而在对象被意外删除或截断之后,可以使用IMP 或 IMPDP 导入其结构和数据。逻辑备份和恢复增加了数据库备份和恢复的策略灵活性。但是,这种方法不能代替对数据库文件的物理备份,也不能提供完全恢复。
11,不要备份重做日志
与归档日志不同,重做日志不应该备份,备份重做日志“有弊无益”。在ARCHIVELOG 模式下,当重做日志填满时,其内容会自动被转储到归档日志中;在NOARCHIVELOG 模式下,只为只能在关闭后进行完全备份,所有数据文件和控制文件备份处于完全一致的状态,所以在转储备份时也不需要使用重做日志。防止重做日志损坏最有效的方法是多元化重做日志,并且将同一个日志组的不同日志成员分布到不同磁盘。