Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1279660
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-13 13:18:47

到现在为止,许多开发人员已经认识到 RMAN 的潜力以及它作为数据库备份工具的实用性。 您可能还记得 RMAN 可以将数据直接备份到磁盘和磁带。 当涉及磁带解决方案时,RMAN 使用名为介质管理库 (MML) 的 API 来操纵磁带子系统。

  此 MML 特定于所涉及的磁带管理系统和硬件。 (例如,如果涉及 Tivoli Storage Manager,则必须使用特定的 MML — Tivoli Data Protector,RMAN 需要它来通过 Tivoli 管理磁带。) 尽管 RMAN 是数据库引擎的一个特性,但 MML 不是引擎的一部分,而是由别人提供的;实际上,其价格可能相当高。 此外,如果您的主要目的是备份 Oracle 数据库,则在 MML 方面进行额外的投资就显得不适当了。

  在 Oracle 数据库 10g 第 2 版中,一个名为 Oracle Secure Backup (OSB) 的新工具代替了特定于第三方磁带管理系统的 MML,从而使此要求变得更容易接受。 OSB 可以直接备份到磁带库,因此您不需要任何其他介质管理层。 而其最大的优点是,OSB 与数据库引擎紧密集成,因此可以通过 Oracle EntERPrise Manager 对它进行控制和管理。
  但其他非数据库备份(如备份 Oracle Home、初始化文件、集群注册表文件(就 RAC 而言)以及其他重要文件)又如何呢? 您可能会问,这些备份不需要备份工具吗?

  回答是“不需要”。就像任何独立工具一样,OSB 也可以执行文件系统备份。 显而易见,无需使用 MML 来进行 RMAN 备份再加上备份文件系统这一功能提供了一个低成本和简化的备份和恢复方法。

  下面介绍如何在 Oracle Enterprise Manager 中使用 MML 组件。 首先,在 Oracle Enterprise Manager GUI 中选择 Maintenance 选项卡:

从以上菜单中,选择标题为“Configure Backup Settings”的超链接,随即将显示一个如下所示的屏幕:



注意此屏幕上的“Tape Settings”部分,您将在该部分中配置 Oracle Backup 工具。


        Oracle Backup Administrative 软件可以在一台独立的主机上运行,在此主机中,该软件通过数据服务器上运
行的代理进行管理。 在本示例中,Administrative 主机安装在主机 proliback.proligence.com 上并在其上运行,
且 Oracle Backup 工具已经安装到 /bin/obt 目录中。
  当然,许多 DBA 仍喜欢使用命令行和编写脚本。 OSB 提供了一个名为 obtool 的命令行工具。 可以通过键
入以下命令调用该命令行版本:
obtool
该命令调出 OSB 提示符 ob>。 可以在此处键入“help”来查看可用的命令。

ob > help

或者,可以在命令名之后使用关键字“glossary”以获得有关此命令的更多详细信息:

ob> help restore glossary


  要备份 Oracle Home,应使用:

ob> backup --level incr --at 2005/03/29.09:00 --priority 1 --family Pool1 --privileged --dataset OracleHome --expirerequest 7days

        我们需要对以上命令进行一些说明。 第一个参数 (level) 指示备份级别。 在此您指定了增量备份来备份自上次增量备份以来更改的所有文件。 第二个参数 2005/03/29.09:00 指定备份运行的时间, 即 2005 年 3 月 29 日上午 9 点。
  如果有多个备份作业,那么它们按照什么顺序执行? 此顺序由优先级选项(此处设置为 1,表示“最高优先级”)指定。 可以指定一个小于等于 100 的值来指定较低的优先级。
  您还为不同类型的备份指定了几个介质池。 例如,您可以有一个用于数据文件备份的介质池,一个用于归档日志的介质池,和一个用于其他非数据库备份的介质池。 此处,您将名为 Pool1 的池指定为用于此备份的池。
  您已经通过参数数据集指定了要备份的文件。 当您期望另一个增量备份发生时,您已经通过参数 expirerequest 请求在 7 天后使此备份过期。
  我在这里的目的是提供一个非常简要的介绍;完整介绍将需要一本书的篇幅。 有关 OSB 的更多信息,请参考可用的文档集。

与许多其他 DBA 一样,自从 Oracle8 中引入 RMAN 后不久,我便对它情有独钟。 但我从不认为对它的活动有一个彻底的了解。
  在 Oracle 数据库 10g 第 2 版中,为 RMAN 作业提供的动态视图简化了对这些作业(无论是当前作业还是既往作业)的理解。
  第一个新视图 V$RMAN_BACKUP_JOB_DETAILS 记录所有备份的历史。 除显示像备份历时这样的简单详细信息外,此视图还显示了许多对事后分析很重要的其他详细信息。 下面,我们将介绍一些重要的详细信息,以及它们如何帮助您分析 RMAN 会话。
  假设您要对有关该历史记录的所有内容有一个或多或少的了解: 已经发出的 RMAN 作业数、每个作业的状态、这些作业的开始和完成时间、这些作业的类型等。 您将按如下所示发出一个查询:

