您的位置:首页 > 数据库 > Oracle

oracle 11g 手动备份和恢复(摘自官方手册)

2012-11-06 09:16 465 查看
1. NOARCHIVELOG 模式下的物理备份

前面已经讨论过Oracle 数据库中的NOARCHIVELOG 模式,这种数据库操作模式

只在数据库关闭时支持数据库备份。此外,NOARCHIVELOG 模式下数据库的完全恢复

只能恢复到备份的时间点。按照下面的步骤可以在NOARCHIVELOG 模式中执行数据库

的手动备份(需要注意的是,如果使用RMAN,这些步骤会有所不同,这将在后面的章节中

介绍):

(1) 完全关闭数据库。

(2) 备份所有数据库数据文件、控制文件和联机重做日志。

(3) 重新启动数据库。

2. ARCHIVELOG 模式下的物理备份

如果在ARCHIVELOG 模式下运行数据库,那么既可以在数据库运行时完全备份数

据库,也可以在数据库关闭时进行。即使是在数据库关闭时进行备份,步骤也会稍有不

同,请看如下所示的冷备份步骤:

(1) 完全关闭数据库。

(2) 备份所有数据库数据文件。

(3) 重新启动数据库。

(4) 使用alter system switch logfile 命令强制执行一个联机重做日志切换。一旦归档

了联机重做日志,那么就备份所有归档的重做日志。

(5) 使用alter database backup control file to trace 命令和alter database backup

controlfile to 'file_name'命令创建控制文件的一个备份。

当然,在数据库处于ARCHIVELOG 模式时,您有可能想完成数据库的联机备份(热

备份)。数据库处于ARCHIVELOG 模式时,Oracle 允许在数据库打开和运行的同时备份

每个单独的表空间与其数据文件,甚至还可以在不同的时刻备份选择的数据库部分。使

用下面的步骤可以执行表空间的一个联机备份:

(1) 使用alter tablespace begin backup 命令将需要备份的表空间和数据文件置入联

机备份模式。如果希望备份整个数据库,则可以使用alter database begin backup 命令将

所有数据库表空间置入热备份模式。

(2) 备份与刚被置入热备份模式的表空间相关联的数据文件(可以选择备份指定的

数据文件)。

(3) 对于在步骤(1)中置入联机备份模式的每个表空间来说,都要执行alter tablespace

end backup 命令将其从热备份模式中取出。如果希望将所有表空间从热备份模式中取出,

可以使用alter database end backup 命令。

(4) 使用alter system switch logfile 命令强制执行一个联机重做日志切换。

(5) 一旦完成了日志切换并归档了当前的联机重做日志,就备份所有归档的重做

日志。

需要注意的是,步骤(5)中的日志切换和归档的重做日志备份是必需的,这是因为恢

复操作必须应用在备份期间生成的所有重做上。Oracle 在联机备份期间不断地物理更新

数据文件(除了数据文件头)时,在备份操作期间存在数据块分离的可能性,这种可能性

会导致备份的数据文件不一致。此外,数据库数据文件可能在备份之后、但是在整个备

份进程结束之前被写入,由于备份中的每个数据文件当前可能会有不同的SCN,因此数

据文件备份映像会不一致,所以拥有在备份期间生成的重做以应用于恢复是非常重要的。

执行alter tablespace begin backup 命令或alter database begin backup 命令时,重做生

成会发生更改。一般来说,Oracle 只将更改矢量存储为重做记录。这些小型的记录只定

义已经发生的更改。当数据文件处于联机备份模式时,Oracle 会记录数据库数据文件的

整个块更改,而不是仅仅记录更改矢量,这意味着联机备份期间总的重做生成会大幅增

加,这样在热备份进程执行期间所需的磁盘空间和CPU 开销会受到影响。RMAN 提供

了不将表空间置入热备份模式而执行热备份的功能,这样就避免了使用额外的I/O 操作。

