Oracle RMAN篇三—— RMAN 维护与管理

一、 RMAN常用配置选项

1. 备份优化

优化备份开启后,会跳过以前备份过的文件,只读表空间和offline的表空间也会跳过。

CONFIGURE BACKUP OPTIMIZATION OFF; # default

打开备份优化:
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

关闭备份优化:
RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;

更改回默认值:
RMAN> CONFIGURE BACKUP OPTIMIZATION CLEAR;

2. 设置IO设备类型

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

使用磁盘设备:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

使用磁带设备:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT;

更改回默认值:
RMAN> CONFIGURE DEFAULT DEVICE TYPE CLEAR;

将备份文件存储到指定路径,如 e:\backup

configure channel device type disk format 'e:\backupb\%d_db_%u';
#后面的%d_db_%u是存储格式

3. 自动备份控制文件及spfile

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

打开自动备份控制文件:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

关闭自动备份控制文件:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

更改回默认值:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP CLEAR;
  • 指定自动备份控制文件的格式和路径
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

修改备份路径
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/%F';

更改回默认值:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
  • 配置控制文件的快照位置

在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性。

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_orcl.f'; # default

4. 设置备份文件冗余度

  • 数据文件
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

设置备份数据文件冗余度:
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO n;

更改回默认值:
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK CLEAR;
  • 归档日志
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

设置备份归档日志文件冗余度:
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO n;

更改回默认值:
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK CLEAR;

5. 设置备份最大大小(超过会失败)

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

设置备份文件最大大小:
RMAN> CONFIGURE MAXSETSIZE TO 1G | 1000M | 1000000K | unlimited;

更改回默认值:
RMAN> CONFIGURE MAXSETSIZE CLEAR;

 6. 排除选项 exclude

指定users表空间不备份到备份集中,对只读表空间很有用

configure exclude for tablespace 'users'; 
configrue exclude clear;

7. 设置备份加密

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

打开备份加密:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;

关闭备份加密:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE OFF;

更改回默认值:
RMAN> CONFIGURE ENCRYPTION FOR DATABASE CLEAR;

设置加密算法
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

8. 其它选项 auxiliary

CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;

FORMAT字符串格式化

使用FORMAT参数时可使用的各种替换变量,未指定则默认使用%U为备份片段命名,如下所示:

  • %a:Oracle数据库的activation ID即RESETLOG_ID。
  • %c:备份片段的复制数(从1开始编号,最大不超过256)。
  • %d:Oracle数据库名称。
  • %D:当前时间中的日,格式为DD。
  • %e:归档序号。
  • %f:绝对文件编号。
  • %F:基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD为日期,QQ是一个1~256的序列。
  • %h:归档日志线程号。
  • %I:Oracle数据库的DBID。
  • %M:当前时间中的月,格式为MM。
  • %N:表空间名称。
  • %n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8。比如数据库名JSSBOOK,则生成的名称则是JSSBOOKx。
  • %p:备份集中备份片段的编号,从1开始。
  • %s:备份集号。
  • %t:备份集时间戳。
  • %T:当前时间的年月日格式(YYYYMMDD)
  • %Y:当前时间中的年,格式为YYYY。
  • %u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称。
  • %U:默认是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式,执行不同备份操作时,生成的规则也不同,如下所示:
生成备份片段时,%U=%u_%p_%c;
生成数据文件镜像复制时,%U=data-D-%d_id-%I_TS-%N_FNO-%f_%u;
生成归档文件镜像复制时,%U=arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u;
生成控制文件镜像复制时,%U=cf-D_%d-id-%I_%u。

二、 性能调整

1. 并行信道操作

为备份分配多个信道可以实现备份的并行化,可以通过parallelism参数来指定同时"自动"创建多少个通道。

  • 如果备份到磁带,并行信道数不应超出磁带中带机(驱动数)的数量;
  • 如果备份到磁盘,并行信道数不应超出磁盘子系统(输出设备跨几块磁盘)的数量

使用configure配置

--配置并行度为2
RMAN> configure device type disk parallelism 2;

--清除并行度参数 ,恢复到默认值
RMAN> configure device type disk clear;

设置备份并自动压缩:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;

