第 9 章:执行备份和恢复

本章向您介绍通过 Enterprise Manager 执行的 Oracle 数据库备份和恢复操作。

大约 1 小时

主题

本教程包括以下主题:

将光标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图将其隐藏。

开始本教程之前,您应该:

1.

完成第 2 章:安装 Oracle 软件和构建数据库 OBE

2.

完成第 3 章:Oracle Enterprise Manager 入门 OBE

3.

完成第 4 章:配置网络环境 OBE

4.

完成第 5 章:管理 Oracle 实例 OBE

5.

完成第 6 章:管理数据库存储结构 OBE

6.

完成第 7 章:管理用户和安全性 OBE

7.

完成第 8 章:管理模式对象 OBE

返回主题列表

配置快速恢复区和 ARCHIVELOG 模式

快速恢复区是为 Oracle 数据库中所有与恢复相关的文件和活动提供的一个统一的存储位置。将数据库从介质故障中完全恢复过来所需的全部文件都位于快速恢复区中。可以在快速恢复区中创建的与恢复相关的文件包括:存档重做日志文件、控制文件、由 Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。Oracle 推荐在数据库文件所在磁盘上创建更改跟踪文件。实际上,如果您安装了 OMF,并执行了启用更改跟踪的命令,那么将自动在为数据库文件指定的目录中创建跟踪文件。

通过分配一个存储位置并将相关的恢复文件统一在一个特定的区域内,Oracle 数据库服务器使数据库管理员不必再管理由这些组件创建的磁盘文件。

创建快速恢复区时,您可以选择一个目录、文件系统或自动存储管理磁盘组来存放文件,并为快速恢复区中用于存储所有文件的最大空间设置一个磁盘限额。您必须选择一个足够大的区域,以容纳所需的磁盘限额。当接近磁盘空间界限时,Oracle 服务器可以根据 RMAN 保留策略的界限来删除非必要的文件,为新文件腾出空间。

快速恢复区应该在一个与工作区分离的磁盘上,其中存储在增量备份中使用的活动数据库文件(如数据文件、控制文件、联机重做日志和更改跟踪文件)。将快速恢复区和工作区置于相同的磁盘上,当出现磁盘故障时,很容易使您同时丢失活动的数据库文件以及备份。

当您创建数据库时,可以配置快速恢复区和 ARCHIVELOG 模式。如果您在您创建数据库时没有执行这些任务,那么请按照以下步骤来配置快速恢复区和 ARCHIVELOG 模式:

1.

在操作系统提示符下增加备份和恢复区的大小。执行以下命令:

sqlplus system/<password>

alter system set db_recovery_file_dest_size=8G scope=both;
exit

2.

在操作系统提示符下为快速恢复区创建一个目录。执行以下命令:

cd $ORACLE_BASE
mkdir fast_rec_area

3.

打开浏览器,并指定用户名为 SYS,口令为 SYSDBA,以登录 Enterprise Manager Database Console。单击 Login

4.

单击 Oracle Database Home 页面中的 Availability

5.

在 Backup/Recovery Settings 部分中选择 Recovery Settings。您可以使用 Recovery Settings 页面来配置恢复实用程序的设置,包括快速恢复区。请注意,根据所使用的 Enterprise Manager 的版本,您可能会看到“闪回恢复区”,而非“快速恢复区”。

6.

显示 Recovery Settings 页面。滚动至 Flash Recovery 部分。如果您的数据库未启用快速恢复区,请在恰当的域中输入以下值来配置快速恢复区:

Flash Recovery Area Location:<在第 1 步中创建的目录>
Flash Recovery Area Size:8 GB

7.

向上滚动至窗口顶部。选择 ARCHIVELOG Mode,为数据库配置 ARCHIVELOG 模式。单击 Apply

8.

如果显示 Verify Flash Recovery Area Location:Specify Host Credentials 窗口,请输入主机凭证,确保授予适当的访问权限。单击 Continue

9.

显示一条确认更改的消息。要完成 ARCHIVELOG 模式的配置,必须关闭数据库实例。单击 Yes,关闭实例并重新启动。

