看RMAN备份情况常用的命令有list和report,功能可以从字面的意思上理解出来^_^,另外可以从几个动态视图中看有关备份信息。
list 命令
--查看比较详细的信息
RMAN> list backup;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
268 Full 17.20M DISK 00:00:01 2015-12-15 20:45:24
BP 关键字: 277 状态: AVAILABLE 已压缩: NO 标记: TAG20151215T204523
段名:C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\AUTOBACKUP\2015_12_15\O1_MF_S_898548323_C702V43N_.BKP
包含的 SPFILE: 修改时间: 2015-12-15 20:37:14
SPFILE db_unique_name: CYANG
包括的控制文件: Ckp SCN: 3767379 Ckp 时间: 2015-12-15 20:45:23
--查看备份摘要信息
RMAN> list backup summary;
备份列表
===============
关键字 TY LV S 设备类型 完成时间 段数 副本数 压缩标记
------- -- -- - ----------- ------------------- ------- ------- ---------- ---
268 B F A DISK 2015-12-15 20:45:24 1 1 NO TAG20151215T204523
269 B F A DISK 2015-12-15 20:47:04 1 1 NO TAG20151215T204703
270 B 1 A DISK 2015-12-15 20:47:15 1 1 NO INCUPDATE
271 B 1 A DISK 2015-12-15 20:47:23 1 1 NO INCUPDATE
272 B F A DISK 2015-12-15 20:47:26 1 1 NO TAG20151215T204725
273 B 1 A DISK 2015-12-15 20:47:37 1 1 NO INCUPDATE
274 B 1 A DISK 2015-12-15 20:47:45 1 1 NO INCUPDATE
275 B F A DISK 2015-12-15 20:47:48 1 1 NO TAG20151215T204748
276 B F A DISK 2015-12-16 18:43:09 1 1 NO TAG20151216T184309
--查看镜像副本
RMAN> list copy;
--列出已经备份的所有文件和相关备份集团
RMAN> listbackup by file;
--显示磁盘上的归档重做日志
RMAN> list archivelog all;
db_unique_name 为 CYANG 的数据库的归档日志副本列表
=====================================================================
关键字 线程序列 S 时间下限
------- ---- ------- - -------------------
64 1 73 A 2015-12-15 19:42:05
名称: C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\ARCHIVELOG\2015_12_16\O1_MF_1_73_C72G9PJZ_.ARC
--显示磁盘上的归档重做日志
RMAN> list copy of archivelog all;
db_unique_name 为 CYANG 的数据库的归档日志副本列表
=====================================================================
关键字 线程序列 S 时间下限
------- ---- ------- - -------------------
64 1 73 A 2015-12-15 19:42:05
名称: C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\ARCHIVELOG\2015_12_16\O1_MF_1_73_C72G9PJZ_.ARC
--列出归档日志的备份,及哪些归档重做日志包含到备份片中
RMAN> list backup of archivelog all;
说明与资料档案库中的任何备份都不匹配
RMAN>
report 命令
--报告各种详细信息
RMAN> report schema;
db_unique_name 为 CYANG 的数据库的数据库方案报表
永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
---- -------- -------------------- ------- ------------------------
1 800 SYSTEM YES C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCLTN26_.DBF
2 250 PDB$SEED:SYSTEM NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCM0ZWL_.DBF
3 780 SYSAUX NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCLRWV7_.DBF
4 550 PDB$SEED:SYSAUX NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCM0ZW8_.DBF
5 645 UNDOTBS1 YES C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_UNDOTBS1_BYCLWPHZ_.DBF
6 5 USERS NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCLWOB1_.DBF
7 260 PYANG1:SYSTEM NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCMNHWC_.DBF
8 600 PYANG1:SYSAUX NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCMNHW0_.DBF
9 5 PYANG1:USERS NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCMNHWP_.DBF
10 1260 PYANG1:EXAMPLE NO C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF
11 500 RECCAT NO C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
临时文件列表
=======================
文件大小 (MB) 表空间 最大大小 (MB) 临时文件名称
---- -------- -------------------- ----------- --------------------
1 197 TEMP 32767 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_TEMP_BYCM0XJO_.TMP
2 100 PDB$SEED:TEMP 32767 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\PDBSEED_TEMP012015-09-02_12-03-07-AM.DBF
3 197 PYANG1:TEMP 32767 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\PYANG1_TEMP012015-09-02_12-13-42-AM.DBF
--过时备份
RMAN> report obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
已废弃的备份和副本报表
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
数据文件副本 48 2015-12-15 20:44:45 C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\DATAFILE\O1_MF_SYSTEM_C702SQFL_.DBF
数据文件副本 49 2015-12-15 20:44:52 C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\DATAFILE\O1_MF_SYSAUX_C702SYLG_.DBF
--查看需要备份的文件
RMAN> report need backup;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
11 0 C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
--根据不同的备份策略预测下需要备份的文件
RMAN> report need backup redundancy 2;
文件冗余备份少于2个
文件 #bkps 名称
---- ----- -----------------------------------------------------
10 1 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF
11 0 C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
RMAN> report need backup redundancy 1;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
11 0 C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
RMAN> report need backup redundancy 1 datafile 4;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
RMAN> report need backup redundancy 1 datafile 6;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
RMAN> report need backup redundancy 1 datafile 19;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: report 命令 (在 12/16/2015 20:28:18 上) 失败
RMAN-20201: 在恢复目录中未找到数据文件
RMAN-06010: 在查看数据文件时出错: 19
--无法进行恢复得数据文件
RMAN> report unrecoverable;
由于操作无法被恢复, 文件的报表需要备份
备份请求名称的文件类型
---- ----------------------- -----------------------------------
RMAN> backup database ;
RMAN> report unrecoverable;
由于操作无法被恢复, 文件的报表需要备份
备份请求名称的文件类型
---- ----------------------- -----------------------------------
RMAN> report need backup redundancy 1 datafile 6;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
RMAN> report need backup redundancy 1 datafile 4;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
RMAN> report need backup redundancy 2;
文件冗余备份少于2个
文件 #bkps 名称
---- ----- -----------------------------------------------------
11 1 C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
RMAN> report need backup redundancy 1;
文件冗余备份少于1个
文件 #bkps 名称
---- ----- -----------------------------------------------------
RMAN>
SQL命令
与备份集、备份片、备份文件等有关的几个动态视图
掌握oracle里面的视图有利于让我们更熟悉ORACLE,下面是几个视图的简要说明:
View Name | Information Provided |
---|---|
V$RMAN_BACKUP_JOB_DETAILS | RMAN backup jobs,单个备份任务回话,含有绘画前景所有信息 |
V$BACKUP | Backup status of online data files placed in backup mode(for hot backups) |
V$BACKUP_ARCHIVELOG_SUMMARY | Archive logs backed up,汇总。 |
V$BACKUP_ARCHIVELOG_DETAILS | Archive logs backed up,详细。 |
V$BACKUP_CONTROLFILE_SUMMARY | Control files backed up,汇总 |
V$BACKUP_CONTROLFILE_DETAILS | Control files backed up,详细 |
V$BACKUP_COPY_SUMMARY | Control file and data file copies,汇总 |
V$BACKUP_COPY_DETAILS | Control file and data file copies |
V$BACKUP_DATAFILE | Control files and data files backed up |
V$BACKUP_DATAFILE_DETAILS | Data files backed up in backup sets, image copies, and proxy copies |
V$BACKUP_FILES | Data files, control files, spfiles, and archive redo logs backed up |
V$BACKUP_SPFILE | Spfiles |
V$BACKUP_PIECE | Backup piece files |
V$BACKUP_PIECE_DETAILS | Backup piece details |
V$BACKUP_SET | Backup sets |
V$BACKUP_SET_DETAILS | Backup set details |
V$RMAN_CONFIGUATION | RMAN 的配置 |
--查看备份集和数据文件直接的关系
sys@CYANG> SET LINES 200 PAGESIZE 100
sys@CYANG> BREAK ON REPORT ON bs_key ON completion_time ON bp_name ON file_name
sys@CYANG> COL bs_key FORM 99999 HEAD "BS Key"
sys@CYANG> COL bp_name FORM a50 HEAD "BP Name"
sys@CYANG> COL file_name FORM a88 HEAD "Datafile"
sys@CYANG> SELECT
2 s.recid bs_key
3 ,TRUNC(s.completion_time) completion_time
4 ,p.handle bp_name
5 ,f.name file_name
6 FROM v$backup_set s
7 ,v$backup_piece p
8 ,v$backup_datafile d
9 ,v$datafile f
10 WHERE p.set_stamp = s.set_stamp
11 AND p.set_count = s.set_count
12 AND d.set_stamp = s.set_stamp
13 AND d.set_count = s.set_count
14 AND d.file# = f.file#
15 ORDER BY
16 s.recid
17 ,p.handle
18 ,f.name;
BS Key COMPLETION_TIME BP Name Datafile
------ ------------------- -------------------------------------------------- -------------------------------------------------------------------------------------
277 2015-12-16 00:00:00 C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\BACKUPSET\2 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCLRWV7_.DBF
015_12_16\O1_MF_NNNDF_TAG20151216T202849_C72P821L_
.BKP
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCLTN26_.DBF
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_UNDOTBS1_BYCLWPHZ_.DBF
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCLWOB1_.DBF
C:\APP\ORACLE\RECCATLODDIR\RECCAT01.DBF
278 2015-12-16 00:00:00 C:\APP\ORACLE\FAST_RECOVERY_AREA\CYANG\809378F0242 C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_EXAMPLE_BYCMNHVM_.DBF
54A0AAF1C7D06CC6D9706\BACKUPSET\2015_12_16\O1_MF_N
NNDF_TAG20151216T202849_C72P8KBW_.BKP
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSAUX_BYCMNHW0_.DBF
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_SYSTEM_BYCMNHWC_.DBF
C:\APP\ORACLE\ORADATA\CYANG\DATAFILE\O1_MF_USERS_BYCMNHWP_.DBF
已选择 9 行。
sys@CYANG>
查看备份的性能,表v$rman_backup_job_details
用v$rman_backup_job_details这个表来看,这个地方需要注意下,里面的起止结束时间是session时间,是你连上RMAN到退出RMAN的时间,不是做备份的时间,一般都是用来统计用脚本备份的时间,如果你手动连上RMAN后在里面折腾一阵子再备份,那么时间肯定比较长,就没什么价值了。
C:\app\oracle\product\12.1.0\dbhome_1\BIN>sqlplus "/ as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on 星期三 12月 16 22:39:02 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
sys@CYANG> COL hours FORM 9999.99
sys@CYANG> COL time_taken_display FORM a20
sys@CYANG> SET LINESIZE 132
sys@CYANG> --
sys@CYANG> SELECT
2 session_recid
3 ,compression_ratio
4 ,time_taken_display
5 ,(end_time - start_time) * 24 as hours
6 ,TO_CHAR(end_time,'dd-mon-yy hh24:mi') as end_time
7 FROM v$rman_backup_job_details
8 ORDER BY end_time;
SESSION_RECID COMPRESSION_RATIO TIME_TAKEN_DISPLAY HOURS END_TIME
------------- ----------------- -------------------- -------- --------------------
119 1.62642761 00:11:35 .19 07-12月-15 20:21
177 2.62281522 00:00:13 .00 14-12月-15 19:47
180 1.63233666 00:00:37 .01 14-12月-15 20:02
186 2.95125914 00:07:31 .13 14-12月-15 20:55
195 3.01111485 00:21:05 .35 15-12月-15 19:53
208 3.2232692 00:18:44 .31 15-12月-15 20:16
228 5.13025553 00:00:42 .01 15-12月-15 20:21
235 1.49291726 00:14:55 .25 15-12月-15 20:47
258 1.63223903 00:00:40 .01 16-12月-15 20:29
已选择 9 行。
sys@CYANG>
用shell脚本来检查RMAN备份的失败情况
下面这个脚本用来检测N天之内RMAN是否有过备份,已经N天内是否有未备份的数据文件,该脚本需要两个参数,参数1是SID,参数2是备份间隔天数:
#!/bin/bash
#
if [ $# -ne 2 ]; then
echo "Usage: $0 SID threshold"
exit 1
fi
# source oracle OS variables
. /var/opt/oracle/oraset $1
#--这一部分是检查N天之内是否备份过,N就是脚本的第2个参数
crit_var=$(sqlplus -s <<EOF
/ as sysdba
SET HEAD OFF FEEDBACK OFF
--delta表示 现在距最后一次备份有几天了,如果有值说明这几天之内没备份过
SELECT COUNT(*) FROM
(SELECT (sysdate - MAX(end_time)) delta
FROM v\$rman_backup_job_details) a
WHERE a.delta > $2;
EOF)
#
if [ $crit_var -ne 0 ]; then
echo "rman backups not running on $1" | mailx -s "rman problem" XXXX@XXXX.com
else
echo "rman backups ran ok"
fi
#--这一部分是检查N天内,那个数据文件还没有进行备份,即维护了数据文件后要及时进行备份
crit_var2=$(sqlplus -s <<EOF
/ as sysdba
SET HEAD OFF FEEDBACK OFF
SELECT COUNT(*)
FROM
(
SELECT name
FROM v\$datafile
MINUS
SELECT DISTINCT
f.name
FROM v\$backup_datafile d
,v\$datafile f
WHERE d.file# = f.file#
AND d.completion_time > sysdate - $2);
EOF)
#
if [ $crit_var2 -ne 0 ]; then
echo "datafile not backed up on $1" | mailx -s "backup problem" XXXX@XXXX.com
else
echo "datafiles are backed up..."
fi
#
exit 0