管理RMAN备份_报告(Reporting)RMAN操作

本文介绍了RMAN备份和恢复策略的重要组成部分,包括如何利用RMAN的报告功能进行备份管理和监控,以及如何通过各种命令和视图来获取备份元数据。此外还详细解释了在DataGuard环境中使用RMAN的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.RMAN报告概述

1.1.RMAN报告的目的

作为备份和恢复策略的一部分,应该定期运行报告来显示已经备份了什么。可以确认哪些数据文件需要备份或哪些文件最近没有备份。同时,可以预览如果问题发生,RMAN必须还原哪些备份。

备份和恢复的另外一个重要的方面是监控空间使用。如果备份到磁盘,那么磁盘可能会变满,可能引起性能问题或甚至造成数据库停止。可以使用RMAN来确定备份是否是过期的备份,因此可以被删除。

你可能也需要获取关于RMAN作业的历史信息。例如,你可能想知道已经发出了多少备份任务,每个备份作业的状态(例如,它是否失败或完成),作业什么时候启动和完成,执行了什么备份类型。


1.2.RMAN报告的基本概念

RMAN存储它执行操作的每个数据库的元数据。

RMAN总是存储它的元数据库RMAN仓库在目标数据库的控制文件中。例如,假设你使用RMAN来备份prod1和prod2数据库,RMAN存储prod1的备份的元数据在prod1的控制文件中,prod2的备份的元数据库在prod2的控制文件中。

可选地,可以与恢复目录(recovery catalog)一起使用RMAN。在这个情况中,RMAN在一个分开的恢复目录数据库中的一组表中维护额外的元数据库仓库。例如,可以创建一个恢复目录在prod3。可以注册多个目标数据库在这个恢复目录。例如,如果我注册prod1和prod2在存储在prod3的恢复目录,那么RMAN存储关于prod1和prod2的备份的元数据在恢复目录模式中。

下表列出了用来访问RMAN仓库的元数据的技术。

技术描述额外信息
RMAN的 LIST和REPORT命令RMAN的LIST和REPORT命令提供关于可用的备份的扩展信息和如何使用它们来还原和恢复数据库Oracle Database Backup and Recovery Reference
V$视图当数据库在打开状态时,几个V$视图提供直接访问每个目标数据库的控制文件中的RMAN仓库记录。某些V$视图比如V$DATAFILE_HEADER,V$PROCESS和V$SESSION包含在恢复目录视图中找不到的信息。Oracle Database Reference
RC_视图如果数据库注册在恢复目录中,那么RC_视图提供直接访问存储在恢复目录中的RMAN仓库。RC_视图主要相对应V$视图。Oracle Database Backup and Recovery Reference
RESTORE … PREVIEW和RESTORE … VALIDATE HEADER命令这些命令列出RMAN可以还原到指定时间的备份。RESTORE … PREVIEW查询元数据但不读取备份文件。RESTORE … VALIDATE HEADER执行同样的工作,但额外列出需要用来还原和恢复操作的文件,命令验证备份文件头来确认在磁盘上或介质管理目录中的文件是否对应于RMAN仓库中的元数据。

RMAN仓库有些时候不能真实反映磁盘和磁带上的备份的情况。例如,用户可能使用操作系统工具删除了一个备份,这样RMAN仓库错误地报告备份是可用的。可以使用命令CHANGE,CROSSCHECK和DELETE来更新RMAN仓库来反映可用备份的实际状态。否则,命令和视图的输出可能会有误导,这意味着RMAN可能无法找出备份来还原和恢复数据库。


1.3.Data Guard环境中的报告

在Data Guard环境中,可以正如不使用Data Guard时一样使用LIST,REPORT和SHOW命令。可以运行这些命令和FOR DB_UNIQUE_NAME子语句来显示与指定数据库关联的备份

如在“关于Data Guard环境中的RMAN文件管理”章节阐述的一样,每个备份与创建它的主或备数据库关联。例如,如果备份DB_UNIQUE_NAME为standby1的数据库,那么standby1数据库与备份关联。

例如,以下命令列出只与sfsstandby关联的归档redo日志:
LIST ARCHIVELOG ALL FOR DB_UNIQUE_NAME sfstandby;