备份时指定并行度为4

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

在run命令块中指定ALLOCATE CHANNEL会覆盖parallelism参数配置,执行备份命令时会以你设置的channel为准,而不管configure中配置了多少个并行通道。

2. RMAN多路复用

多路复用允许使用单个RMAN信道在备份期间并行读取数据文件,并将这些数据文件内容写入同一个备份集片。因此,一个备份集片可能包含许多不同数据文件的内容。多路复用级别为min{ filesperset , maxopenfiles}。

  • Filesperset

每个备份集最多可包含的数据文件个数,默认值为min{ 64,输入文件数/分配信道数 }。参数值在执行backup命令时确定,也可显示指定:

Backup database Filesperset 4;
  • Maxopenfiles

确定rman能并行读取的数据文件个数,默认值为8。该参数在分配信道时确定。

Configure channel 1 device type disk Maxopenfiles 3 format '/u01/back/%U';

如果设置Filesperset=6Maxopenfiles=3parallelism=1,创建一个备份集,此时每个备份集最多仍可包含6个数据文件,但在只能同时并行备份3个数据文件。

3. 控制RMAN操作整体影响

控制备份时间或减少RMAN备份对其他进程的整体IO影响,RMAN提供了backup命令的duration参数。可以使用MINIMIZE LOAD最小化备份数据库所需的IO负载,也可以使用MINIMIZE TIME尽快运行备份。使用默认的minimize time 参数的另一个特性是,RMAN 将区分备份的数据文件的优先级。最近备份的数据文件具有较低的优先级,而较早备份的数据文件具有较高的优先级。

Backup duration 00:30 minimize time database; #半个小时

Backup duration 10:00 minimize load database; #10个小时

Backup duration 0:50 partial database; #默认是minimize time

partial参数可以指示RMAN如何处理超出backup duration时间限制的备份。

  • 如果不设置,运行时间超过指定的持续时间,RMAN将取消备份。
  • 如果设置,备份因为超出duration参数设置时间而终止时RMAN不会作为失败的备份进行处理。因此,run代码块中的剩余命令将继续执行。
  • 无论partial 参数的设置是什么,即使整个备份过程没有完成,Oracle也会认为成功完成的备份集是可用的。

4. 限制rman备份速度

RMAN默认使用所有可用的IO带宽来进行磁盘读写,但有时可能会对别的业务系统造成影响,需要限制IO速度。

allocate channel或configure channel的RATE选项可以设置RMAN每秒最大读速率,例如以下语句设置为 1MB/s:

CONFIGURE CHANNEL DEVICE TYPE sbt RATE 1M;
--或者
configure channel device type disk rate 1M;
--或者
allocate channel c1 device type disk rate 20M;

三、 交叉验证RMAN备份

Crosscheck命令用来校验控制文件或恢复目录中的rman信息是否与备份介质上实际的物理备份集片相同。

检查结果有以下两种状态:

  • A(AVAILABLE,可用):RMAN认定该项存在于备份介质上
  • X(EXPIRED,过期):这个备份集片存在于rman目录(控制文件或恢复目录),但并不物理存在于备份介质上

1. 校验各类备份集

校验类型

命令

校验所有备份集

RMAN> crosscheck backup;

校验所有数据文件的备份集

RMAN> crosscheck backup of database; 

校验特定表空间的备份集

RMAN> crosscheck backup of tablespace users;

校验特定数据文件的备份集

RMAN> crosscheck backup of datafile 4; 

校验控制文件的备份集

RMAN> crosscheck backup of controlfile; 

校验SPFILE的备份集

RMAN> crosscheck backup of archivelog sequence 3; 

校验所有映像副本

RMAN> crosscheck copy; 

校验所有数据文件的映像副本

RMAN> crosscheck copy of database; 

校验特定表空间的映像副本

RMAN> crosscheck copy of tablespace users; 

校验特定数据文件的映像副本

RMAN> crosscheck copy of datafile 6; 

校验归档日志的映像副本

RMAN> crosscheck copy of archivelog sequence 4; 

校验控制文件的映像副本

RMAN> crosscheck copy of controlfile;

2. 校验归档日志备份