10.

显示 Restart Database:Specify Host and Target Database Credentials 页面。输入主机凭证和数据库凭证。单击 OK

11.

显示 Restart Database:Confirmation 页面。单击 Yes,关闭实例并重新启动。

12.

显示 Restart Database:Activity Information 页面。单击 Refresh 登录 Enterprise Manager Database Control,并在数据库重新启动后再次登录 Enterprise Manager。

返回主题列表

配置备份设置和策略

您可以配置许多设置和策略来确定如何存储备份、备份哪些数据、如何执行备份,以及备份在从恢复区中清除之前保留多久。您还可以配置特性来提高备份性能。

1.

单击 Oracle Database Home 页面中的 Availability

2.

在 Backup/Recovery Setup 部分中选择 Backup Settings

3.

滚动至 Backup Settings 页面的 Host Credentials 区域。输入操作系统用户名和口令。向上滚动至 Disk Settings 部分。

4.

接受 Parallelism 域中的值 1。将 Disk Backup Location 域设为空,以使用闪回恢复区进行备份。为 Disk Backup Type 选择 Backup Set。单击 Test Disk Backup

5.

显示一条消息,指示磁盘设置备份测试成功完成。现在您将配置备份策略设置。单击 Policy,访问 Policy 页面。

6.

选中 Automatically backup the control file and server parameter file (SPFILE) with every backup and database structural change。选中 Optimize the whole database backup by skipping unchanged files such as read-only and offline datafiles that have been backed up。选中 Enable block change tracking for faster incremental backups。为 Block Change Tracking File 输入一个文件名。然后向下滚动到 Retention Policy 部分。

7.

选择 Retain backups that are necessary for a recovery to any time within the specified number of days (point-in-time recovery),并接受默认值(31 天)。在 Archivelog Deletion Policy 中选择 Delete archivelogs after it has specified number of backups,并接受默认值,即 1 个备份。单击 OK。返回到 Availability 页面。

返回主题列表

确定 DBID 和 DB_UNIQUE_NAME 的值

如果您丢失了数据库控制文件或 SPFILE,Enterprise Manager 可以从备份中恢复它们 — 只要您能够为数据库提供 DB_UNIQUE_NAMEDBID

执行以下步骤,确定 DB_UNIQUE_NAME 的值:

1.

单击 Server 选项卡。单击 Database Configuration 区域中的 Initialization Parameters

2.

显示 Current 属性页面。在 Name 域中输入 db_unique_name,然后单击 Go

3.

出现的页面显示了一行,该行的 Name 列为 db_unique_nameValue 列中给出了数据库的 db_unique_name 的值。

记录这个值,以便将来需要它进行恢复操作时,可以获得它。单击 Database Instance 链接返回 Server 页面。

执行以下步骤来确定 DBID

1.

单击 Server 页面的 Storage 区域中的 Control Files

2.

显示 Control Files 属性页面。选择 Advanced 属性页面。

3.

Database ID 域包含 DBID 值。(注意:您的计算机可能使用不同的值)。

记录这个值,以便将来需要它进行恢复操作时,可以获得它。单击 Database Instance 链接返回 Server 页面。

返回主题列表

执行完整的数据库备份

您可以通过执行一次完整的数据库备份来备份数据库的全部内容。将创建所有数据文件的完整备份。结果可能作为映像副本或作为备份集存储,但无论哪种情况下,数据库的所有数据文件以及控制文件、存档重做日志和服务器参数文件的全部内容都将在备份中反映出来。利用这个文件集,可以完整地恢复数据库。

1.

单击 Availability 选项卡。在 Manage 区域中选择 Schedule Backup

2.

显示 Schedule Backup 页面。在 Customized Backup 部分中,选择 Whole Database。如有必要,在 Host Credentials 部分中输入用户名和口令。单击 Schedule Customized Backup

3.

显示 Schedule Customized Backup:Options 页面。在 Backup Type 部分中选择 Full Backup。在 Backup Mode 部分中选择 Online Backup。在 Advanced 部分中选择 Also back up all archived logs on disk。单击 Next