如果在Data Guard环境中使用LIST,REPORT和SHOW命令而不指定FOR DB_UNIQUE_NAME子语句,那么RMAN显示目标数据库可以访问的文件。“关于在Data Guard环境中备份的可访问性”章节阐述了备份什么时候被视为RMAN可以访问的。

在Data Guard环境中,必须与恢复目录一起使用RMAN。RMAN存储Data Guard环境中的所有备份和恢复文件的元数据在恢复目录。当运行RMAN报告命令,可以作为TARGET连接RMAN到挂载或打开的数据库或使用SET DBID命令来鉴别数据库


2.列出备份和恢复相关的对象

LIST命令使用RMAN仓库中的信息来提供备份和其它与备份和恢复相关的对象的列表。

2.1.关于LIST命令

LIST命令的主要目的是列出备份和副本。

例如,可以列出:
1)数据库,表空间,数据文件,归档redo日志或控制文件的备份和代理副本
2)已经过期的备份
3)通过时间,路径名称,设备类型,标签或可恢复性限定的备份
4)归档redo日志文件和磁盘拷贝。

除了备份和拷贝以外,RMAN还可以列出其它数据类型。下表总结了几个可以列出的有用的对象。

列出内容命令描述
备份集和代理拷贝LIST BACKUP可以列出数据库,表空间,数据文件,归档redo日志,控制文件或spfile的所有备份集,副本和代理副本
映像副本LIST COPY可以列出数据文件拷贝和归档redo日志文件。缺省情况下,LIST COPY显示所有数据文件的副本和归档redo日志。可用和不可用的映像副本都包括在输出中,即使那些不可以还原或过期的或不可用的。
归档redo日志文件LIST ARCHIVELOG (ALL)列出归档redo日志文件。可以列出所有归档redo日志文件或通过SCN,时间,或序列序号范围指定个别的归档日志文件。如果指定一个范围,可以进一步通过指定转生序号(incarnation number)限制返回的列表。
预插入(preplugin)备份LIST … PREPLUGIN可以列出所有预插入的备份和预插入归档redo日志文件。
数据库转生(incarnationLIST INCARNATION可以列出数据库的所有转生。当使用RESETLOGS选项打开数据库时,一个新的数据库转生被创建。
在Data Guard环境中的数据库LIST DB_UNIQUE_NAME在Data Guard环境中的一个数据库通过它的DB_UNIQUE_NAME初始化参数设置来区分。可以列出全部含有相同DBID的数据库。
在Data Guard环境中主或备数据库的备份和副本LIST … FOR DB_UNIQUE_NAME可以列出在一个Data Guard环境中一个指定的数据库或所有数据库的所有备份和副本。RMAN限制输出为指定的DB_UNIQUE_NAME的数据库独占的相关联的文件或对象。例如,可以使用LIST和FOR DB_UNIQUE_NAME来显示与特定的备或主数据库相关联的归档redo日志文件。属主不是任何数据库的对象(恢复目录视图的列SITE_KEY为空)不会列出。
还原点LIST RESTORE POINT可以列出RMAN仓库已知的还原点。
存储脚本的名称LIST SCRIPT NAMES可以列出使用CREATE SCRIPT或REPLACE SCRIPT命令创建的恢复目录脚本的名称
数据恢复顾问(Data Recovery Advisor)使用的故障LIST FAILURE一个故障是映射到一个修复选项的一个持久的数据损坏。使用Data Recovery Advisor诊断和修复错误章节讲述了如何使用LIST FAILURE和ADVISE和REPAIR命令。

下表总结了大部分常用的LIST选项。

LIST选项描述
LIST EXPIRED列出记录在RMAN仓库中但在最近的交叉检查过程中在预期的磁盘或磁带位置上不存在的备份或副本。这些备份可能已经在RMAN之外被删除。
LIST … BY FILE列出每个数据文件,归档redo日志文件,控制文件和spfile的备份。每行描述一个文件的一个备份。
LIST … SUMMARY提供每个备份的一行概要。

上表的内容未包含所有的LIST对象和选项。例如,可以列出通过时间,路径名称,设备类型,标签或可恢复性限定的备份。


2.2.列出所有备份和副本

使用listObjList(CONTROLFILE,DATABASE,SPFILE)或recordSpec(ARCHIVELOG,BACKUPSET,BACKUPPIECE,CONTROLFILECOPY,DATAFILECOPY,PROXY,NODUPLICATES)子语句指定期望的对象。如果不指定一个对象,那么RMAN显示所有数据库文件的副本和归档redo日志文件。

缺省情况下,RMAN逐次地列出每个备份或代理副本,然后识别包含在备份中的文件。也可以通过文件列出备份。

缺省情况下,RMAN以冗长模式列出,这意味着它提供扩展的多行信息。如果冗长模式生成太多输出的话,也可以以概要模式列出备份。

为了查看所有备份和拷贝的概要报告,执行LIST命令和SUMMARY选项。
RMAN>list backup summary;

为了查看所有备份和拷贝的冗余输出,执行LIST命令不带SUMMARY选项。
RMAN>list backup;
RMAN>list copy;

通过文件列出备份:
RMAN>list backup by file;


2.3.列出选择的备份和副本

可以指定几个不同的条件来缩小LIST的输出。

运行LIST COPY或LIST BACKUP和使用listObjList(CONTROLFILE,DATABASE,SPFILE)或recordSpec(ARCHIVELOG,BACKUPSET,BACKUPPIECE,CONTROLFILECOPY,DATAFILECOPY,PROXY,NODUPLICATES)子语句。

# lists backups of all files in database
LIST BACKUP OF DATABASE;
LIST BACKUP OF DATAFILE 1;

# lists copy of specified datafile
LIST COPY OF DATAFILE ‘ora_home/oradata/trgt/system01.dbf’;

# lists specified backup set
LIST BACKUPSET 213;

# lists datafile copy
LIST DATAFILECOPY ‘/tmp/tools01.dbf’;

也可以通过指定maintQualifier或RECOVERABLE子语句限定搜索。

# specify a backup set by tag
LIST BACKUPSET TAG ‘weekly_full_db_backup’;

# specify a backup or copy by device type
LIST COPY OF DATAFILE ‘ora_home/oradata/trgt/system01.dbf’ DEVICE
TYPE sbt;

# specify a backup by directory or path
LIST COPY LIKE ‘/tmp/%’;

# specify a backup or copy by a range of completion dates
LIST COPY OF DATAFILE 2 COMPLETED BETWEEN ‘10-DEC-2012’ AND ‘17-DEC-2012’;

# specify logs backed up at least twice to tape
LIST ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE sbt;

# specify backup sets backed up at least once to disk
LIST BACKUPSET BACKED UP 1 TIMES TO DISK;

# specify backups of PDB backed up at least twice to sbt
LIST BACKUP OF PLUGGABLE DATABASE my_pdb BACKED UP 2 TIMES TO SBT;


2.4.列出数据库转生(incarnation)

每次在数据库上执行OPEN RESETLOGS操作时,这个操作创建一个数据库的新的转生。

当执行增量备份,RMAN可以使用来自之前的转生的一个备份或当前转生作为后面的增量备份的基础。当执行还原和恢复操作时,如果所有归档日志可用,RMAN可以正如使用当前转生的备份一样使用来自之前转生的备份。

列出数据库转生:
LIST INCARNATION;

如果正在使用恢复目录和注册了多个目标数据库在相同的目录,那么可以使用OF DATABASE选项来区分它们:
RMAN>LIST INCARNATION OF DATABASE rdbms;

List of Database Incarnations
DB Key Inc Key 	DB Name 	 DB ID     STATUS Reset SCN ResetTime
------- ------- -------- ------------- ------ --------- ---------
1 			1 	 RDBMS 	    774627068  PARENT 		1 	21-OCT-13
2 			2 	 RDBMS 	    774627068  CURRENT  173832 	21-OCT-13

以上示例表明RESETLOGS操作在数据库rdbms的SCN 173832时执行,导致一个新的转生。转生通过转生key(列Inc Key)来区别。


3.报告备份和数据库模式

RMAN的REPORT命令分析可用的备份和数据库。

3.1.关于RMAN备份的报告

REPORT命令提供RMAN备份的各种报告。

可以使用REPORT命令来回答重要的问题,诸如:
1) 哪些文件需要备份?
2) 哪些文件有不可恢复的操作在它们上面执行?
3) 哪些备份过期的和可以被删除?
4) 目标数据库或在某些之前的时间里Data Guard环境中的数据库的物理模式是什么?
5)哪些文件最近没有备份过?