还可以基于很多标准校验归档日志备份,把time换成scn或者sequence也行

校验标准

命令

校验所有归档

RMAN> crosscheck archivelog all

Like参数

RMAN> crosscheck archivelog like '%22%';

范围参数-from time

RMAN> crosscheck archivelog from time="to_date('2008-5-20','yyyy-mm-dd')";

范围参数-until time

RMAN> crosscheck archivelog until time="to_date('2008-5-20','yyyy-mm-dd')";

范围参数-from time until time

RMAN> crosscheck archivelog from time="to_date('2008-5-20','yyyy-mm-dd')" until time="to_date('2008-5-23','yyyy-mm-dd')";

范围参数-time between and

RMAN> crosscheck archivelog time between "to_date('2008-5-20','yyyy-mm-dd')" and "to_date('2008-5-23','yyyy-mm-dd')";

如果是手工rm了归档日志,Rman会检测到日志缺失,从而无法执行备份。此时需要执行crosscheck并删除过期日志,之后Rman可以恢复正常。

rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;

四、 备份验证

1. Restore…preview

该命令可帮助确定还原数据库时需要哪些数据文件,以及能否将数据库恢复到一致的时间点。需要的IO最小,也不会检查确认备份集片真正存在于磁盘上或是否受损,仅基于rman目录中包含的备份集片给出报告。

常用命令(在普通的restore命令后加preview即可):

Restore database preview;
Restore tablespace user preview;
Restore datafile 1 preview;
Restore archivelog all preview;
Restore controlfile preview;

2. Restore…validatecheck logical

检查介质上备份集映像的物理和逻辑损坏,其中Restore…validate检查物理损坏,check logical检查逻辑损坏。

注意以下命令运行会消耗与普通还原等量资源

Restore database validate check logical;
Restore tablespace user validate check logical;
Restore datafile 1 validate check logical;
Restore archivelog all validate check logical;
Restore controlfile validate check logical;

3. Validate命令

Restore database validate逐块检查备份,而validate命令检查备份头,只检查物理损坏,如果同时也想检查逻辑损坏,应该加上check logical选项。

validate命令完成检查后,将填充v$database_block_corruption视图。另外,该命令不会检查块与块之间的损坏。

Validate datafile 3;
Validate tablespace user;
Validate corruption list;
Validate database include current controlfile plus archivelog;
Validate backupset 50;
Validate recover area;

五、 备份保留策略

备份策略是管理备份与副本以及指定它们在备份介质上的保留时间的方法。

分为两种,两种策略是互斥的,感觉类似于FRA可以按空间保留也可以按时间保留:

  • 基于恢复窗口的保留策略
  • 基于冗余数量的保留策略

1. 基于恢复窗口的保留策略

基于想要数据库恢复到的最近日期定制。

对于在NOCATALOG下创建的备份,RMAN的备份集信息都是保存在目标端控制文件中,这部分信息受制于初始化参数:CONTROL_FILE_RECORD_KEEP_TIME。这个参数用来指定记录在控制文件中的最少保存时间,以天为单位,默认为7。

对于基于时间的备份保留策略,一般建议CONTROL_FILE_RECORD_ KEEP_TIME不小于在RMAN中设置的备份保留时间。

Configure retention policy to recovery window of 7 days;

2. 基于冗余数量的保留策略

会从最新备份开始保留x个数据库备份

CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

3. 取消备份保留策略

RMAN> CONFIGURE RETENTION POLICY TO NONE;

4. 更改回默认值

RMAN> CONFIGURE RETENTION POLICY CLEAR;

六、 归档日志保留策略

归档日志删除策略自动应用于FRA中的归档日志。若未使用FRA,可运行list obsolete命令列出根据策略应当删除的文件,运行Delete obsolete命令实际删除。