4.

显示 Schedule Backup:Settings 页面。适当地选择 DiskTape。单击 Next

5.

显示 Schedule Backup:Schedule 页面。接受默认的 Job Name。选择 One Time (Immediately) 立即执行作业,或输入在稍后执行的时间。单击 Next

6.

显示 Schedule Backup:Review 页面。单击 Submit Job

7.

显示备份提交成功的消息。单击 View Job 来查看备份的状态。

8.

向下滚动至页面底部。在这个表中,您可以查看备份的状态,以及各个步骤是否已经成功完成。请注意,数据库备份可能需要一些时间才能完成。定期刷新您的浏览器,以便查看作业进度。

在继续下一个练习之前,请确保您已经完成了整个过程,成功完成了备份的全部三个步骤(预先备份、备份和备份后处理)。

单击 Database 选项卡返回 Database Home 页面。

返回主题列表

利用 Oracle 建议的备份策略对数据库进行备份

Oracle 建议的备份策略的基础是创建数据库的一个映像副本,然后利用 RMAN 增量备份继续生成备份。Oracle Enterprise Manager 调度 RMAN 备份作业。按照以下步骤来设置备份计划:

1.

单击 Availability 选项卡。在 Manage 区域中选择 Schedule Backup

2.

显示 Schedule Backup 页面。向下滚动到 Host Credentials 部分,如有必要,输入用户名和口令。再向上滚动,单击 Schedule Oracle-Suggested Backup

3.

显示 Schedule Oracle-Suggested Backup:Destination 页面。选择 Disk 作为您的备份目标位置。单击 Next

4.

显示 Schedule Backup:Setup 页面。请仔细查看信息,然后单击 Next

5.

显示 Schedule Backup:Schedule 页面。查看信息,相应地调整开始日期和时间(将日期设置为当前日期之后的几天)。单击 Next

6.

显示 Schedule Backup:Review 页面。请仔细查看信息,然后单击 Submit Job

7.

出现 Status 页面,其中包含一条指示作业已成功提交的消息。您可以单击 View Job 来访问作业状态页面,或者单击 OK 来完成操作并返回 Availability 页面。

返回主题列表

还原和恢复整个数据库

在本节中,您将使用 Enterprise Manager 恢复数据库。

1.

在 Availability 页面的 Manage 区域中选择 Perform Recovery

2.

显示 Perform Recovery 页面。在 Recovery Scope 下拉列表中,选择 Whole Database。选择 Recover to the current time or a previous point-in-time。在 Host Credentials 部分中输入操作系统用户名和口令。单击 Recover

3.

显示 Confirmation 页面,指示实例将关闭并重启。单击 Yes 继续。

4.

显示 Recovery Wizard 页面,指示实例将关闭并重启。(注意:您必须等待几分钟,以便此操作完成)。单击 Refresh,继续使用 Recovery Wizard。

5.

您将返回 Database Instance 页面,其中显示数据库已经处于 Mounted 状态。单击 Perform Recovery

6.

输入主机凭证,然后单击 Continue

7.

显示 Database Login 窗口。输入相应的凭证信息,然后单击 Login

8.

显示 Perform Recovery 页面。在 Recovery Scope 下拉列表中,选择 Whole Database,再次单击 Recover 调用 Recovery 向导。

9.

显示 Perform Whole Database Recovery:Point-in-time 页面。选择 Recover to the current time。单击 Next

10.

显示 Perform Whole Database Recovery:Rename 页面。选择 No. Restore the files to the default location(如果您希望这样),或者选择 Yes.Restore the files to a new, common location 并输入位置。单击 Next

11.

显示 Perform Whole Database Recovery:Review 页面。仔细查看信息,然后单击 Submit

12.

显示 Processing:Perform Whole Database Recovery 页面。

13.

您将收到一条操作已成功的确认消息。单击 Open Database

14.

单击 OK

15.

输入登录信息。单击 Login。返回到 Availability 页面。

返回主题列表

执行闪回表