报告让你可以确认备份和恢复策略实际上满足数据库可恢复性的要求。REPORT用来确认数据库是否可以恢复的两个主要形式是:
1) REPORT NEED BACKUP
报告哪些数据库文件必须备份来满足配置的或指定的保留策略。

2) REPORT UNRECOVERABLE
报告哪些数据库文件要求备份,因为它们受某些NOLOGGING操作比如直接路径INSERT的影响。

RMAN仓库包含其它可以使用REPORT命令可以访问的信息。下表总结了REPORT选项。

报告的内容命令描述
过期的备份REPORT OBSOLETE记录在RMAN仓库中的不再被需要的可以删除的完全备份,数据文件副本和归档redo日志。
数据库模式REPORT SCHEMA在指定时间点的目标数据库的所有数据文件(永久和临时的)和表空间的名称。如果在Data Guard环境中使用RMAN,那么可以报告指定的DB_UNIQUE_NAME的数据库模式。

3.2.报告在当前保留策略下需要备份的文件

使用REPORT NEED BACKUP命令来确认在指定的保留策略下哪些数据库文件需要备份。

如果不带参数,REPORT NEED BACKUP报告在当前配置的保留策略下哪些对象需要备份。REDUNDANCY 1的配置的保留策略的输出与以下示例类似:

