备份与恢复是数据库管理中最重要的方面之一。如果数据库崩溃却没有办法恢复它,那么对企业造成的毁灭性结果可能会是数据丢失、收入减少、客户不满 等。不管公司是使用单个数据库还是多个数据库来存储数百 GB 或 TB 的数据,它们都有一个共同点,即需要制订一个备份与恢复方案来备份重要数据并使自身免于灾难。 备份与恢复基础 相比而言,逻辑备份包含使用 SQL 命令导出并存储在二进制文件中的数据。Oracle 在重做日志缓冲区中记录提交的和未提交的更改。逻辑备份用于补充物理备份。还原物理备份意味着重建它并将其提供给 Oracle 服务器。要恢复还原的备份,需要使用事务日志中的重做记录来更新数据。事务日志记录在执行备份之后对数据库所做的更改。 Oracle 在例程故障之后自动执行崩溃恢复和实例恢复。在出现介质故障的情况下,数据库管理员 (DBA) 必须启动恢复操作。恢复备份涉及两种不同的操作:通过应用重做数据将备份前滚至一个较近的时间;将在未提交的事务中所做的所有更改回滚至其原来状态。一般 而言,恢复指在还原、前滚和回滚备份中涉及的各种操作。备份与恢复指在防止数据库丢失数据和在丢失数据时重建数据库的过程中涉及的各种策略和操作。 备份与恢复操作 下面用介质恢复的一个简单例子来解释一下这个概念。假定用户在中午为数据库作了一个备份。从中午开始,每一分钟对数据库进行一次更改。在下午 1 点时,一个磁盘驱动器出现故障,导致那个磁盘上的所有数据丢失。幸运的是,Oracle 在重做日志中记录了所有更改。则用户可以将中午的备份还原到一个正常运转的磁盘驱动器上,使用重做数据将数据库恢复到下午 1 点,从而重建丢失的更改。 备份与恢复策略要素
只要用户在安全的存储器备份了数据库并存档了重做日志,就可以重建原始数据库。 备份与恢复的主要数据结构 数据文件 控制文件 联机重做日志文件 存档重做日志文件 自动管理的撤消 数据文件 用户自定义的特性允许数据文件在数据库空间不足时自动扩展。 一个或多个物理数据文件组成了一个称为表空间的逻辑数据库存储单元。 每个数据文件的第一个块均为头 (header)。头包括诸如文件大小、块大小、表空间和创建时间戳记等重要信息。只要打开数据库,Oracle 就检查数据文件头信息是否与存储在控制文件中的信息匹配。如果不匹配,则必须进行恢复。Oracle 在正常操作期间读取数据文件中的数据,并将其存储在缓冲区高速缓存中。例如,假定用户要访问表中的一些数据。如果请求的信息尚未出现缓冲区高速缓存中,则 Oracle 将从相应的数据文件中读取它并将其存储在内存中。 控制文件 数据库名称 数据库创建时间戳记 数据库的数据文件以及联机和存档重做日志文件的名称 检查点 — 在重做日志中指示在这个点之前的所有数据库更改都已保存在数据文件中的一条记录。 恢复管理器 (RMAN) 备份元数据 用户可以创建控制文件的多个副本,从而允许 Oracle 写控制文件的多个副本以防止灾难的发生。如果操作系统支持磁盘镜像,那么也可以创建控制文件的镜像,从而允许 O/S 将控制文件的一个副本写到多个磁盘上。每一次用户挂载 Oracle 数据库时,均使用它的控制文件来识别数据文件和联机重做日志文件(必须为数据库操作而打开)。如果更改了数据库的物理组成,如创建了一个新的数据文件或重 做日志文件,则 Oracle 将修改数据库的控制文件以反映该更改。只要更改了数据库的结构,就应备份控制文件。结构更改可能包括添加、删除或更改数据文件或表空间以及添加或删除联机 重做日志。 联机重做日志文件 Oracle 使用重做日志记录对数据库所做的所有更改。Oracle 在重做记录(重做缓冲区中一个描述更改的条目)中记录每一个更改。例如,假定用户更新了工资单表中的一个列值(从 5 改为 7)。Oracle 将旧值记录在撤销记录中,将新值记录在重做记录中。因为重做日志存储了对数据库所做的每次更改,所以这个事务的重做记录实际上包含了三个部分: 对撤消事务表所做的更改 对撤消数据块所做的更改 对工资单表数据块所做的更改 如果用户随后提交了对工资单表所做的更新 — 使得由 SQL 语句执行的更改变为永久性的 — 那么 Oracle 将生成另一条重做记录。通过这种方式,系统仔细地监视着在数据库中发生的一切。 重做日志文件的循环使用 如果禁用了存档,则一旦将记录在日志中的更改保存到数据文件中,就可再次使用写满的联机重做日志了。 如果启用了存档,则一旦将更改保存到数据文件中并将文件存档后,就可再次使用写满的联机重做日志了。 存档重做日志文件 ARCHIVELOG — Oracle 在周期中重用写满的联机重做日志文件之前将其存档。 NOARCHIVELOG — Oracle 在周期中重用写满的联机重做日志文件之前不将其存档。 在 ARCHIVELOG 模式下运行数据库有以下好处: 数据库可以从实例故障和介质故障中完全恢复过来。 用户可以执行联机备份,即在数据库打开并且可供使用的同时备份表空间。 可将存档的重做日志传输并应用到备用数据库中 Oracle 支持多重存档日志,以避免存档日志上任何可能的单点故障。 用户拥有更多恢复选择,如能够执行表空间时间点恢复 (TSPITR) 在 NOARCHIVELOG 模式下运行数据库有以下后果: 用户只能在正常停机后、数据库完全关闭时备份数据库。 一般而言,唯一的介质恢复选择就是还原整个数据库,这将导致丢最后一次备份后执行的所有事务。 自动管理的撤消 在执行 ROLLBACK 语句时回滚事务 恢复数据库 提供读一致性 当执行回滚语句时,撤销记录用于撤销由未提交的事务对数据库所做的更改。在数据库恢复期间,撤销记录用于撤销从重做日志应用到数据文件中的任何未提交的更改。在一个用户更改数据的同时,撤销记录将为访问数据的另一用户保留数据的前镜像,从而提供读一致性。 了解基本备份 可能出现何种类型的故障? 应当备份哪些信息? 应当使用哪种备份方法? 应当联机还是离线备份? 备份的频率? 如何避免危险的备份方法? 可能出现何种类型的故障? 语句故障 是 Oracle 程序在处理语句时的逻辑错误。例如,用户执行了无效 SQL 结构的语句。当发生语句故障时,Oracle 自动撤销语句的所有效果并将控制返回给用户。 进程故障 是访问 Oracle 的用户进程中出现的故障(即异常断开或进程终止)。尽管 Oracle 和其他的用户进程可以继续工作,但出现故障的用户进程将不能继续工作。如果用户进程在更改数据库时出现故障,则 Oracle 后台进程将撤销未提交事务的效果。 实例故障 是使 Oracle 实例(即 SGA 和后台进程)无法继续工作的问题。实例故障可能源于硬件问题(如电力中断)或软件问题(如操作系统崩溃)。当实例出现故障时,Oracle 不会将 SGA 缓冲区中的数据写到数据文件中。 用户或应用程序错误 是导致数据丢失的用户错误。例如,用户可能无意地从工资单表中删除数据。这种用户错误可能需要将数据库或对象恢复到该错误发生前的某个时间点上。为了允许从用户错误中恢复过来并满足其他独特的恢复要求,Oracle 提供了闪回技术。了解关于闪回技术的更多信息。 介质故障 是当 Oracle 试图写或读操作数据库所需要的文件时出现的物理问题。一个常见的例子是磁盘头损坏,它将导致磁盘驱动器上的所有数据丢失。磁盘故障可能影响各种文件(包括 数据文件、重做日志文件和控制文件)。因为数据库实例无法继续正常工作,所以它无法将 SGA 的数据库缓冲区中的数据写到数据文件中。 应当备份哪些信息? 联机数据库备份 离线数据库备份 整个数据库 表空间 数据文件 控制文件 存档重做日志 配置文件 在确定要备份的信息时,基本的原则是根据数据的重要性和更改的程度来确定数据的优先级。例如,虽然存档日志不发生变化,但它们对恢复数据库至关重 要,因此如果可能应维护多个副本。然而,费用帐户表被用户不断更新。因此,应当经常备份该表空间,以防止在恢复时不得不应用过多的重做数据。 可以以多方式组合备份。例如,DBA 可以决定每周执行整个数据库的备份,以确保获得原始数据库信息的一个相对较新的副本,而每天备份使用最频繁的表空间。DBA 还可以为所有重要的控制文件和存档重做日志创建多个副本作为额外的安全防护。 联机数据库备份 离线数据库备份 整个数据库备份 表空间备份 数据文件备份 控制文件备份 存档重做日志备份 配置文件 应当使用哪种备份方法? 自动的基于磁盘的备份和恢复 了解关于 RMAN 的更多信息 Oracle 企业管理器 恢复管理器 (RMAN) — 建立与服务器进程的连接并使备份与恢复操作的数据转移自动化的一个组件。 Oracle 企业管理器 — 调用恢复管理器的 GUI 界面。 Oracle Data Pump — 该实用程序通过将数据以专有格式从 Oracle 数据库写入操作系统文件来创建逻辑备份。稍后可以将这种数据导入数据库中。 用户管理的方法 — 通过执行特别针对用户操作系统的命令手动备份数据库。 创建恢复管理器备份 当执行 RMAN 命令(如备份或还原)时,恢复管理器建立了一个与 Oracle 服务器进程的连接。然后服务器进程从目标数据库中备份指定的数据文件、控制文件或存档日志。恢复目录是包含各种对备份和恢复有用的信息的中央信息库。 RMAN 自动建立备份所需的所有文件的名称和位置。恢复管理器还支持增量备份 — 仅备份那些自上次备份以来发生变化的块。在传统的备份方法中,必须备份数据文件中用到的所有数据块。 备份配置,用于定义和保存常用配置以供重复使用备份与恢复向导,用于引导用户完成创建备份脚本的步骤并将其作为计划作业提交 备份作业库,用于保存可以被检索并应用到多个目标上的常用备份作业 备份管理,用于查看并在 RMAN 备份上进行维护。 了解关于 Oracle 企业管理器 的更多信息 使用 Data Pump 提供额外备份保护 了解关于 Data Pump 的更多信息 用户管理的备份 了解基本的恢复策略 恢复如何工作? 恢复的类型有哪些? 应当使用哪种恢复方法? 恢复如何工作? 一旦 Oracle 完成了前滚阶段,就可以打开 Oracle 数据库了。回滚阶段在数据库打开后开始。回滚信息存储在事务表中。Oracle 在整个表中搜索未提交的事务,撤销它找到的任何未提交的事务。例如,如果用户从未提交添加行的 SQL 语句,则 Oracle 将在事务表中发现这一事实并撤销该更改。 恢复的类型有哪些? 崩溃恢复在单实例数据库崩溃或多实例数据库的所有实例崩溃时发生。在崩溃恢复中,实例必须首先打开数据库,然后执行恢复操作。一般而言,在崩溃或关机退出之后第一个打开数据库的实例将自动执行崩溃恢复。 与崩溃恢复和实例恢复不同,介质恢复通常响应介质故障并根据用户的命令来执行。在介质恢复中,可以使用联机或存档重做日志来使还原的备份为最新或将 其更新至一个特定的时间点。介质恢复可以还原整个数据库、一个表空间或一个数据文件并将它们还原至指定的时间。无论何时使用重做日志或将数据库恢复到某个 非当前时间,都将执行介质恢复。 总可以使用还原的备份来执行该种恢复。介质恢复主要分为完全恢复和不完全恢复。完全恢复涉及将重做数据与数据库、表空间或数据文件等的备份结合使用 以将其更新至最新的时间点。它之所以称为完全备份是因为 Oracle 将所有重做更改应用到备份上。通常,介质恢复在介质故障损坏了数据文件或控制文件之后执行。 了解关于自动故障恢复 的更多信息 恢复选项 表空间时间点恢复 (TSPITR),它使用户能够将一个或多个表空间恢复至与数据库其余的部分不同的某个时间点。 基于时间的恢复,也称为时间点恢复 (PITR),它将数据恢复至一个指定的时间点。 基于取消的恢复,它恢复到执行 CANCEL 命令为止。 基于更改的恢复或日志序列恢复。如果使用了 O/S 命令,那么基于更改的恢复将一直恢复到重做记录中一个指定的 SCN 为止。 从人为错误中闪回 如果使用了恢复管理器,那么日志序列恢复将一直恢复到一个指定的日志序列号。当执行不完全恢复时,用户必须在打开数据库时重置联机重做日志。重置数 据库的新版本称为一个新化身。用 RESETLOGS 选项打开数据库将告知 Oracle 丢弃一些重做。在 Oracle 数据库 10g 中,控制文件增加了新的结构,这些结构提供了利用先前化身的备份通过 RESETLOGS 操作进行恢复的能力。 从人为错误中恢复 了解关于闪回技术 的更多信息 应当使用哪种备份方法? 使用恢复管理器进行自动恢复。 执行 SQL 命令。 使用恢复管理器进行恢复 了解关于 RMAN 的更多信息 使用 SQL*Plus 进行恢复 确定要恢复哪些文件。通常可以使用表 V$RECOVER_FILE。 还原介质故障永久损坏的文件的备份。即使用户没有备份,在用户拥有必要的重做日志文件且控制文件包含损坏文件的名称时仍可以执行恢复。 如果无法将文件还原至其原始位置,则用户必须重新定位还原的文件并将该新位置通知控制文件。 还原必要的存档重做日志文件。 结论 |
转自:http://hi.baidu.com/3694aa/blog/item/544a1e1f808c36fd1ad5764e.html