How to enable/disable block tracking for RMAN?

Using block tracking one can improve performance of the backup time of incremental backup from hours to minutes depending on size of database as it no longer needs to scan blocks in datafiles to find blocks changed it can use the block tracking file to identify changed blocks for incremental backup. Enabling this starts a new background process called Change Tracking Writer (CTWR) which manages this file.

Here are the steps to enable block tracking:
— Note if the file already exists the command will fail unless the REUSE option is used so first check if block tracking is not enabled before overwriting the file.

— if it returns DISABLED it means block tracking is off
SQL> SELECT distinct status from V$BLOCK_CHANGE_TRACKING;

STATUS
———-
DISABLED

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ‘/u04/oradata/TEST/rman_block_tracking.f’;

Database altered.

— indicating block tracking is enabled and the find the block tracking file
SQL> select status, filename from V$BLOCK_CHANGE_TRACKING;

STATUS
———-
FILENAME
——————————————————————————–
ENABLED
/u04/oradata/TEST/rman_block_tracking.f’

After block tracking file is created you would need to do level 0 backup to ensure the next incremental backup uses the block tracking file.

RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;

The subsequent incremental backup (differential/cumulative) would use the block change tracking file to identify the changes that need to be backed up.
— For differential incremental backup, this will backup blocks since last last level 0 or level 1 which ever is latter.
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;

— For cumulative incremental backups, this will backup all blocks changed since level 0 backup
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

To disable block tracking:
Note: Disabling the block tracking will delete the block tracking file
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

SQL> !ls -l /u04/oradata/TEST/rman_block_tracking.f
ls: /u04/oradata/TEST/rman_block_tracking.f: No such file or directory

Shows the process that are using the file, and when RMAN is running it will have handles on the file when running incremental backup.
$ fuser /u04/oradata/TEST/rman_block_tracking.f
/u04/oradata/TEST/rman_block_tracking.f: 9597302
oracle 9597302 1 0 13:29:41 – 0:31 ora_ctwr_TEST

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s