RMAN>REPORT NEED BACKUP;

RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of files with less than 1 redundant backups
File #bkps Name
---- ----- -----------------------------------------------------
2 		0 	/oracle/oradata/trgt/undotbs01.dbf

注:如果使用CONFIGURE RETENTION POLICY TO NONE禁用保留策略,那么REPORT NEED BACKUP返回一个错误消息,因为没有保留策略,RMAN就不能确认哪些文件必须备份。


3.2.1.报告在不同保留策略下需要备份的文件

可以使用REPORT NEED BACKUP命令的选项来指定不同的保留策略。

使用以下一种形式来为REPORT NEED BACKUP指定不同的条件:
1)REPORT NEED BACKUP RECOVERY WINDOW OF n DAYS
显示要求备份的对象来满足基于恢复窗口的保留策略。

2)REPORT NEED BACKUP REDUNDANCY n
显示要求备份的对象来满足基于冗余度的保留策略。

3)REPORT NEED BACKUP DAYS n
显示为了还原要求超过n天的归档redo日志文件的文件。

4)REPORT NEED BACKUP INCREMENTAL n
显示为了还原要求应用超过n个增量备份的文件。


3.2.2.报告需要备份的表空间和数据文件

命令REPORT NEED BACKUP可以检查不同保留策略下的整个数据库,跳过指定的表空间,或只检查指定的表空间或数据文件。
REPORT NEED BACKUP RECOVERY WINDOW OF 2 DAYS DATABASE SKIP TABLESPACE TBS_2;

REPORT NEED BACKUP REDUNDANCY 2 DATAFILE 1;

REPORT NEED BACKUP TABLESPACE TBS_3; # uses configured retention policy

REPORT NEED BACKUP INCREMENTAL 2; # checks entire database


3.2.3.报告只在磁带或磁盘上需要备份的文件

可以限制由REPORT NEED BACKUP命令测试的备份为只是基于磁盘或磁带的备份。
REPORT NEED BACKUP RECOVERY WINDOW OF 2 DAYS DATABASE DEVICE TYPE sbt;

REPORT NEED BACKUP DEVICE TYPE DISK;

REPORT NEED BACKUP TABLESPACE TBS_3 DEVICE TYPE sbt;


3.3.报告受不可恢复的操作影响的数据文件