完成以下任务来执行闪回表操作:

A 启用行移动
B. 模拟用户错误
C. 执行闪回表

启用行移动

为了在表上执行闪回表操作,您必须在表上启用行移动。在本节中,您将在 HR.EMPLOYEES 表上启用行移动。

1.

单击 Schema 选项卡。

2.

在 Database Objects 部分中选择 Tables

3.

显示 Tables 页面。在 Schema 域中输入 HR,在 Object Name 域中输入 REGIONS。单击 Go

4.

REGIONS 表显示在 Results 部分中。单击 Edit

5.

显示 Edit Table 页面。单击 Options 选项卡。

6.

从 Enable Row Movement 列表中选择 Yes。单击 Apply

7.

收到一条消息,指示表成功修改。单击 Tables 路径式导航栏。

返回主题

模拟用户错误

在本节中,您将通过更改 REGIONS 表中的数据来模拟用户错误。执行以下步骤:

1.

通过打开一个终端窗口和执行以下命令来查看 REGIONS 表中的数据:

sqlplus hr/<password>

col region_name format a30
select * from regions;

2.

通过执行以下 SQL 命令来更改所有行中的 region_name 列中的值,以模拟用户错误:

update regions set region_name = 'ORACLE';
commit;

3.

再次执行以下命令来查看修改:

select * from regions;

执行闪回表一节中,您将把表闪回到您更新表之前的时间点上。

返回主题

执行闪回表

在本节中,您将闪回 HR.REGIONS 表。

1.

在 Enterprise Manager 的 Tables 页面中,确认在表的列表中仍然选择了 REGIONS。从 Actions 下拉菜单中选择 Flashback Table。单击 Go

2.

显示 Perform Object Level Recovery:Point-in-time 页面。选择 Flashback to a timestamp,然后输入几分钟以前的一个日期和时间。单击 Next

3.

显示 Perform Object Level Recovery:Flashback Tables 窗口。单击 Next

4.

显示 Perform Object Level Recovery:Review 页面。仔细查看页面上的信息,然后单击 Submit

5.

收到一条消息,确认表已被闪回。单击 OK

6.

返回您的 SQL*Plus 会话,执行以下命令来查看闪回表操作的结果:

select * from regions;

返回主题

执行闪回删除

在本节中,您将使用闪回删除特性恢复被删除的表。为了完成本练习,您将创建一个新的表、删除该表,然后用闪回删除来恢复它。

按照以下步骤创建一个新表,然后删除它:

1.

访问 Tables 属性页面。在 Schema Name 域中输入 HR,并在 Object Name 域中输入 REGIONS 或 REGIONS 的一部分,然后单击 Go

2.

从 Actions 列表中选择 Create Like。单击 Go

3.

显示 Create Table 页面。在 Name 域中输入 REG_HIST。取消对 REGION_IDNot Null 的选中。单击 Constraints

4.

显示 Constraints 页面。选中每一个约束条件,然后单击 delete 来删除表上的约束条件。本次练习不需要这些约束。单击 OK

5.

收到一条消息,指示表已创建。

6.

在 Object Name 域中输入 REG_HIST,然后单击 Go

7.

此时将显示 Tables 页面,并在 Results 部分中显示 REG_HIST 表。单击 Delete with Options 删除 REG_HIST 表。

8.

选择 Delete the table definition, all its data, and dependent objects (DROP)。单击 Yes 确认删除表。

9.

显示一条消息,指示已删除表。单击 Go 尝试检索该表。

10.

在 Results 部分中显示 No object found

要恢复您刚刚删除的表,您将需要执行一次闪回删除。执行以下步骤:

1.

在 Tables 页面中,单击 Recycle Bin

2.

在 Schema Name 域中输入 HR,然后单击 Go

3.

选择 REG_HIST 并单击 Flashback Drop

4.

显示 Perform Object Level Recovery:Rename 页面。单击 Next

5.

显示 Perform Recovery:Review 页面。仔细查看信息,然后单击 Submit

6.

显示一条确认消息。单击 OK

7.

