科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle 10g R2新特性之备份和可用性特性

Oracle 10g R2新特性之备份和可用性特性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  Oracle 的自身备份   到现在为止,许多开发人员已经认识到 RMAN 的潜力以及它作为数据库备份工具的实用性。 您可能还记得 RMAN 可以将数据直接备份到磁盘和磁带。 当涉及磁带解决方案时。

作者:中国IT实验室 来源:中国IT实验室 2007年10月1日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

  我在这里的目的是提供一个非常简要的介绍;完整介绍将需要一本书的篇幅。 有关 OSB 的更多信息,请参考可用的文档集。
  既往作业和当前作业的动态 RMAN 视图

  与许多其他 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,您可以利用新视图创建新备份报表。 此报表提供了已经在您的企业中执行的备份操作的瞬时概要。 可以按备份类型和状态过滤数据。

  为 Oracle RAC 集群动态分配通道

  当然,在 Oracle RAC 环境中,有多个数据库运行在多个主机上。 但在这样的环境中调用 RMAN 时,不得不只连接到一个实例(使用 TARGET=/)上,从而导致一个节点执行所有工作而其他节点却相对空闲。

  在 Oracle 数据库 10g 第 2 版之前,让两个节点执行该工作的一个方法就是创建多个连接到多个实例的通道。 以下显示了一个相关 RMAN 命令的示例:

allocate channel = c1 type sbt_tape connect = 'rman/rmanpass@inst1'; 
allocate channel = c2 type sbt_tape connect = 'rman/rmanpass@inst2'; 


  该命令假设您有两个实例,即 inst1 和 inst2。 但该选项并不完全满足要求,这是因为它无法揭示某个节点出现了故障;当某个节点出现故障时,整个 RMAN 作业将发生故障。 此外,它并不创建真正的负载平衡配置。

  在 Oracle 数据库 10g 第 2 版中,不必再为每个 RAC 节点显式分配一个通道来执行备份;您只需为操作定义并行度即可。 RMAN 自动创建多个并行流,并根据集群资源管理器连接到负载最小的实例。 除了负载平衡以外,它还提供了通道故障切换功能,以便将一个实例的连接故障切换到幸存节点。 此新特性增强了 RMAN 进程的强健度。

  通过 RMAN 恢复临时文件

  当您从 RMAN 备份恢复数据库时,所需执行的第一个操作就是重新创建临时表空间文件。 由于临时表空间不包含要恢复的永久对象,因此 RMAN 不备份它们 - 没有必要为非永久对象浪费备份资源。 但 Oracle 数据库需要临时表空间才能使许多操作高效运行。 因此,如果 RMAN 也备份它们岂不是很好?

  在 Oracle 数据库 10g 第 2 版中,它做到了。 当您恢复数据库时,还将自动重新创建临时表空间文件。 以下是警报日志文件的片段:

ORA-01157: cannot identify/lock data file 201 - see DBWR trace file 
ORA-01110: data file 201: '/u01/app/oracle/oradata/TEST/temp01.dbf' 
ORA-27037: unable to obtain file status 
Linux Error:2: No such file or directory 
Additional information: 3 
Sun Mar 27 20:29:00 2005 
Errors in file /u01/app/oracle/admin/TEST/bdump/test_dbw0_15457.trc: 
ORA-01186: file 201 failed verification tests 
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file 
ORA-01110: data file 201: '/u01/app/oracle/oradata/TEST/temp01.dbf' 
Sun Mar 27 20:29:00 2005 
File 201 not verified due to error ORA-01157 
Sun Mar 27 20:29:00 2005 
Dictionary check complete 
Sun Mar 27 20:29:00 2005 
SMON: enabling tx recovery 
Sun Mar 27 20:29:00 2005 
Re-creating tempfile /u01/app/oracle/oradata/TEST/temp01.dbf 


 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章