当数据文件已经被一个不可恢复的操作更改时,比如直接载导入插入(direct load insert),正常的介质恢复不能用来恢复文件,因为不可恢复的操作不会产生redo。你必须在这些操作之后对受影响的数据文件执行完全或增量备份,来确保受不可恢复操作影响的数据块可以使用RMAN来恢复。

查明被不可恢复操作影响的数据文件:
RMAN>REPORT UNRECOVERABLE;

Report of files that need backup due to unrecoverable operations
File Type of Backup 		Required Name
---- --------------- -----------------------------------
1 		full 		/oracle/oradata/trgt/system01.dbf

3.4.报告过期的备份

可以通过指定关键字OBSOLETE来报告过期的备份集,备份片和数据文件副本,即是不需要它们来满足指定的保留策略。

报告过期的备份:
1)启动RMAN,连接到目标数据库和恢复目录(如果有使用的话)。

2)执行CROSSCHECK命令通过对比在磁盘或磁带上的状态来更新RMAN仓库中备份的状态。
CROSSCHECK BACKUP DEVICE TYPE DISK;
CROSSCHECK BACKUP DEVICE TYPE sbt;
CROSSCHECK BACKUP; # crosschecks all backups on all devices

3)执行REPORT OBSOLETE来鉴别哪些文件是过期的,因为它们不再为还原所需要。
RMAN>REPORT OBSOLETE;

RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of obsolete backups and copies
Type 			Key 	 Completion Time 	Filename/Handle
------------- ------ -------------- --------------------
Datafile Copy 	44 		08-FEB-13 	/backup/ora_df549738566_s70_s1
Datafile Copy 	45 		08-FEB-13 	/backup/ora_df549738567_s71_s1
Datafile Copy 	46 		08-FEB-13 	/backup/ora_df549738568_s72_s1
Backup Set 		26 		08-FEB-13
Backup Piece 	26 		08-FEB-13 	/backup/ora_df549738682_s76_s1
...

也可以通过使用REPORT OBSOLETE和RECOVERY WINDOW或REDUNDANCY选项来检查在不同的恢复窗口或冗余度保留策略下哪些备份是过期的。
REPORT OBSOLETE RECOVERY WINDOW OF 3 DAYS;
REPORT OBSOLETE REDUNDANCY 1;


3.5.报告数据库模式

命令REPORT SCHEMA列出和显示关于数据文件,表空间等的信息。

如果没有指定FOR DB_UNIQUE_NAME子语句,那么恢复目录连接是可选的,但一个目标数据库连接是必需的。在一个Data Guard环境中,可以指定REPORT SCHEMA FOR DB_UNIQUE_NAME来报告环境中的一个数据库的模式。在这个情况中,一个目标数据库的连接是不要求的。可以连接RMAN到恢复目录和设置DBID(SET DBID)来替代。

报告数据库模式:
1) 启动RMAN,连接到期望的数据库。

2)如果在前面的步骤中没有连接RMAN到一个目标数据库,你想在REPORT SHCEMA中指定FOR DB_UNIQUE_NAME子语句,那么设置数据库DBID。
RMAN> SET DBID 28014364;

3)运行REPORT SCHEMA命令。
RMAN>REPORT SCHEMA;

Report of database schema for database with db_unique_name DGRDBMS
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs 		Datafile Name
---- -------- ---------- ------- ------------------------
1 		450 	SYSTEM 		YES 	/disk1/oracle/dbs/t_db1.f
2 		141 	SYSAUX 		NO 		/disk1/oracle/dbs/t_ax1.f
3 		50 		UD1 		YES 	/disk1/oracle/dbs/t_undo1.f
4 		50 		TBS_11 		NO 		/disk1/oracle/dbs/tbs_111.f
5 		50 		TBS_11 		NO 		/disk1/oracle/dbs/tbs_112.f
List of Temporary Files
=======================
File Size(MB) Tablespace 	Maxsize(MB)  Tempfile Name
---- -------- ----------- ----------- --------------------
1 		40 		TEMP		 32767		/disk1/oracle/dbs/t_tmp1.f