回收站中不再有该表。单击 Tables 路径式导航栏。

8.

REG_HIST 表现在包括在表的列表中。

单击 Database Instance 链接返回 Schema 页面。

返回主题列表

管理备份

索引是与表关联的可选结构,可用于改进查询的性能。索引提供了对表数据的快速访问路径。可以在表的一个或多个列上创建索引。创建好索引后,Oracle 数据库服务器将自动维护和使用它。对表的数据或结构所作的更改会自动合并到所有相关的索引中,这对于用户是完全透明的。

在本节中,您将执行以下任务:

A 使用 Manage Current Backups 页面
B. 交叉查对备份
C. 删除过期备份
D. 删除废弃备份
E. 编制备份的目录

使用 Manage Current Backups 页面

您可以使用 Manage Current Backups 页面查看在 RMAN 信息库中记录的备份。从这个页面中,您可以执行在整个这一节中介绍的备份维护操作。

1.

访问 Availability 属性页面。在 Backup/Recovery - Manage 部分中单击 Manage Current Backups

2.

显示 Manage Current Backups 页面。Backup Sets 属性页面显示了 RMAN 信息库中记录的备份集(请注意,您的系统可能会显示不同的信息)。单击 Tag 列中的链接来查看关于一个备份集的内容的详细信息(在 Contents 列中选择显示为 DATAFILES 的一项)。

3.

显示 Contents 属性页面。单击 Manage Current Backups,返回 Manage Current Backups 属性页面。

4.

单击 Image Copies,查看 Image Copies 页面。

5.

如果有任何 Image Copies 可用,则将显示在 Manage Current Backups 页面中。请注意,对本例来说,备份已经恢复,因此也已经被删除。

单击 Database Instance 链接返回 Availability 页面。

返回主题

交叉查对备份

当您交叉查对一个备份时,RMAN 验证信息库中的记录信息与实际备份状态是否一致。如果不一致,将更新信息库来反映正确的状态。您可以按以下方式来交叉查对所有的备份文件:

1.

单击 Availability 属性页面的 Backup/Recovery 区域中的 Manage Current Backups

2.

显示 Manage Current Backups 页面。向下滚动到 Host Credentials 部分,如有必要,输入用户名和口令。单击页面顶部的 Crosscheck All 来交叉查对 RMAN 信息库中的所有文件。(注意:您的系统可能会为备份集显示不同的信息)。

3.

显示 Crosscheck All:Specify Job Parameters 页面。您可以接受 Job Name、Job Description、Start time 和 Repeat 规范的默认值,或输入自己的值。单击 Submit Job,提交交叉查对作业。

4.

在 Manage Current Backups 页面中显示了一条 Job Submission Succeeded 消息。您可以单击 View Job 来查看作业的状态。请注意,此过程可能需要几分钟的时间才能完成。

5.

Summary 区域中,您可以查看作业的状态。

单击 Database 选项卡返回 Home 页面。

返回主题

删除过期备份

您可以通过执行以下步骤来删除 RMAN 信息库中标记为 EXPIRED 的所有备份:

1.

单击 Availability 属性页面的 Backup/Recovery - Manage 区域中的 Manage Current Backups

2.

显示 Manage Current Backups 页面。向下滚动到 Host Credentials 部分,如有必要,输入用户名和口令。单击页面顶部的 Delete All Expired,从 RMAN 信息库中删除标记为 EXPIRED 的那些备份。

3.

显示 Delete All Expired:Specify Job Parameters 页面。您可以接受 Job Name、Job Description、Start time 和 Repeat 规范的默认值,或输入自己的值。如果您没有执行交叉查对操作,选择 Perform the operation 'Crosscheck All' before 'Delete All Expired'.。单击 Submit Job

4.

在 Manage Current Backups 页面中显示了一条 Job Submission Succeeded 消息。您可以单击 View Job 来查看作业的状态。

5.

Summary 区域中,您可以查看作业的状态。

单击 Database 选项卡返回 Home 页面。

返回主题

删除废弃备份

您可以通过执行以下步骤来删除所有废弃的备份:

