Parallel archive log backups
Updated over a week ago

Enterprise Workloads Editions: ✅ Business | ✅ Enterprise | ✅ Elite

Overview

During a full backup, the backup of datafiles can take longer to complete if the database is large. During this time, archive logs are not backed up. Also, if the full backup job fails, the next incremental job is converted to full and archived logs are not backed up till we have a successful full backup. This in turn can impact your organization’s RTO and RPO.
To address this, you can now take archive log backups in parallel to your full backup. To enable parallel backups, contact Support.
While taking full backups, you can encounter the following 2 scenarios:

Scenario

Behavior

Full backup is successful

  • RP is committed.

  • The RP is available for automated recovery from the console.

Full backup fails

A non-auto recoverable RP is committed. This RP is available only for manual restore from the console. For more information, see Restore the non-auto recoverable RP.

Key Considerations

  • You must have client version 6.1.1-356193 to be able to take parallel backups.

  • You must have archive logs scheduled to be able to take parallel backups.

  • We currently do not support parallel backups for incremental backups.

  • Parallel backups are not supported for RAC database.

  • The non-auto recoverable RP is available for manual restore only.

Restore the non-auto recoverable RP

Suppose your full parallel backup is in progress and the backup job fails. In this case, a RP is created and committed. However, this RP will not be automatically recoverable. You can recover this RP manually only by downloading the files.


📝 Note
For recovery of the non-auto recoverable RP, a base RP must be available. A base RP is created from the last successful full or incremental backup.


Perform the following steps to recover this RP manually:

  1. On the Restore wizard, select the non-auto recoverable RP and then select the “Restore database files” option.

    Restorescreen.png
  2. Select the destination server, provide the restore location, and click Next.
    Files will be downloaded on the destination server at the specified location.

  3. Bring the database to the nomount state by running the following command:
    shutdown abort;

    startup nomount;

  4. Restore the control file by using the following command:

    ​run { allocate channel ch0 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; restore primary controlfile from '<control_file_name>'; }

    For example:​
    run { allocate channel ch0 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; restore primary controlfile from 'Phx_DN-PRIM_DBID-138702298_DT-20230710-125419_s720t3eg_1_1_CF'; }

  5. Bring the database to mount state by running the following command:
    alter database mount;

  6. Delete the backup pieces with tag for the data files from the full backup job that has failed. Identify the tag by running the following command:
    list backup summary;

  7. Delete the backup pieces by running the following command:

    ​run { allocate channel ch0 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; crosscheck backup; delete noprompt backup tag='<tag_ids_for_datafile_backup_pieces>'; }

    For example:
    run { allocate channel ch0 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; crosscheck backup; delete noprompt backup tag='66_0'; }

  8. Check the database incarnation in the metadata.json file and if it does not match with the current incarnation, reset the database to incarnation specified in metadata.json by running the following command:

    set database to incarnation <from metadata.json>

  9. Restore and recover database by running the following command:

    'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; allocate channel ch1 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; allocate channel ch2 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; allocate channel ch3 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=)'; crosscheck backup; set until time="to_date('','ddmmyyyy hh24:mi:ss')"; restore database; recover database; }
    For example:
    'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; allocate channel ch1 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; allocate channel ch2 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; allocate channel ch3 device type sbt PARMS 'SBT_LIBRARY=/opt/Druva/PhoenixOracle/lib/libphxsbt.so (for agent version 6.x or earlier) or SBT_LIBRARY=/opt/Druva/EnterpriseWorkloads/lib/oracledtc/libphxsbt.so (for agent version 7.x or later),SBT_PARMS=(RestoreFromLocalDir=/home/oracle/backup3/Mon-Jul-10-12-56-09-2023/68/)'; crosscheck backup; set until time="to_date('10072023 07:54:38','ddmmyyyy hh24:mi:ss')"; restore database; recover database; }



    📝 Note
    For PIT restore, in the above run command, after the crosscheck backup command add:set until time="to_date('restore_date_time','ddmmyyyy hh24:mi:ss')";For example,set until time="to_date('10072023 07:54:38','ddmmyyyy hh24:mi:ss')";


  10. Open the database using the following command:
    alter database open resetlogs;
    You can view the progress of the parallel backup job in the progress logs as shown in the following screenshot:

image (9).png
Did this answer your question?