rman命令详解(三)
1. Report 命令
用户判断数据库的当前可恢复状态和提供数据库备份的特定信息
1.1 指定最近没有备份的数据文件
查询3天内没有备份过的表空间,可以用如下命令:
RMAN> report need backup days=3;
1.2 报告备份冗余或恢复窗口
可以用report need backup redundancy 命令来确定为满足备份冗余策略而需要备份的数据文件。
RMAN> report need backup redundancy =4;
RMAN> report need backup recovery window of 2 days;
1.3 报告数据文件的不可用恢复操作
如果对于表空间中对象和组成这些表空间的数据文件执行了某些不可恢复操作,那么会导致在恢复的时候出现异常,我们可以用report查看这些不可用的对象。
RMAN> report unrecoverable;
1.4 报告数据库模式(Schema)
这里的Schema指的是数据库的物理结构,包括数据文件名,数据文件号,为这些数据文件指派的表空间,数据文件的大小,以及数据文件是否含有回滚段。
RMAN> report schema;
2. Validate
2.1 效验所有的数据文件和控制文件,如果使用spfile 文件,也会效验。
RMAN> VALIDATE DATABASE; (11g 新特性)
2.2 验证某一个备份集
RMAN> validate backupset 8;
2.3 validate 某一个数据块
RMAN> VALIDATE DATAFILE 1 BLOCK 10;
3. BACKUP ... VALIDATE
backup…validate 命令做如下的效验:
(1) 检查数据文件是否存在物理或者逻辑的坏块
(2) 检查所有的数据文件是否都存在,并且存在正确的位置。
当运行backup validate时,RMAN 会按照正常的备份来读取所有的数据文件。 但是RMAN 不会产生任何的backup sets 和 image copy。
当我们使用backup validate时,不能使用backupset,maxcorrupt,proxy参数。如果想要效验某个指定的备份集,可以使用我们之前讲的validate命令。
3.1如果我们想要效验所有的数据文件和归档日志,可以运行如下命令: ( 只效验物理的损坏 )
RMAN>backup validate database archivelog all;
3.2 既效验物理的损坏,又效验逻辑的坏块
(注意: 如果加上了archivelog all,就必须要有归档文件存在,如果没有归档文件,会报如下错误:rman-20242、rman-03002 )
RMAN>backup validate check logical database archivelog all;
4. List
4.1 查看 backupset 的编号
RMAN> list backup summary;
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
36 B 0 A DISK 11-JUL-13 1 1 NO ORA11GR2_LEVEL0
37 B 0 A DISK 11-JUL-13 1 1 NO ORA11GR2_LEVEL0
39 B A A DISK 11-JUL-13 1 1 NO ARC_BAK
43 B F A DISK 11-JUL-13 1 1 NO TAG20130711T203435
KEY(关键字): 表示备份集序列号
TY(类型)和LV列表示列的备份类型:
B[Backup] 表示备份
F[Full] 表示完全备份
A[Archivelog]
0和1 表示增量备份[Incremental backup]
S 列说明备份的状态: A 表示Available,X 表示Expired.
Device Type: 说明备份的设备是磁带还是磁盘
4.2 按备份类型列出备份
列出数据文件备份,归档日志备份,控制文件和spfile文件备份列出备份信息。
RMAN> list backup by file;
RMAN> list backup of controlfile;
RMAN> list backup of spfile;
4.3 列出到期的备份
RMAN> list expired backup;
RMAN> list expired backup of archivelog all;
4.4 按表空间名和数据文件号列出备份
RMAN> list backup of tablespace users;
RMAN> list backup of datafile 3;
4.5 列出归档日志备份
4.5.1 查看当前存在的归档日志(并不意味着它们已经备份)
RMAN> list archivelog all;
4.5.2 列出归档日志备份
RMAN> list backup of archivelog all;
4.5.2 列出备份中过期的归档
RMAN> list expired backup of archivelog all;
设定时间或日志序列号来限制报告中显示的内容,如:
RMAN> list expired backup of archivelog until sequence 3;
RMAN> list expired backup of archivelog until time "to_date('2013-4-1','yyyy-mm-dd')";
4.6 列出incarnation
RMAN> list incarnation;
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 ORCL 1388303183 PARENT 1 15-AUG-09
2 2 ORCL 1388303183 PARENT 945184 09-OCT-14
3 3 ORCL 1388303183 ORPHAN 2000932 11-DEC-14
。。。
7 7 ORCL 1388303183 CURRENT 3450137 12-MAR-15
Status 列:该列列出的是incarnation的状态 (下面是几个状态值的含义)
Parent:表明对应物是非当前的incarnation
Current:当前的incarnation
ORPHAN:孤立的incarnation, 即在resetlogs命令之后进行恢复
重置SCN(Reset SCN)和重置时间(Reset Time):
说明创建数据库incarnation的时间,这也是第一个条目的Reset SCN为1的原因。 该列对使用resetlogs命令进行恢复有用,并使得能较容易的恢复到前面的incarnation。
注意一点:
使用恢复目录和不使用恢复目录这里的输出在Inc Key 上有差异。
5. crosscheck
5.1检查备份集和实际的文件
备份集有两种状态:
A(Available,RMAN认为该项存在于备份介质上),
X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)
说明:当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel。备份策略不会删除过期的备份集,可以使用report obsolete命令查看过期的备份,delete obsolete 命令删除过期的备份。
5.2 交叉验证归档日志示例:
RMAN> crosscheck archivelog all;
补充:假如我们在oracle数据库在迁移当中不小心丢失了一个归档文件, 此时RMAN 会因为缺少归档日志而不能完成备份
解决方法,执行下面2条命令即可: (原理是datafiles都存在,而归档都是记录已经commit的事务,所以数据库是一致的)
RMAN>crosscheck archivelog all; -- 检查控制文件和实际物理文件的差别
RMAN>delete expired archivelog all; -- 同步控制文件的信息和实际物理文件的信息
6. delete
Rman备份中obsolete和expired的区别
obsolete:与retention policy相关,当备份或者副本根据保存策略而被丢弃的时候,就会被标记为该状态。
expired:使用crosscheck对备份进行校验,当备份或者副本被存储在rman目录中,但是并没有物理存在于备份介质上时,就会被标记为该状态;在操作系统层删除备份集后,用crosscheck 检测后就标志为X(expired)。通常指丢失(被删除)的备份。
Delete expired;
Delete obsolete;
7. RESTORE…VALIDATE
RESTORE…VALIDATE命令可以效验备份集中的某个特殊的datafile 或者backupset 能否用来进行restore操作。
必须在数据库mounted 状态或者open状态才可以使用该命令。 当我们效验数据文件时,不需要将datafiles offline。 因为我们效验数据文件时,仅仅从备份集中读取,不会影响生产环境中的数据文件。当我们效验的文件存在磁盘或者磁带上, RMAN 会读取备份片或者image copy中的所有blocks, 以验证这些备份片能否用来进行一个真实的restore操作。
7.1 效验整个数据库和所有归档的命令:
restore controlfile validate;
restore spfile validate;
RESTORE DATABASE VALIDATE;
RESTORE ARCHIVELOG ALL VALIDATE;
--如果出现类似如下的错误,就表示这个备份集不能够用来进行恢复:
RMAN-06026: some targets not found - aborting restore
The following sample output shows that RMAN encountered a problem reading the specified backup:
RMAN-03009: failure of restore command on c1 channel at 12-DEC-06 23:22:30
ORA-19505: failed to identify file "oracle/dbs/1fafv9gl_1_1"
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
7.2 验证spfile 有效性
RMAN> restore spfile validate;
7.3 验证控制文件
RMAN> restore controlfile validate;
7.4 验证归档有效性
RMAN> restore archivelog all validate;
7.5 单独效验某些归档文件:
RMAN> restore archivelog sequence 54 validate;
8 change
Change 命令允许用户修改备份集的状态。我们可能会遇到备份介质设备在某个时间段中无效的情况(如突然断电)。这时,我们就可以使用change 命令来指示这个设备上的备份是不可用的。解决硬件故障和修复磁盘后,可以再次执行change 命令,将备份改为可用的状态。
也可以将备份修改为不可用的状态。在还原和恢复操作期间,不会考虑哪些不可用的备份,但在执行delete expired命令期间这些备份记录不会被删除。
RMAN> list backup summary;
RMAN> Change backupset 16 unavailable;
RMAN> list backup summary;
RMAN> Change backupset 16 available;