1.

单击 Availability 属性页面的 Backup/Recovery - Manage 区域中的 Manage Current Backups

2.

显示 Manage Current Backups 页面。向下滚动到 Host Credentials 部分,如有必要,输入用户名和口令。单击页面顶部的 Delete All Obsolete,从 RMAN 信息库中删除所有废弃的备份。注:您可以从 Backup Sets 或 Image Copies 页面中执行这一操作。

3.

显示 Delete All Obsolete:Specify Job Parameters 页面。您可以接受 Job Name、Job Description、Start time 和 Repeat 规范的默认值,或输入自己的值。单击 Submit Job

4.

在 Manage Current Backups 页面中显示了一条 Job Submission Succeeded 消息。您可以单击 View Job 来查看作业的状态。

5.

Summary 区域中,您可以查看作业的状态。

单击 Database 选项卡返回 Home 页面。

6.

您可以返回 Image Copies 和/或 Backup Sets 属性页面来验证废弃的备份是否已删除。

返回主题

编制备份的目录

您可以为利用操作系统命令获取的备份编制目录,以便 RMAN 可以在恢复操作中使用它们。在本例中,您将使用操作系统命令来备份属于 EXAMPLE 表空间的数据文件。然后您将使用 Enterprise Manager 为 RMAN 信息库中的备份文件编制目录。

1.

调用 SQL*Plus,并作为一个拥有 SYSDBA 权限的用户登录。通过执行以下命令使 EXAMPLE 表空间处于联机备份模式:

ALTER TABLESPACE example BEGIN BACKUP;

2.

返回操作系统提示符,创建属于 EXAMPLE 表空间的数据文件的一个副本。在本例中,在一个名为 backup 的目录中创建副本。您可以使用您自己选择的一个目录。

3.

执行以下命令,使 EXAMPLE 表空间退出联机备份模式:

ALTER TABLESPACE example END BACKUP;

4.

现在您已经做好准备,可以利用 Enterprise Manager Database Control 为 RMAN 信息库中的备份编制目录。单击 Availability 属性页面的 Backup/Recovery - Manage 区域中的 Manage Current Backups

5.

向下滚动到 Host Credentials 部分,如有必要,输入用户名和口令。单击 Manage Current Backups 页面顶部的 Catalog Additional Files

6.

选择 Catalog files in the specified disk location into the Recovery Manager repository,然后输入位置和备份文件的名称(无需文件扩展名)。单击 OK

7.

显示一条确认消息,指示已完成文件的目录编制。单击 Image Copies 访问 Image Copies 页面,查看您已经编制好目录的文件。

8.

最近编制目录的文件列于 Results 部分中。单击 Database 返回 Database Home 页面。

返回主题

关闭存档

要修改数据库,使之在 NOARCHIVELOG 模式下运行,请执行以下步骤:

1.

单击 Oracle Database Home 页面中的 Availability

2.

在 Backup/Recovery - Setup 部分中选择 Recovery Settings

3.

取消选中 Media Recovery 下的 ARCHIVELOG Mode。单击 Apply

4.

显示一条确认更改的消息。要完成 NOARCHIVELOG 模式的配置,必须关闭数据库实例。单击 Yes,关闭实例并重新启动。

5.

显示 Restart Database:Specify Host and Target Database Credentials 页面。输入主机凭证和数据库凭证。单击 OK

6.

显示 Restart Database:Confirmation 页面。单击 Yes,关闭实例并重新启动。

7.

显示 Restart Database:Activity Information 页面。单击 Refresh 登录 Enterprise Manager Database Control,并在数据库重新启动后再次登录 Enterprise Manager。

返回主题列表

在本教程中,您学习了如何:

配置闪存区。
配置备份策略。
确认 DBID 和 DB_UNIQUE_NAME 值。
执行完整的数据库备份。
还原和恢复数据库。
执行闪回表。
管理您的备份,包括删除废弃的备份或者使用目录编制特性。

返回主题列表

将光标置于该图标上可以隐藏所有的屏幕截图。