当结束数据文件的联机备份状态时,就可以进行正常的操作。

还需要注意的是在ARCHIVELOG 模式的两种备份中(联机备份和脱机备份),并不

备份联机重做日志,而是备份数据库的归档的重做日志。此外,也不会备份控制文件,

但是会创建备份控制文件,这是因为在恢复期间不希望冒险重写联机重做日志或控制

文件。

至于为什么不恢复联机重做日志,那是因为在ARCHIVELOG 模式的恢复期间,联

机重做日志中可能有最新的重做,这样当前的联机重做日志将被用于完全的时间点恢复。

由于这个原因,我们不在ARCHIVELOG 模式的数据库恢复期间重写联机重做日志。如

果数据库丢失了联机重做日志(希望不会发生这种情况),就必须使用所有归档的重做日

志来执行时间点恢复。

出于与不备份联机重做日志相同的原因,我们也不备份控制文件。因为当前控制文

件包含最新的联机重做日志信息和归档的重做日志信息,所以我们不想用这些对象先前

的信息来重写最新的信息。如果丢失了所有的控制文件,则可以使用备份控制文件来恢

复数据库。

最后来看看对归档的重做日志文件做补充备份以及保护归档的重做日志不丢失的其

他方法。丢失归档的重做日志直接影响将数据库恢复到故障点的能力。如果丢失了归档

的重做日志并且联机重做日志组不再含有该日志序列号,数据库就只能恢复到丢失的归

档的重做日志序列号之前的日志序列号。

3. NOARCHIVELOG 模式下的恢复

如果需要在NOARCHIVELOG 模式下恢复一个备份,可以简单地恢复所有数据库数

据文件、控制文件和联机重做日志,然后再启动数据库。当然,完整的恢复可能还需要

恢复Oracle RDBMS 软件、参数文件和其他所需的Oracle 项,本章的最后部分将介绍这

些内容。

需要注意的是在NOARCHIVELOG 模式下的恢复只能恢复至最后备份的时间点。如

果在NOARCHIVELOG 模式中恢复一个数据库备份,我们只能恢复该备份时间点的数据

库。如果数据库处于NOARCHIVELOG 模式,就不能恢复备份时间点后的任何更改。

4. ARCHIVELOG 模式下的恢复

使用联机备份或脱机备份都可以备份ARCHIVELOG 模式下的数据库。与NOARCHIVELOG

模式相比,我们可以在ARCHIVELOG 模式下恢复故障点发生时的数据库。此

外,可以选择恢复到指定时间点的数据库,还可以恢复基于更改号的指定时间点的数据库。

ARCHIVELOG 模式恢复也允许执行对数据文件、表空间或整个数据库的特定恢复。

此外,还可以执行时间点恢复或指定SCN 的恢复。我们将简要介绍这些恢复选项。

本部分将简要概述在ARCHIVELOG 模式下数据库的完全恢复。接下来将讨论表空

间和数据文件恢复,然后讨论时间点恢复。

ARCHIVELOG 模式下的完全恢复

假定数据库故障没有损害当前每个联机重做日志组中的所有成员和未备份的任何归

档的重做日志,那么我们可以在ARCHIVELOG 模式下恢复故障点的数据库备份。如果

丢失了归档的重做日志或联机重做日志,就需要执行某些形式的时间点恢复,后面将讨

论时间点恢复问题。此外,如果丢失了当前控制文件的所有副本,就需要恢复控制文件

并执行不完全恢复。

执行下面的步骤可以在ARCHIVELOG 模式下从数据库的一个备份中执行数据库的

完全恢复:

(1) 从备份中还原所有数据库数据文件。

(2) 还原所有备份的归档的重做日志。

(3) 加载数据库(使用startup mount 命令)。

(4) 恢复数据库(使用recover database 命令)。

(5) Oracle 提示您应用归档的重做日志中的重做。在提示符下只需要简单地输入

