RMAN_逻辑坏块物理坏块_块间损坏块内损坏_VALIDATE/recover检查和修复坏块

逻辑坏块的理解:就是内容错乱了,文件没有任何问题,例如dbwr告诉操作系统IO要写1234,但是IO出现问题导致写成了0000。
DATAGUARD环境下主库有逻辑坏块,备库不会同时生成逻辑坏块,IO是操作系统层面的独立于数据库,因为主库的IO出了问题不代表备库的IO也出问题


数据块损坏类型官方文档 https://docs.oracle.com/database/121/BRADV/glossary.htm#BRADV526

块损坏可分为块间损坏和块内损坏。在块内损坏中,块本身发生损坏,可以是物理损坏也可以是逻辑损坏。在块间损坏中,块与块之间发生的损坏只能是逻辑损坏。VALIDATE 命令只检查块内损坏。


interblock corruption:块间损坏(只包含逻辑坏块)

A type of block corruption in which the corruption occurs between blocks rather than within the block itself. This type of corruption can only be logical corruption.
intrablock corruption:块内损坏(包含物理坏块和逻辑坏块)

A type of block corruption in which the corruption occurs within the block itself. this type of corruption can be either a physical corruption or logical corruption.


VALIDATE官方文档 https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063

VALIDATE主要有以下三者模式

VALIDATE

BACKUP ... VALIDATE

RESTORE ... VALIDATE

VALIDATE 命令支持对单个备份集和数据块进行验证。在物理损坏中,数据库根本无法识别块。在逻辑损坏中,块的内容在逻辑上不一致。

VALIDATE 命令默认只检查物理损坏。也可以指定CHECK LOGICAL 检查物理损坏的同时检查逻辑损坏。VALIDATE 命令只检查块内损坏。


In BACKUP and RESTORE commands, specify the CHECK LOGICAL option so that RMAN checks for logical and physical corruption


RMAN> VALIDATE DATABASE;--只检查物理坏块,只做检查动作

RMAN> VALIDATE CHECK LOGICAL DATABASE;--检查物理坏块和逻辑坏块,只做检查动作


RMAN> BACKUP VALIDATE DATABASE;--只检查物理坏块,只检查不备份

RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;--检查物理坏块和逻辑坏块,只检查不备份


RMAN> BACKUP DATABASE;--没有VILIDATE,表示做备份的动作,备份的同时只检查物理坏块,RMAN备份时默认只检查物理坏块

RMAN> BACKUP CHECK LOGICAL DATABASE;--没有VILIDATE,表示做备份的动作,备份的同时检查物理坏块和逻辑坏块


RMAN> RESTORE VALIDATE DATABASE;--只检查物理坏块,只检查不还原

RMAN> RESTORE VALIDATE CHECK LOGICAL DATABASE;--检查物理坏块和逻辑坏块,只检查不还原


RMAN> VALIDATE DATABASE;--验证整个数据库

RMAN> VALIDATE BACKUPSET 22;--验证某个备份文件

RMAN> VALIDATE TABLESPACE USERS;--验证某个表空间

RMAN> VALIDATE DATAFILE 1;--验证某个数据文件

RMAN> VALIDATE DATAFILE 1 BLOCK 10;--验证某个数据文件中的某个块



RESTORE VALIDATE纯粹的检查备份文件


RMAN> RESTORE VALIDATE DATABASE;--只检查物理坏块,推荐使用这个命令,只检查不还原,因为RESTORE VALIDATE可以模糊匹配后面跟什么参数。
RMAN> RESTORE DATABASE VALIDATE;--只检查物理坏块,和上面效果一样

RMAN> RESTORE VALIDATE CHECK LOGICAL DATABASE;--检查物理坏块和逻辑坏块,只检查不还原
RMAN> RESTORE ARCHIVELOG ALL VALIDATE;--检查归档日志文件




Recover无法修复物理坏块
RMAN> recover datafile 1 block 5;--修复某个具体的逻辑坏块
RMAN> recover corruption list;--修复所有记录在V$DATABASE_BLOCK_CORRUPTION中的逻辑坏块
recover all blocks logged in V$DATABASE_BLOCK_CORRUPTION

V$DATABASE_BLOCK_CORRUPTION displays information about database blocks that were corrupted after the last backup.
V$DATABASE_BLOCK_CORRUPTION view records intrablock corruptions
个人疑惑:rman备份默认检查物理坏块,所以貌似感觉recover corruption list没啥大用啊


V$RMAN_BACKUP_JOB_DETAILS可以看出rman是否成功
select * from V$RMAN_BACKUP_JOB_DETAILS where status='FAILED'

请使用浏览器的分享功能分享到微信等