如果使用恢复目录,那么可以使用atClause来指定一个过去的时间,SCN或日志序列号,如下所示:
RMAN> REPORT SCHEMA AT TIME ‘SYSDATE-14’; # schema 14 days ago
RMAN> REPORT SCHEMA AT SCN 1000; # schema at scn 1000
RMAN> REPORT SCHEMA AT SEQUENCE 100 THREAD 1; # schema at sequence100
RMAN> REPORT SCHEMA FOR DB_UNIQUE_NAME standby1; # schema fordatabase standby1


4.使用视图来查询备份元数据

在某些情况中,V$视图可以提供使用命令LIST和REPORT命令不能提供的信息。

4.1.查询过去和当前RMAN作业的详情

RMAN作业是在一个RMAN会话中执行的一组命令。因此,一个RMAN作业可以包含多个命令。

例如,你可能在一个单一的会话中执行两个不同的BACKUP命令和一个RECOVER COPY命令。一个RMAN备份作业是在一个RMAN作业中执行的一组BACKUP命令。例如,在相同的RMAN作业中执行的BACKUP DATABASE和BACKUP ARCHIVELOG ALL命令组成一个单一的RMAN备份作业。

视图V$RMAN_BACKUP_JOB_DETAILSV$RMAN_BACKUP_SUBJOB_DETAILS和它们相应的恢复目录版本的视图提供了RMAN备份作业的详情。例如,视图显示备份花费了多少时间,已经发出多少备份作业,备份作业的状态(例如,它是否失败或完成),作业什么时候启动和完成,执行了哪种类型的备份。列SESSION_KEY是备份作业发生的RMAN会话的唯一key。

RMAN备份经常写得比读少。因为RMAN压缩,列OUTPUT_BYTES_PER_SEC不能作为备份速度的度量值。衡量备份速度合适的列是INPUT_BYTES_PER_SEC。读和写数据之间的比例在列COMPRESSION_RATIO中描述

查询关于过去和当前RMAN作业的详情:
1)连接SQL*Plus到你想查询备份历史的数据库。

2)查询V$RMAN_BACKUP_JOB_DETAILS视图来获取关于备份的类型,状态,启动和停止的时间。

以下查询显示通过RMAN会话key排序的备份作业历史:

COL STATUS FORMAT a9
COL hrs FORMAT 999.99
SELECT SESSION_KEY, INPUT_TYPE, STATUS,
TO_CHAR(START_TIME,'yyyy-mm-dd hh24:mi') start_time,
TO_CHAR(END_TIME,'yyyy-mm-dd hh24:mi') end_time,
ELAPSED_SECONDS/3600 hrs
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY SESSION_KEY;

SESSION_KEY INPUT_TYPE 		STATUS 		START_TIME			END_TIME 		HRS
----------- ------------- ---------   ------------------ ----------------   -----
9 			DATAFILE FULL 	COMPLETED	 04/18/07 18:14 	04/18/07 18:15 	.02
16 			DB FULL 		COMPLETED	 04/18/07 18:20 	04/18/07 18:22 	.03
113 		ARCHIVELOG 		COMPLETED	 04/23/07 16:04 	04/23/07 16:05 	.01

3)查询V$RMAN_BACKUP_JOB_DETAILS视图获取在RMAN会话中的备份作业的速度
以下查询显示以会话key(RMAN会话的主键)排序的备份作业的速度。列in_sec和out_sec显示每秒的输入和输出数据。

COL in_sec FORMAT a10
COL out_sec FORMAT a10
COL TIME_TAKEN_DISPLAY FORMAT a10
SELECT SESSION_KEY,
OPTIMIZED,
COMPRESSION_RATIO,
INPUT_BYTES_PER_SEC_DISPLAY in_sec,
OUTPUT_BYTES_PER_SEC_DISPLAY out_sec,
TIME_TAKEN_DISPLAY
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY SESSION_KEY;

SESSION_KEY OPT COMPRESSION_RATIO 	IN_SEC 	  OUT_SEC TIME_TAKEN
----------- --- ----------------- ---------- ---------- ----------
9 			NO 	1 					8.24M 		8.24M 	00:01:14
16 			NO 	1.32732239 			6.77M 		5.10M 	00:01:45
113 		NO 	1 					2.99M 		2.99M 	00:00:44

4)查询V$RMAN_BACKUP_JOB_DETAILS视图获取在RMAN会话中的备份大小