AUTO,Oracle 会自动应用所有重做日志。

(6) 一旦应用了所有重做日志,就可以打开恢复的数据库(使用alter database open

命令)。

ARCHIVELOG 模式下的表空间恢复和数据文件恢复

在数据库加载或数据库打开时可以执行表空间恢复和数据文件恢复。按照下面的步

骤可以在Oracle 数据库打开时执行一个表空间恢复:

(1) 使表空间脱机(使用alter tablespace offline 命令)。

(2) 还原与要恢复的表空间相关联的所有数据文件。

(3) 联机恢复表空间(使用recover tablespace 命令)。

(4) 一旦完成了恢复,使表空间联机(使用alter tablespace online 命令)。

正如可以恢复表空间一样,还可以恢复指定的数据文件。这样做的优点是可以保持

表空间联机。在恢复进程期间仅仅是驻留在脱机数据文件中的数据不可用,数据库的其

他部分在恢复期间都是可用的。数据文件恢复的基本步骤为:

(1) 使数据文件脱机(使用alter database datafile 'file_name' offline 命令)。

(2) 还原所有要恢复的数据文件。

(3) 联机恢复表空间(使用recover datafile 命令)。

(4) 一旦完成了恢复,就使数据文件联机(使用alter database datafile 'file_name' online

命令)。

ARCHIVELOG 模式下的时间点恢复

ARCHIVELOG 模式的另一个优点是可以将数据库恢复到指定时间点,而不是恢复

到发生故障时的状态。在创建克隆数据库时(可能出于测试和报告的原因而创建克隆数据

库),或者在主要的应用程序错误和用户错误情况中,经常会用到上述功能。我们既可以

将数据库恢复到指定时间点,也可以恢复到指定数据库SCN 的状态。

如果要恢复某个时间点的表空间,则需要恢复相同时间点的整个数据库(除非执行表

空间的时间点恢复,这是另一种恢复方式)。例如,假设您有一个账户管理数据库,大部

分数据位于ACCT 表空间中,并且您打算恢复两天前的数据库。因为其余的表空间(例如

SYSTEM、TEMP 和RBS 表空间)仍然与当前时间点一致,所以您不能只是还原ACCT

表空间并将其恢复到两天前的时间点,否则由于数据库的不一致,数据库将打开失败。

执行下面的步骤可以恢复某一时间点的数据库:

(1) 从一个备份中恢复所有数据库数据文件,这个备份在要恢复数据库的时间点之

前结束。

(2) 使用recover database until time '01-01-2010 21:00:00'命令并且应用所需的重做日

志,恢复指定时间点的数据库。

(3) 一旦完成恢复,就使用alter database open resetlogs 命令打开数据库。

也可以执行下面的步骤,选择使用SCN 号恢复数据库:

(1) 从一个备份中恢复所有数据库数据文件,这个备份在要恢复数据库的时间点之

前结束。

(2) 使用recover database until change '221122'命令并且应用所需的重做日志,恢复指

定系统更改号(SCN)的数据库。

(3) 一旦完成恢复,则打开数据库。

进一步来说,可以应用数据库的更改并在应用指定的归档的重做日志之后手动取

消进程:

(1) 从一个备份中恢复所有数据库数据文件,这个备份在要恢复数据库的时间点之

前结束。

(2) 使用recover database until cancel 命令并且应用所需的重做日志,恢复指定时间

点的数据库。当应用了最后一个归档的重做日志后,可以简单地执行cancel 命令来结束

重做日志应用。

(3) 一旦完成恢复,则打开数据库。

执行时间点恢复(或者有关这一问题的任何恢复)时一定要牢记数据库的一致性概

念。如果要恢复给定时间点的数据库,就必须使用在这个时间点之前结束的备份来恢复

数据库,还必须利用所有归档的重做日志(可能还需要剩余的联机重做日志)来完成恢复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: