How does RMAN perform corruption detection?
Corruption detection is actually performed by the Oracle server. RMAN does NOT perform the backup, but just directs the server to backup a specified list of datafiles. During backup, the Oracle server detects certain types of corruptions. Many of the verification checks that are performed when a block is read into the buffer cache are also performed by a server process performing a backup. Some types of corruptions cannot be detected because the exact structure of table/index block distribution in the database object is unknown; this can happen during a closed database backup, as the server process is unavailable. If a block is detected as newly corrupted, it will be identified as such in the alert log and also in the database controlfile. You can view this information by querying the V$COPY_CORRUPTION or V$BACKUP_CORRUPTION views. If a block was already detected as corrupted by the server, then the block will not be identified in the same way as a newly corrupted block.
Note it is NOT RMAN that performs the backup, it is the Oracle server. RMAN just directs the server to backup a specified list of datafiles. During backup, the oracle server detect certain types of corruptions. Many of the verification checks that are performed when a block is read into the buffer cache are also performed by a server process performing a backup. Some types of corruptions cannot be detected unless the exact structure of the table/index the object belongs to is known – this information is not known by the backup server process (especially considering the database can be backed up while it is closed). If a block is detected as newly corrupt, it will be identified in the alert log and also in that database’s controlfile. You can view this information by querying the views v$copy_corruption or v$backup_corruption. If a block has already been detected as corrupt by the server, the block will not be identified in the same way as a new corrupt block.