Monday, 28 May 2018

RMAN Block Change Tracking and it's Limitations - Oracle Database

What is Block Change Tracking and How to enable it?

What is Block Change Tracking? How to Configure Block Change Tracking? Limitations of the information provided in Block Change Tracking

Block Change Tracking

Block Change Tracking is the mechanism of keeping the track of Data Block changes happening inside a database. Once ENABLED, it helps in improving the incremental backup performance. The Block Change information is stored inside a FILE which keeps tracks of the changes made to the DATA BLOCKS so that instead of scanning all DATA BLOCKS, Oracle (RMAN) can simply read the info from this FILE and proceed with its work.

How to Configure Block Change Tracking?

Please follow the below mentioned steps if you wish to configured Block Change Tracking within your Oracle Database.

1) Check for current Block Change Tracking Status.

Connected to:
Oracle Database 12c Enterprise Edition Release - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

 Name    Null?    Type
 ----------------------------------------- -------- ----------------------------

SQL> set lines 100 pages 500
SQL> col FILENAME for a40;

STATUS    FILENAME     BYTES/1024/1024
---------- ---------------------------------------- ---------------


2) You can Start the Block Change Tracking at Database MOUNT or OPEN state. Since I have it DISABLED at the moment. Let's connect to RMAN to ENABLE the same.

[oracle@practice ~]$ rman target /

Recovery Manager: Release - Production on Mon May 28 20:33:42 2018

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORADB12C (DBID=3836283445)

RMAN> select name from V$DATAFILE;

using target database control file instead of recovery catalog


RMAN> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle/oradata/';

Statement processed

RMAN> alter database ENABLE block change tracking;

Statement processed

Note: When you modify DB_CREATE_FILE_DEST parameter, it configures the default path for a database to add a new DB file. That means after you define this parameter, the new database files will be added to this path by default. Also the BLOCK CHANGE TRACKING FILE will be created in the defined path only. You don't need to specify the directory named as SID as it will be automatically created.

3) Verify the creation of Block Change Tracking File now,


STATUS    FILENAME     BYTES/1024/1024
---------- ---------------------------------------- ---------------
ENABLED    /u01/app/oracle/oradata/ORADB12C/changet     11.0625

Limitations of Block Change Tracking

The change tracking file maintains bitmaps that show us the change in the Data Blocks between backups. Now a Block Change Tracking file can hold information for maximum 8 bitmaps and once the change for 8 bitmaps has been recorded, it again starts from the 1st bitmap and overwrites the same for the next change record. That's a big problem. For example,

If you have taken a Incremental Level 0 Backup at the beginning and it is followed by 7 incremental Level 1 backups, then you must go for an incremental Level 0 again or if you go for any other Incremental Level 1 (Differential/Cummulative) then it will overwrite the Level 0 bitmap change record resulting in RMAN Backup optimization failure.

I Hope this helps !!

No comments:

Post a comment