如果运行BACKUP DATABASE,那么V$RMAN_BACKUP_JOB_DETAILS.OUTPUT_BYTES显示由备份作业为正在备份的数据库写的备份集的总大小。

以下查询显示备份作业大小和通过会话key(RMAN会话的主键)排序。列in_size和out_size显示输入和输出的数据。

COL in_size FORMAT a10
COL out_size FORMAT a10
SELECT SESSION_KEY,
INPUT_TYPE,
COMPRESSION_RATIO,
INPUT_BYTES_DISPLAY in_size,
OUTPUT_BYTES_DISPLAY out_size
FROM V$RMAN_BACKUP_JOB_DETAILS
ORDER BY SESSION_KEY;

SESSION_KEY 	INPUT_TYPE  COMPRESSION_RATIO  IN_SIZE 	  OUT_SIZE
----------- ------------- ----------------- ---------- ----------
10 				DATAFILE FULL 		1 			602.50M 	602.58M
17 				DB FULL 			1.13736669 	634.80M 	558.13M

4.2.确认备份片的加密状态

视图V$BACKUP_PIECE和V$RMAN_BACKUP_PIECE的列ENCRYPTED表示备份片是加密(YES)还是未加密(NO)。

例如,可以运行以下查询来确认哪些备份片是加密的:

COL BS_REC FORMAT 99999
COL BP_REC FORMAT 99999
COL MB FORMAT 9999999
COL ENCRYPTED FORMAT A7
COL TAG FORMAT A25

SELECT S.RECID AS "BS_REC", P.RECID AS "BP_REC", P.ENCRYPTED,
P.TAG, P.HANDLE AS "MEDIA_HANDLE"
FROM V$BACKUP_PIECE P, V$BACKUP_SET S
WHERE P.SET_STAMP = S.SET_STAMP
AND P.SET_COUNT = S.SET_COUNT;

BS_REC BP_REC ENCRYPT TAGMEDIA_HANDLE
------ ------ ------- ----------------------------------
1 		1 		YES 	TAG20070711T140124/disk1/c-39525561-20070711-00
2 		2 		YES 	TAG20070711T140128/disk1/c-39525561-20070711-01
3 		3 		YES 	TAG20070711T140130/disk1/c-39525561-20070711-02


5.查询恢复目录视图(Recovery Catalog Views)

命令LIST,REPORT和SHOW命令提供了最简单的方式来访问控制文件和恢复目录中的数据。

然而,某些时候可以从恢复目录视图中获取有用的信息,它们驻留在恢复目录模式中和使用前缀RC_。

5.1.关于恢复目录视图

RMAN从目标数据库的的控制文件中获取备份和恢复元数据,将它们存储在恢复目录的表中。恢复目录视图是从这些表衍生出来。恢复目录视图没有为用户查询而标准化或优化。

一般来说,恢复目录视图不如RMAN报告命令一样对用户友好。例如,当启动RMAN和连接到目标数据库,当执行LIST,REPORT和SHOW命令时,你只获取这个目标数据库的信息。如果你有10个不同的目标数据库注册在相同的恢复目录,那么任何目录视图的查询显示所有10个数据库的所有转生的元数据。你经常必须在视图当中执行复杂的SELECT和JOIN来提取关于数据库转生(incarnation)的有用信息。

大部分目录视图在数据库中有一个对应的V$视图。例如,RC_BACKUP_PIECE对应V$BACKUP_PIECE。恢复目录视图和对应的V$视图的主要区别是每个恢复目录视图包含注册在恢复目录中的所有目标数据库的元数据。V$视图只包含关于它自己的信息。

5.1.1.关于注册数据库的唯一标识符

大部分恢复目录视图包含列DB_KEY和DBINC_KEY。注册在恢复目录中的每个数据库可以通过主键(列DB_KEY的值)或DBID(32位的唯一数据库标识符)来唯一区别。数据库的每个转生通过列DBINC_KEY来唯一区分。

