Dataguard Protection Levels

It seems like there is still a lot of confusion out there regarding the different levels of protection you can use in your dataguard setup, it’s all available in the documentation of course but it seems, particularly on the Oracle forums, that no one reads these! There are 3 different protection levels:

  • Maximum Protection
  • Maximum Availability
  • Maximum Performance

The default is Maximum Performance. There are 3 ways of shipping redo data to a physical standby:

  • LGWR SYNC
  • LGWR ASYNC
  • ARCH

You must use LGWR SYNC if you use either Maximum Protection OR Maximum Availability. This will have the bigest impact on the primary database by slowing down commit time as the change has to be sent to the standby before the commit can be confirmed. The difference between Protection and Availability is that in Maximum Protection the primary database will shutdown if the standby is uncontactable. In the case of Maximum Availability this will not be case the primary will continue but the protection_level (in V$database) will be shown as resynchronization until the standby is contactable and the archive gaps are resolved. The other requirement is the use of Standby Redo Logs on the standby to run in both Maximum Protection & Availability modes.

Maximum Performance has minimal impact on the primary database and can be used over wide areas and slow networks. Using LGWR ASYNC has the potential to have the standby very up-to-date, but still leaving a few seconds of data loss in the event of disaster. You don’t have to use Standby Redo Logs in Maximum Performance mode, but it is recomended. They are mandatory for running the recovery process in Real time apply. I would not advise using ARCH transfer for a Business Continuity solution.

To change the protection modes use the following:

  1. Ensure the standby is UP (if you want maximum protection)
  2. set the log_archive_dest_# you are using to the use the appropriate transport mechanism (LGWR SYNC/ASYNC or ARCH)
  3. alter database set standby database to maximize {AVAILABILITY | PERFORMANCE | PROTECTION};

select protection_mode, protection_level from v$database;

PROTECTION_MODE PROTECTION_LEVEL
——————– ——————–
MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

Note to decrease your protection level you may have to have the primary in the mount state.

Advertisements

3 thoughts on “Dataguard Protection Levels

  1. Hi Jason,

    Very simple,nice and clear blog.I had a question.Does the protection_level change to “RESYNCHRONIZATION” mode for maximum performance if the standby is non contactable or the archive gaps is there?

    Regards,
    Anand

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