与许多其他 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 执行的备份类型以及输出的组织方式。
对象类型 weight 决定视图中记录的排列顺序。 另一个非常有用的视图是 RMAN 输出。 假设您已经通过 shell 脚本运行了 RMAN 作业,但某个地方出现了故障。 这样,您就有了一个记录 RMAN 输出的输出文件,但不幸的是,您已经把它给丢了。您该怎么办呢? 幸运的是,新视图 V$RMAN_OUTPUT 记录 RMAN 作业中的输出,以便稍后查看。 该视图对用脚本编制的 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
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,您可以利用新视图创建新备份报表。 此报表提供了已经在您的企业中执行的备份操作的瞬时概要。 可以按备份类型和状态过滤数据。
