本章向您介绍通过 Enterprise Manager 执行的 Oracle 数据库备份和恢复操作。
本章讨论如下主题:
![]() |
配置闪回恢复区和 ARCHIVELOG 模式 | |
![]() |
配置备份设置和策略 | |
![]() |
确定 DBID 和 DB_UNIQUE_NAME 的值 | |
![]() |
执行完整的数据库备份 | |
![]() |
利用 Oracle 建议的备份策略对数据库进行备份 | |
![]() |
还原和恢复整个数据库 | |
![]() |
执行闪回表 | |
![]() |
执行闪回删除 | |
![]() |
管理备份 |
将鼠标移到该图标上可以显示所有屏幕截图。还可以将鼠标移到特定的图标上来查看相关的屏幕截图。
闪回恢复区是为 Oracle 数据库中所有与恢复相关的文件和活动提供的一个统一的存储位置。将数据库从介质故障中完全恢复过来所需的全部文件都位于闪回恢复区中。可以在闪回恢复区中创建的与恢复相关的文件包括:存档重做日志文件、控制文件、由 Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。Oracle 推荐在数据库文件所在磁盘上创建更改跟踪文件。实际上,如果您安装了 OMF,并执行了启用更改跟踪的命令,那么将自动在为数据库文件指定的目录中创建跟踪文件。
通过分配一个存储位置并将相关的恢复文件统一在一个特定的区域内,Oracle 数据库服务器使数据库管理员不必再管理由这些组件创建的磁盘文件。
创建闪回恢复区时,您可以选择一个目录、文件系统或自动存储管理磁盘组来存放文件,并为闪回恢复区中用于存储所有文件的最大空间设置一个磁盘限额。您必须选择一个足够大的区域,以容纳所需的磁盘限额。当接近磁盘空间界限时,Oracle 服务器可以根据 RMAN 保留策略的界限来删除非必要的文件,为新文件腾出空间。
闪回恢复区应该在一个与工作区分离的磁盘上,其中存储在增量备份中使用的活动数据库文件(如数据文件、控制文件、联机重做日志和更改跟踪文件)。将闪回恢复区和工作区置于相同的磁盘上,当出现磁盘故障时,很容易使您同时丢失活动的数据库文件以及备份。
当您创建数据库时,可以配置闪回恢复区和 ARCHIVELOG 模式。如果您在创建数据库时没有执行这些任务,那么请按照以下步骤来配置闪回恢复区和 ARCHIVELOG 模式:
1. |
在操作系统提示符下为闪回恢复区创建一个目录。执行以下命令: cd $ORACLE_BASE mkdir flash_rec_area |
2. |
打开浏览器,并指定用户名为 SYS,口令为 SYSDBA,以登录 Enterprise Manager Database Console。单击 Login。 |
3. |
单击 Oracle Database Home 页面中的 Maintenance。 |
4. |
在 Backup/Recovery Settings 部分中选择 Recovery Settings。您可以使用 Recovery Settings 页面来配置恢复实用程序的设置,包括闪回恢复区。 |
5. |
显示 Recovery Settings 页面。滚动至 Flash Recovery 部分。如果您的数据库未启用闪回恢复区,请在恰当的域中输入以下值来配置闪回恢复区: Flash Recovery Area Location:<在第 1 步中创建的目录> |
6. |
向上滚动至窗口顶部。选择 ARCHIVELOG Mode,为数据库配置 ARCHIVELOG 模式。单击 Apply。 |
7. |
显示一条确认更改的消息。要完成 ARCHIVELOG 模式的配置,必须关闭数据库实例。单击 Yes,关闭实例并重新启动。 |
8. |
显示 Restart Database:Specify Host and Target Database Credentials 页面。输入主机凭证和数据库凭证。单击 OK。 |
9. |
显示 Restart Database:Confirmation 页面。单击 Yes,关闭实例并重新启动。 |
10. |
显示 Restart Database:Activity Information 页面。单击 Refresh,登录 Enterprise Manager Database Control。 |
您可以配置许多设置和策略来确定如何存储备份、备份哪些数据、如何执行备份,以及备份在从恢复区中清除之前保留多久。您还可以配置特性来提高备份性能。
1. |
单击 Oracle Database Home 页面中的 Maintenance。 |
2. |
在 Backup/Recovery Settings 部分中选择 Backup Settings。 |
3. |
滚动至 Backup Settings 页面的 Host Credentials 区域。输入操作系统用户名和口令。向上滚动至 Disk Settings 部分。 |
4. |
接受 Device 页面上 Disk Settings 部分中 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 天)。单击 OK。返回 Maintenance 页面。 |
如果您丢失了数据库控制文件或 SPFILE,Enterprise Manager 可以从备份中还原它们 — 只要您能够为数据库提供 DB_UNIQUE_NAME 和 DBID。
执行以下步骤,确定 DB_UNIQUE_NAME 的值:
1. |
单击 Administration 页面上 Database Configuration 区域中的 All Initialization Parameters。 |
2. |
显示 Current 属性页面。在 Name 域中输入 db_unique_name,然后单击 Go。 |
3. |
出现的页面显示了一行,该行的 Name 列为 db_unique_name,Value 列中给出了数据库的 db_unique_name 的值。 记录这个值,以便将来需要它进行恢复操作时,可以获得它。单击 Database Instance 链接返回 Administration 页面。 |
执行以下步骤来确定 DBID:
1. |
单击 Administration 页面的 Storage 区域中的 Control Files。 |
2. |
显示 Controlfiles 属性页面。选择 Advanced 属性页面。 |
3. |
Database ID 域包含 DBID 值。 记录这个值,以便将来需要它进行恢复操作时,可以获得它。单击 Database Instance 链接返回 Administration 页面。 |
您可以通过执行一次完整的数据库备份来备份数据库的全部内容。将创建所有数据文件的完整备份。结果可能作为映像副本或作为备份集存储,但无论哪种情况下,数据库的所有数据文件以及控制文件、存档重做日志和服务器参数文件的全部内容都将在备份中反映出来。利用这个文件集,可以完整地恢复数据库。
1. |
单击 Maintenance 选项卡。在 Backup/Recovery 区域中选择 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 页面。适当地选择 Disk 或 Tape。单击 Next。 |
5. |
显示 Schedule Backup:Schedule 页面。接受默认的 Job Name。选择 Immediately 立即执行作业,或输入在稍后执行的时间。单击 Next。 |
6. |
显示 Schedule Backup:Review 页面。单击 Submit Job。 |
7. |
显示备份提交成功的消息。您可以单击 View Job 来访问作业状态页面,或者单击 OK 来完成操作并返回 Maintenance 页面。 |
Oracle 建议的备份策略的基础是创建数据库的一个映像副本,然后利用 RMAN 增量备份继续生成备份。Oracle Enterprise Manager 调度 RMAN 备份作业。按照以下步骤来设置备份计划:
1. |
在 Backup/Recovery 区域中选择 Schedule Backup。 |
2. |
显示 Schedule Backup 页面。单击 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 来完成操作并返回 Maintenance 页面。 |
在本节中,您将使用 Enterprise Manager 恢复数据库。
1. |
在 Maintenance 页面的 Backup/Recovery 区域中选择 Perform Recovery。 |
2. |
显示 Perform Recovery 页面。选择 Recover to the current time or a previous point-in-time。在 Host Credentials 部分中输入操作系统用户名和口令。单击 Perform Whole Database Recovery。 |
3. |
显示 Confirmation 页面,指示实例将关闭并重启。单击 Yes 继续。 |
4. |
显示 Recovery Wizard 页面,指示实例将关闭并重启。单击 Refresh,继续使用 Recovery Wizard。 |
5. |
返回 Maintenance 页面。单击 Perform Recovery。输入主机凭证。再次单击 Perform Whole Database Recovery 调用 Recovery 向导。 |
6. |
显示 Perform Whole Database Recovery:Point-in-time 页面。选择 Recover to the current time。单击 Next。 |
7. |
显示 Perform Whole Database Recovery:Rename 页面。选择 No. Restore the files to the default location(如果您希望这样),或者选择 Yes.Restore the files to a new, common location 并输入位置。单击 Next。 |
8. |
显示 Perform Whole Database Recovery:Review 页面。仔细查看信息,然后单击 Submit。 |
9. |
显示 Processing:Perform Whole Database Recovery 页面。 |
10. |
您会收到“Operation succeeded”消息。单击 Open Database 打开数据库。 |
11. |
您将收到一条确认,表示数据库已经打开。单击 OK。 |
12. |
输入登录信息。单击 Login。返回 Maintenance 页面。 |
完成以下任务来执行闪回表操作:
![]() |
启用行移动 | |
![]() |
模拟用户错误 | |
![]() |
执行闪回表 |
为了在表上执行闪回表操作,您必须在表上启用行移动。在本节中,您将在 HR.EMPLOYEES 表上启用行移动。
1. |
单击 Administration 选项卡。 |
2. |
显示 Administration 属性页面。向下滚动至 Schema 部分。在 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/hr 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_ID 列 Not Null 的选中。单击 Constraints。 |
4. |
显示 Constraints 页面。选中每一个约束条件,然后单击 delete 来删除表上的约束条件。本次练习不需要这些约束。 |
5. |
单击 OK 创建 REG_HIST 表。 |
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 表现在包括在表的列表中。 |
管理备份包括两个任务:管理存在于磁盘或磁带上的备份自身,和管理保存在 RMAN 信息库中的备份记录。在本节中,您将执行备份维护和更新 RMAN 信息库。在本节中,您将执行以下任务:
![]() |
使用 Manage Current Backups 页面 | |
![]() |
交叉查对备份 | |
![]() |
删除过期备份 | |
![]() |
删除废弃备份 | |
![]() |
标记备份为 UNAVAILABLE | |
![]() |
编制备份的目录 |
您可以使用 Manage Current Backups 页面查看在 RMAN 信息库中记录的备份。从这个页面中,您可以执行在整个这一节中介绍的备份维护操作。
1. |
访问 Maintenance 属性页面。在 Backup/Recovery 部分中单击 Manage Current Backups。 |
2. |
显示 Manage Current Backups 页面。Backup Sets 属性页面显示 RMAN 信息库中记录的备份集。单击 Tag 列中的链接来查看关于一个备份集内容的详细信息。 |
3. |
显示 Contents 属性页面。单击 Manage Current Backups,返回 Manage Current Backups 属性页面。 |
4. |
单击 Image Copies,查看 Image Copies 页面。 |
5. |
显示 Image Copies 页面,该页面显示 RMAN 信息库中记录的映像副本。 单击 Database Instance 链接返回 Maintenance 页面。 |
当您交叉查对一个备份时,RMAN 验证信息库中的记录信息与实际备份状态是否一致。如果不一致,将更新信息库来反映正确的状态。您可以按以下方式来交叉查对所有的备份文件:
1. |
单击 Maintenance 属性页面的 Backup/Recovery 区域中的 Manage Current Backups。 |
2. |
显示 Manage Current Backups 页面。单击页面顶部的 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. |
访问 Maintenance 属性页面。在 Backup/Recovery 区域中单击 Manage Current Backups。 |
2. |
显示 Manage Current Backups 页面。单击页面顶部的 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. |
访问 Maintenance 属性页面。在 Backup/Recovery 区域中单击 Manage Current Backups。 |
2. |
显示 Manage Current Backups 页面。单击页面顶部的 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 区域中,您可以查看作业的状态。 |
6. |
您可以返回 Image Copies 和/或 Backup Sets 属性页面来验证废弃的备份是否已删除。 |
您可以通过执行以下步骤来把信息库中的备份标记为 UNAVAILABLE:
1. |
访问 Maintenance 属性页面。在 Backup/Recovery 区域中单击 Manage Current Backups。 |
2. |
显示 Manage Current Backups 页面。选择您希望标记为 UNAVAILABLE 的备份,然后单击 Change to Unavailable。 |
3. |
显示 Confirmation 页面。单击 Yes,继续操作。 |
4. |
显示 Request in process 页面。 |
您可以为利用操作系统命令获取的备份编制目录,以便 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 信息库中的备份编制目录。单击 Maintenance 属性页面的 Backup/Recovery 区域中的 Manage Current Backups。 |
5. |
选择 Manage Current Backups 页面顶部的 Catalog Additional Files。 |
6. |
选择 Catalog files in the specified disk location into the Recovery Manager repository,然后输入位置和备份文件的名称(无需文件扩展名)。单击 OK。 |
7. |
显示 Request in process 页面。 |
8. |
显示一条确认消息,指示已完成文件的目录编制。单击 Image Copies 访问 Image Copies 页面,查看您已经编制好目录的文件。 |
9. |
最近编制目录的文件列于 Results 部分中。单击 Database 返回 Database Home 页面。 |