Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2) Part Number B14191-02 |
|
|
View PDF |
The database prevents operations that result in unusable backup files or corrupt restored datafiles. The database server automatically does the following:
Blocks access to datafiles while they are being restored or recovered
Allows only one restore operation for each datafile at a time
Ensures that incremental backups are applied in the correct order
Stores information in backup files to allow detection of corruption
You can use the BACKUP
VALIDATE
and RESTORE
VALIDATE
commands to test backup and restore operations without creating output files. In this way, you can check your datafiles for possible problems. If you run RMAN with the following configuration, then it detects all types of corruption that are possible to detect:
In the initialization parameter file, set DB_BLOCK_CHECKSUM=TRUE
In the RMAN BACKUP
and RESTORE
commands, do not specify the MAXCORRUPT
option, do not specify the NOCHECKSUM
option, but do specify the CHECK
LOGICAL
option
See Oracle Database Backup and Recovery Basics for more details on BACKUP VALIDATE
and RESTORE VALIDATE
.
RMAN depends upon database server sessions to perform backups, and the database server can detect many types of physically corrupt blocks during the backup process. Each new corrupt block not previously encountered in a backup is recorded in the control file and in the alert.log
. By default, error checking for physical corruption is enabled.
At the end of a backup, RMAN stores the corruption information in the recovery catalog and control file. Access this data using the V$DATABASE_BLOCK_CORRUPTION
view.
If the server session encounters a datafile block during a backup that has already been identified as corrupt by the database, then the server session copies the corrupt block into the backup and the corrupt block is recorded the control file as either a logical or media corruption. RMAN copies the block in case the user wants to try to salvage the contents of the block.
If RMAN encounters a datafile block that has media corruption but that has not already been identified as corrupt by the database, then it writes the block to the backup with a reformatted header indicating that the block has media corruption.
Besides testing for media corruption, the database can also test data and index blocks for logical corruption, such as corruption of a row piece or index entry. If RMAN finds logical corruption, then it logs the block in the alert.log. If CHECK LOGICAL
was used, the block is also logged in the server session trace file. By default, error checking for logical corruption is disabled.
For BACKUP
commands the MAXCORRUPT
parameter sets the total number of physical and logical corruptions permitted in a file. If the sum of physical and logical corruptions for a file is less than its MAXCORRUPT
setting, the RMAN command completes successfully. If MAXCORRUPT
is exceeded, the command terminates and RMAN does not read the rest of the file. V$DATABASE_BLOCK_CORRUPTION
is populated with corrupt block ranges if the command succeeds. Otherwise, you must set MAXCORRUPT
higher and re-run the backup to find out the corrupt block ranges.
One danger in making online backups is the possibility of inconsistent data within a block. For example, assume that you are backing up block 100 in datafile users.dbf
. Also, assume that the copy utility reads the entire block while DBWR is in the middle of updating the block. In this case, the copy utility may read the old data in the top half of the block and the new data in the bottom top half of the block. The result is called a fractured block, meaning that the data contained in this block is not consistent. at a given SCN.
When performing backups of an open tablespace without using RMAN, you must put tablespaces in backup mode to prevent the creation of fractured blocks in your backup. When not in backup mode, the database records only changed bytes in the redo stream. When a tablespace is in backup mode, each time a block is changed the datbase writes the before-image ofthe entire block to the redo stream before modifying the block. Then, the database also records the changes to the block in the redo log. During user-managed recovery using SQL*Plus, the database applies both the captured block images and the recorded block changes from the redo logs. Applying the block images repairs any possible fractured blocks in the backup being restored and recovered.
RMAN does not require that you put datafiles into backup mode. During an RMAN backup, a database server session reads each block of the datafile and checks whether each block is fractured by comparing the block header and footer. If a block is fractured, the session re-reads the block. If the same fracture is found, then the block is considered permanently corrupt. If MAXCORRUPT
is exceeded, the backup stops.
You can run the BACKUP
...
VALIDATE
command to check datafiles for physical and logical corruption, or to confirm that all database files exist in the correct locations. No backup is taken, but all specified files are scanned to verify that they can be backed up. All corruptions are recorded in theV$DATABASE_BLOCK_CORRUPTION
view.
The following example shows how to check your entire database and archived redo log files for physical and logical corruption:
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
You cannot use the MAXCORRUPT
or PROXY
parameters with the VALIDATE
option.
See Also:
Oracle Database Backup and Recovery Reference forBACKUP
syntax and "Validating Backups with RMAN" for more details on using BACKUP VALIDATE
.