1. 默认归档保留策略(使用FRA

  • 归档已备份到log_archive_dest_n定义的远程目标

还需满足以下两个条件之一:

  • 至少已在磁盘或磁带上备份过该归档一次
  • 根据FRA建立的备份保留策略,归档日志文件已过时

2. 定义归档保留策略

使用FRA时,可用configure archivelog deletion policy命令配置保留策略。以下两种备份策略如果都配置,需要两个条件都满足时才会删除归档日志。

  • 已向dg库传输或应用归档日志
  • 已在设备上将归档备份了n次

① 已向dg库传输或应用归档日志

这个很常用,为的是避免主库归档还没传到从库就被删除,或者从库归档还没应用就被删除,导致主从中断。但设置之后如果主从同步有问题,主从库归档将都无法自动删除,可能撑爆空间。

-- 主库
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
-- 从库
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED on ALL STANDBY;
  • 包含ALL参数:相应标准将应用于所有备库(12c开始必须设置)
  • 不包含ALL参数:相应标准只应用于所有“MANDATORY的归档日志目标”,即
alter system set log_archive_dest_1 ="LOCATION=c:\orcl1122\guidang1\ mandatory";
-- 设置mandatory后必须归档到指定路径后,redolog才可重用

② 已在设备上将归档备份了n次

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO backed up 2 times to device type disk;

③ 组合策略

-- 主库  日志传送至从库+完成1次备份
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY BACKED UP 1 TIMES TO DISK;

-- 从库  日志完成应用+完成1次备份
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY BACKED UP 1 TIMES TO DISK;

④ 清除归档保留策略

RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;

3. 保留策略的维护

当备份或副本满足保留策略标准而变得过期时会发生什么?这取决于你用的是FRA还是手动备份区。

  • 使用FRA

RMAN最终会基于空间需求(默认80%)从FRA删除备份集片或归档,可通过v$recover_file_dest视图的space_reclaimable列确定过期的备份(可删除的备份)所占用的FRA空间量。

  • 非FRA

可以利用report obsolete;确定rman已将哪些备份标记为过时,并利用delete obsolete;删除,通常需要自己配置删除脚本或使用第三方备份软件控制删除。

七、 Change与Delete命令

1. Change命令

修改为特定备份指定的保存窗口,允许用户修改备份状态。当备份集存储在FRA时,一些change命令将无效。

  • 修改备份为永久保存并保存备份相关的日志,保证总能将备份恢复到当前时间点
change backupset 31 keep forever logs;
  • 设置备份过期的新日期,将备份多保存7天,7天后将删除
change backupset 32 keep until time 'sysdate + 7' logs;
  • 将备份集设置为unavailable,标记为unavailable的备份集不参与crosscheck
change backupset 33 unavailable;
  • 带delete参数的change命令将删除备份集,从备份介质、控制文件或恢复目录中删除。
change backupset 117,118 delete;
change backuppiece 1304 delete;
change archivelog until logseq =544 delete;

2. Delete命令

执行delete命令时,关联的rman备份记录将从控制文件或恢复目录中删除。

可删除基于保留标准被标记为过时的任何备份

Delete expired;
Delete obsolete;

Delete命令默认会要求用户确认删除指令,可使用noprompt选项避免确认

Delete noprompt obsolete;

若未使用FRA,并要物理删除与备份关联的文件,将需要使用force参数

Delete noprompt obsolete force;

使用rman运行脚本

Rman target sys/sys cmdfile=run_backup.cmd
#或者
RMAN>@run_backup.cmd

八、 list与report命令

1. list命令

List命令是一种在控制文件或恢复目录中查询备份历史信息的方法。

  • 列出化身
List incarnation of database;

--ResetSCN和Reset Time列为创建数据库化身的时间
--Status列表示化身状态:
--  PARENT: 旧化身
--  CURRENT: 当前化身,可以看到DB恢复到了哪个时间点
--  ORPHAN: 孤儿化身(在resetlogs命令后又进行了恢复)
  • 列出概要信息
List backup summary;  -- 包含归档备份信息

--KEY: 备份集键
--TY(类型): 备份的类型,B表示备份
--LV(级别):A表示归档备份、F表示全备、0和1表示增备级别
--S(状态):A表示可用、U表示不可用、E表示过期
--Pieces:备份片数目
--Copies:副本数目

List backup of database summary;

List expired backup of archivelog all summary;
  • 按文件类型列出备份
List backup by file;

  • 列出详细备份信息:备份集、镜像备份信息(可能过于详细)
List backup
  • 列出适合恢复的备份
rman>List recoverable backup of database;
  • 列出到期的备份信息
rman>List expired backup;
rman>list expired backup of datafile 3;
rman>list expired backup of archivelog all;
  • 按表空间名和数据文件号列出备份
rman>list backup of tablespace users;
rman>list backup of datafile 3;
  • 列出归档日志备份
rman>list archivelog all;
  • 列出控制文件和服务器参数文件备份
rman>list backup of controlfile;
  • 列出还原点
RMAN> list restore point all;

2. Report命令

用于判断数据库的当前可恢复状态和提供数据库备份的特定信息

  • 报告最近未被备份的数据文件
Report need backup days=1;
  • 报告备份冗余或恢复窗口
Report need backup redundancy=2;
Report need backup recovery window of 2 days;
  • 报告数据文件不可恢复操作
Report unrecoverable;
  • 报告数据库模式
Report schema;
  • 报告过期的备份
Report obsolete;

九、 备份状态及信息查询

1. 主要相关视图

  • V$RMAN_STATUS:查询rman备份状态,可以看见在RMAN里执行的操作,其中最主要的列是OPERATION和status。 

Operation的值有:rman、backup、list、report
Status的值有:running、running with warnings、running with errors、completed、completed with warnings、completed with errors、failed
  • V$RMAN_OUTPUT:查看RMAN的输出,记录RMAN生成的信息。内存中的视图,不会记录到控制文件,最多37278行
  • V$RMAN_BACKUP_JOB_DETAILS:为每个备份提供更详细的信息。 
  • V$SESSION_LONGOPS与V$SESSION:在备份、还原操作期间可查看已运行时间并预估完成时间
  • V$ACTIVE_SESSION_HISTORY:查看rman历史信息,如等待事件等
  • V$BACKUP_ASYNC_IO(更常用)与V$BACKUP_SYNC_IO:查看RMAN异步和同步备份操作详细信息,其中最有用的是type列为"aggregate"的记录中的effective_bytes_per_second列,该列表示备份、恢复对象每秒执行的字节数,应与磁盘读写速率相近,否则应该检查备份进程问题。

2. 常用sql

查看备份失败的记录

SELECT
* 
FROM
    V$RMAN_STATUS 
WHERE
    START_TIME >= TO_DATE ( & START_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND END_TIME <= TO_DATE ( & END_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND OPERATION = 'BACKUP' 
    AND STATUS != 'COMPLETED' 
    AND STATUS NOT LIKE 'RUNNING%';

查看备份成功的记录

SELECT
* 
FROM
    V$RMAN_STATUS 
WHERE
    START_TIME >= TO_DATE ( & START_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND END_TIME <= TO_DATE ( & END_TIME, 'YYYY-MM-DD HH24:MI:SS' ) 
    AND OPERATION = 'BACKUP' 
    AND STATUS = 'COMPLETED';

查看所有备份集详细信息

SELECT
A.RECID "BACKUP SET",
A.SET_STAMP,
DECODE (
B.INCREMENTAL_LEVEL,
'',
DECODE ( BACKUP_TYPE, 'L', 'Archivelog', 'Full' ),
1,
'Incr-1级',
0,
'Incr-0级',
B.INCREMENTAL_LEVEL 
) "Type LV",
B.CONTROLFILE_INCLUDED "包含CTL",
DECODE ( A.STATUS, 'A', 'AVAILABLE', 'D', 'DELETED', 'X', 'EXPIRED', 'ERROR' ) "STATUS",
A.DEVICE_TYPE "Device Type",
A.START_TIME "Start Time",
A.COMPLETION_TIME "Completion Time",
A.ELAPSED_SECONDS "Elapsed Seconds",
A.BYTES / 1024 / 1024 / 1024 "Size(G)",
A.COMPRESSED,
A.TAG "Tag",
A.HANDLE "Path" 
FROM
    GV$BACKUP_PIECE A,
    GV$BACKUP_SET B 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
ORDER BY
    A.COMPLETION_TIME DESC;

查找某个备份集中包含数据文件 

SELECT DISTINCT
c.file #,A.SET_STAMP, D.NAME, C.CHECKPOINT_CHANGE#, C.CHECKPOINT_TIME
FROM
    V$BACKUP_DATAFILE C,
    V$BACKUP_PIECE A,
    V$DATAFILE D 
WHERE
    A.SET_STAMP = C.SET_STAMP 
    AND D.FILE # = C.FILE#
    AND A.DELETED = 'NO' 
    AND c.set_stamp =& set_stamp 
ORDER BY
    C.FILE #;

查询某个备份集中控制文件 

SELECT DISTINCT
    A.SET_STAMP,
    D.NAME,
    C.CHECKPOINT_CHANGE #,
    C.CHECKPOINT_TIME 
FROM
    V$BACKUP_DATAFILE C,
    V$BACKUP_PIECE A,
    V$CONTROLFILE D 
WHERE
    A.SET_STAMP = C.SET_STAMP 
    AND C.FILE # = 0
    AND A.DELETED = 'NO' 
    AND C.SET_STAMP = & SET_STAMP;

查看某个备份集中归档日志

SELECT DISTINCT
B.SET_STAMP,
B.THREAD #,
B.SEQUENCE #,
B.FIRST_TIME,
B.FIRST_CHANGE #,
B.NEXT_TIME,
B.NEXT_CHANGE #
FROM
    V$BACKUP_REDOLOG B,
    V$BACKUP_PIECE A 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
    AND B.SET_STAMP = & SET_STAMP 
ORDER BY
    THREAD #, SEQUENCE#;

查看某个备份集 SPFILE 

SELECT DISTINCT
    A.SET_STAMP,
    B.COMPLETION_TIME,
    HANDLE 
FROM
    V$BACKUP_SPFILE B,
    V$BACKUP_PIECE A 
WHERE
    A.SET_STAMP = B.SET_STAMP 
    AND A.DELETED = 'NO' 
    AND B.SET_STAMP = & SET_STAMP;

查看 RMAN的配置信息

SELECT NAME,VALUE FROM V$RMAN_CONFIGURATION;

查询30天内RMAN备份的详细情况

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,
       INPUT_BYTES_PER_SEC_DISPLAY in_sec,
       OUTPUT_BYTES_PER_SEC_DISPLAY out_sec,
       COMPRESSION_RATIO,
       INPUT_BYTES_DISPLAY in_size,
       OUTPUT_BYTES_DISPLAY out_size                   
FROM V$RMAN_BACKUP_JOB_DETAILS
where start_time>=sysdate-30;

查询rman备份进度及预估剩余时间

select inst_id,sid,serial#,opname,COMPLETE,
trunc(((to_char(last_update_time,'dd')-to_char(start_time,'dd'))*60*24+(to_char(last_update_time,'hh24')-to_char(start_time,'hh24'))*60 +(to_char(last_update_time,'mi')-to_char(start_time,'mi')))*(100-complete)/complete) min from
(
SELECT inst_id,
sid,
serial#,
opname,
ROUND(SOFAR / TOTALWORK * 100, 2) COMPLETE,
LAST_UPDATE_TIME,
START_TIME
FROM gV$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
--AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR <> TOTALWORK
) t;

查看各文件备份时间及速率

SELECT device_type device,TYPE,filename,
to_char(open_time,'yyyymmdd hh24:mi:ss') OPEN,
to_char(close_time,'yyyymmdd hh24:mi:ss') CLOSE,
elapsed_time elapse,effective_bytes_per_second e_bytes
FROM v$backup_async_io
WHERE close_time>SYSDATE-1
ORDER BY close_time

查看各文件备份IO及长等待比率

SELECT filename,ready,short_waits,long_waits,io_count,long_waits/io_count,
FROM v$backup_async_io
  • IO_COUNT:IO总数 
  • READY:buffer立即可用的异步IO调用数
  • SHORT_WAITS:请求buffer但不能立即获得,经过简短的非阻塞方式轮询后变为可用的次数
  • LONG_WAITS:请求buffer不能获得,需经过阻塞等待,等待IO设备的次数。应该重点关注,LONG_WAITS/IO_COUNT比较高时表明IO方式存在瓶颈

参考:《Oracle RMAN备份与恢复》

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...