可以使用DB_KEY和DBINC_KEY来检索目标数据库的一个特定转生的记录。然后,可以执行与大部分其它目录视图的连接来隔离属于这个转生的记录。`

目录视图和V$视图之间一个重要的区别是使用不同唯一标识符系统来备份和恢复文件。例如,很多V$视图比如V$ARCHIVED_LOG使用RECID和STAMP列来形成一个连接的主键。对应的恢复目录视图使用一个衍生的值作为它的主键和存储值在一个单一的列中。例如,RC_ARCHIVED_LOG的主键是AL_KEY列。AL_KEY列的值是RMAN显示在LIST命令输出中的主键。


5.1.2.关于Data Guard环境中的唯一标识符

当查询Data Guard环境中的恢复目录时有特别的考虑。

在Data Guard环境中,多个数据库共享相同的DBID。几个视图包含一个DB_UNIQUE_NAME列,它表示记录属于的数据库转生的DB_UNIQUE_NAME。在Data Guard环境中的所有数据库共享相同的DBID但有不同的DB_UNIQUE_NAME值。

当数据库名称不为目录所知的时候,和注册在恢复目录中的Oracle 9i数据库一样,DB_UNIQUE_NAME的值是null。同样,当数据库升级到Oracle 11g或之后的版本但恢复目录模式还没有查核所有文件的数据库名称时,列的值也是null。

在恢复目录视图中,主数据库和它的关联备数据库共享相同的DB_KEY。然而,在Data Guard环境中的每个数据库有一个唯一的RC_SITE.SITE_KEY值。例如,主数据库prod和备数据库standby1的DB_KEY值可能都是1,但prod的SITE_KEY是3,而standby1的SITE_KEY是30。

有些恢复目录视图没有DB_UNIQUE_NAME列,但包含一个SITE_KEY列。可以使用SITE_KEY连接RC_SITE.SITE_KEY来确认与文件关联的数据库的DB_UNIQUE_NAME。


5.2.查询恢复目录视图获取目标数据库DB_KEY或DBID值

注册数据库的主键DB_KEY值,只在恢复目录中使用。获取DB_KEY的最简单的方式是使用目标数据库的DBID,无论何时连接RMAN到目标数据库时它都会显示。

DBID用来区分注册在RMAN恢复目录中的数据库。

查询恢复目录来获取关于数据库的当前转生的信息:
1)确认你想查看记录的数据库的DBID。
可以通过查看RMAN连接到数据库时显示的输出来获取DBID,也可以查询V$RMAN_OUTPUTV$DATABASE视图。以下示例连接SQL*Plus到期望的数据库和查询DBID:
SQL> CONNECT / AS SYSBACKUP
SQL> SELECT DBID FROM V$DATABASE;

DBID
---------
598368217

2)启动SQL*Plus,使用恢复目录的属主连接到恢复目录数据库。

3)获取在步骤1中得到的DBID的数据库的DB_KEY。
SELECT DB_KEY
FROM RC_DATABASE
WHERE DBID = dbid_of_target;

4)查询在步骤1中得到的DBID的数据库当前转生的记录。

为了获取关于目标数据库当前转生的信息,指定目标数据库的DB_KEY和执行与RC_DATABASE_INCARNATION视图的连接。使用WHERE条件来指定CURRENT_INCARNATION列的值为YES。例如,获取关于DB_KEY值为1的目标数据库当前转生的备份集的信息,查询如下:
SELECT BS_KEY, BACKUP_TYPE, COMPLETION_TIME
FROM RC_DATABASE_INCARNATION i, RC_BACKUP_SET b
WHERE i.DB_KEY = 1
AND i.DB_KEY = b.DB_KEY
AND i.CURRENT_INCARNATION = ‘YES’;


5.3.查询RC_BACKUP_FILES

可以查询视图RC_BACKUP_FILES来获取关于注册在恢复目录的任何数据库的所有备份的信息。在查询RC_BACKUP_FILES之前,必须调用DBMS_RCVMAN.SETDATABASE存储过程。

指定注册在恢复目录的数据库的DBID,如下所示:
SQL> CALL DBMS_RCVMAN.SETDATABASE(null,null,null,2283997583);

第4个参数必须是注册在恢复目录中的数据库的DBID,其它参数必须全部是NULL。



来源:《Oracle Database Backup and Recovery User’s Guide,19c》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值