SQL> col STATUS format a9 SQL> col hrs format 999.99 SQL> select 2 SESSION_KEY, INPUT_TYPE, STATUS, 3 to_char(START_TIME,'mm/dd/yy hh24:mi') start_time, 4 to_char(END_TIME,'mm/dd/yy hh24:mi') end_time, 5 elapsed_seconds/3600 hrs 6 from V$RMAN_BACKUP_JOB_DETAILS 7* order by session_key

 输出可能类似如下所示:

SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME HRS ----------- ------------- -------- -------------- ------------- ------- 1 DATAFILE FULL COMPLETED 03/25/05 00:48 03/25/05 00:48 .00 4 DB FULL COMPLETED 03/27/05 02:09 03/27/05 02:11 .04 7 DB FULL FAILED 03/27/05 02:18 03/27/05 02:24 .10

        SESSION KEY 列是显示其他相关信息的其他视图的关键之处。 (稍后将介绍有关该列的更多信息。) 列 START_TIME
和 END_TIME 非常直观。 列 ELAPSED_SECONDS 显示已用时间(以秒为单位),为便于阅读,我已将该时间转换为小时格式。 STATUS 列显示 RMAN 作业的状态。 在该作业执行过程中,此状态列显示 RUNNING。
  记录的另一个重要信息是生成备份的速率以及进程读取和数据写入的速度。 该信息可以帮助您诊断 RMAN 作业中的拖沓现象。

SQL> col ins format a10 SQL> col outs format a10 SQL> select SESSION_KEY, 2 OPTIMIZED, 3 COMPRESSION_RATIO, 4 INPUT_BYTES_PER_SEC_DISPLAY ins, 5 OUTPUT_BYTES_PER_SEC_DISPLAY outs, 6 TIME_TAKEN_DISPLAY 7 from V$RMAN_BACKUP_JOB_DETAILS 8 order by session_key; SESSION_KEY OPT COMPRESSION_RATIO INS OUTS TIME_TAKEN ----------- --- ----------------- ---------- ---------- ---------- 1 NO 2.23776224 3.33M 1.49M 00:00:06 4 NO 1.31065794 6.92M 5.28M 00:02:16 7 NO 1.32363058 3.68M 2.78M 00:06:00

        注意如何以可读格式(小时:分钟:秒)显示时间。列 INS 和 OUTS 以更易于阅读的格式(如用 M 表示兆字节)显示每秒的数据输入或输出。 在以上示例中,您可以看到由会话键 4 标记的作业有着 6.92MB/s 和 5.2MB/s 的读取速率。您现在可以查看多个 RMAN 执行的输出,并从中搜索某个模式。 该模式分析将帮助您识别通过波动昭示的任何潜在瓶颈。
  还可以按备份类型过滤备份信息。 新视图 V$RMAN_BACKUP_JOB_DETAILS 提供了 RMAN 执行的备份类型以及输出的组织方式。

SQL> select * from V$RMAN_BACKUP_TYPE;

    WEIGHT INPUT_TYPE
---------- ------------- 
         1 BACKUPSET
         2 SPFILE
         3 CONTROLFILE
         4 ARCHIVELOG
         5 DATAFILE INCR
         6 DATAFILE FULL
         7 DB INCR
         8 RECVR AREA
         9 DB FULL

        对象类型 weight 决定视图中记录的排列顺序。   另一个非常有用的视图是 RMAN 输出。 假设您已经通过 shell 脚本运行了 RMAN 作业,但某个地方出现了故障。 这样,您就有了一个记录 RMAN 输出的输出文件,但不幸的是,您已经把它给丢了。您该怎么办呢? 幸运的是,新视图 V$RMAN_OUTPUT 记录 RMAN 作业中的输出,以便稍后查看。 该视图对用脚本编制的 RMAN 作业以及即席作业很有用。

SQL> select output 2 from v$rman_output 3 where session_key = 4 4 order by recid; OUTPUT ---------------------------------------------------------------------- connected to target database: TEST (DBID=1849323268) Starting backup at 27-MAR-05 using target database controlfile instead of recovery catalog allocated channel:ORA_DISK_1 channel ORA_DISK_1: sid=201 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/TEST/system01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/TEST/sysaux01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/TEST/undotbs01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/TEST/users01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/TEST/accdata01.dbf channel ORA_DISK_1: starting piece 1 at 27-MAR-05 channel ORA_DISK_1: finished piece 1 at 27-MAR-05 piece handle=/u01/app/oracle/product/10.2.0/db_1/dbs/07ggc7qr_1_1 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:46 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current controlfile in backupset channel ORA_DISK_1: starting piece 1 at 27-MAR-05 channel ORA_DISK_1: finished piece 1 at 27-MAR-05 piece handle=/u01/app/oracle/product/10.2.0/db_1/dbs/08ggc7u6_1_1 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 Finished backup at 27-MAR-05

        您可以看到,此处捕获了 RMAN 作业的整个输出。 这是一个保存在内存中的视图,在实例关闭时会从内存中清除。 如果希望保存 RMAN 输出,可以将这些行复制到一个永久表。 列 SESSION_KEY 显示与视图V$RMAN_BACKUP_JOB_DETAILS 中显示的 RMAN 作业关联的记录。 现在,您将不会再丢失 RMAN 作业中的输出了。
 通过 Oracle EntERPrise Manager,您可以利用新视图创建新备份报表。 此报表提供了已经在您的企业中执行的备份操作的瞬时概要。 可以按备份类型和状态过滤数据。


 

阅读(384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~