Skip to main content

Data Pump Bundle Patch

Overview and complete installation walkthrough with examples for 19c and 23ai databases.

Introduction​

As a best practice when working with Data Pump, the Data Pump Bundle Patch (DPBP) should be installed on top of the Database Release Update (DBRU). The DPBP contains numerous bug fixes as well as performance enhancements that can significantly improve Data Pump operations.

Support Notes​

The patch can be downloaded from the following support notes:

Installation​

The patch can be applied online but no active Data Pump jobs should be running. There is no need to shutdown the databases and services running in the affected Oracle Home.

The patch is non-binary which means it does not change any files in the Oracle Home that would require a new compilation of the Oracle binaries.

info

Make sure there are no Data Pump jobs running during the Data Pump Bundle Patch installation!

tip

Use the DBA_DATAPUMP_JOBS or CDB_DATAPUMP_JOBS (for the whole container) views to check for any running Data Pump jobs.

RAC​

The DPBP is non-RAC rolling installable. This means the opatch apply must be executed on every RAC node with the -local option to patch the Oracle Home.

Example: 19c​

This is an example that shows how to install the Data Pump Bundle Patch on top of a 19c Linux database with the 19.25 Release Update.

Run the following tasks as oracle user. Make sure the environment is set to the correct database and Oracle Home.

1. Check Version​

Get the exact version of the database by checking the opatch lspatches and sqlpatch registry outputs:

  • Check applied patches for Oracle Home:

    $ORACLE_HOME/OPatch/opatch lspatches
    Output
    ...
    36912597;Database Release Update : 19.25.0.0.241015 (36912597)
    ...

    The DBRU 19.25 is installed in this Oracle Home.

  • Check patches applied in the container and pluggable databases: (For a non CDB database use dba_registry_sqlpatch)

    col status format a10;
    col action format a10;
    col description format a55;
    set lines 100;

    SELECT DISTINCT patch_id, patch_type, action, status, description FROM cdb_registry_sqlpatch where patch_type='RU';
    Output
      PATCH_ID PATCH_TYPE ACTION	 STATUS     DESCRIPTION
    ---------- ---------- ---------- ---------- -------------------------------------------------------
    36912597 RU APPLY SUCCESS Database Release Update : 19.25.0.0.241015 (36912597)
  • Show version for running instances:

    SELECT DISTINCT version_full FROM gv$instance;
    Output
    VERSION_FULL
    -----------------
    19.25.0.0.0

2. Download Patch​

Download the patch from the support note.

info

Make sure to download the version that matches the exact version of your Database Release Update (DBRU) and download the correct platform (Windows/Other platforms).

In this example we are downloading patch 37056207 for 19.25 on linux platforms:

Screenshot of 19c patch selection page

3. Copy and Extract​

  • Create a new directory on the database server:

    mkdir DPBP1925
  • Copy the downloaded patch zip file to that directory and unzip it:

    unzip p37056207_1925000DBRU_Generic.zip

4. Check Prerequisites​

  • View the Patch README and check the prerequisites.

  • Run opatch with the prereq option to check for any conflicts:

    cd 37056207
    $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
    Output
    ...

    Invoking prereq "checkconflictagainstohwithdetail"

    Prereq "checkConflictAgainstOHWithDetail" passed.

    OPatch succeeded.

5. Check for running jobs​

Run the following query to check if any Data Pump jobs are running in state EXECUTING on any database in the container: (For a non CDB database use dba_datapump_jobs)

col owner_name format a15;
col job_name format a15;
col job_name format a25;
col operation format a15;
col job_mode format a15;
col state format a15;
set lines 100;

SELECT owner_name, job_name, operation, job_mode, state, con_id FROM cdb_datapump_jobs;

6. Run Opatch​

Run opatch apply to patch the Oracle Home:

$ORACLE_HOME/OPatch/opatch apply -local
Output
Oracle Interim Patch Installer version 12.2.0.1.44
Copyright (c) 2025, Oracle Corporation. All rights reserved.


Oracle Home : /u01/app/oracle/product/19c/dbhome_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.44
OUI version : 12.2.0.7.0
Log file location : /u01/app/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2025-03-13_17-29-36PM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 37056207

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Backing up files...
Applying interim patch '37056207' to OH '/u01/app/oracle/product/19c/dbhome_1'

Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...

Patching component oracle.rdbms, 19.0.0.0.0...
Patch 37056207 successfully applied.
Log file location: /u01/app/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2025-03-13_17-29-36PM_1.log

OPatch succeeded.

7. Verify Opatch​

Check output of opatch lspatches and confirm that the patch was applied:

$ORACLE_HOME/OPatch/opatch lspatches
Output
...
37056207;DATAPUMP BUNDLE PATCH 19.25.0.0.0
...

8. RAC (other nodes)​

Repeat steps 6 and 7 on all the other cluster nodes one after another until all cluster nodes are patched successfully.

9. Run datapatch​

info

For a RAC database make sure to run datapatch only on one node.

  • Before running datapatch check the invalid objects in the database:

    select owner, object_name, last_ddl_time from dba_objects where status != 'VALID';
  • Run datapatch to apply the patch in the database:

    $ORACLE_HOME/OPatch/datapatch
tip

To output additional diagnostic information datapatch -verbose can be used: Datapatch User Guide (Doc ID 2680521.1)

Output
SQL Patching tool version 19.25.0.0.0 Production on Thu Mar 13 17:37:17 2025
Copyright (c) 2012, 2024, Oracle. All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_12499_2025_03_13_17_37_17/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
Interim patch 32081424 (ADD EXTERNAL TABLE ACCESS PARAMETER TO SPECIFY THE VALUE OF THE PREPROCESSOR):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 12-MAR-25 07.42.46.625881 PM
PDB ORCLPDB: Applied successfully on 12-MAR-25 07.51.45.741400 PM
PDB PDB$SEED: Applied successfully on 12-MAR-25 07.51.45.741400 PM
Interim patch 36878697 (OJVM RELEASE UPDATE: 19.25.0.0.241015 (36878697)):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 12-MAR-25 07.36.35.310021 PM
PDB ORCLPDB: Applied successfully on 12-MAR-25 07.47.24.442437 PM
PDB PDB$SEED: Applied successfully on 12-MAR-25 07.47.24.442437 PM
Interim patch 37056207 (DATAPUMP BUNDLE PATCH 19.25.0.0.0):
Binary registry: Installed
PDB CDB$ROOT: Not installed
PDB ORCLPDB: Not installed
PDB PDB$SEED: Not installed

Current state of release update SQL patches:
Binary registry:
19.25.0.0.0 Release_Update 241010184253: Installed
PDB CDB$ROOT:
Applied 19.25.0.0.0 Release_Update 241010184253 successfully on 12-MAR-25 07.42.41.594629 PM
PDB ORCLPDB:
Applied 19.25.0.0.0 Release_Update 241010184253 successfully on 12-MAR-25 07.51.43.383424 PM
PDB PDB$SEED:
Applied 19.25.0.0.0 Release_Update 241010184253 successfully on 12-MAR-25 07.51.43.383424 PM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB
No interim patches need to be rolled back
No release update patches need to be installed
The following interim patches will be applied:
37056207 (DATAPUMP BUNDLE PATCH 19.25.0.0.0)

Installing patches...
Patch installation complete. Total patches installed: 3

Validating logfiles...done
Patch 37056207 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37056207/25840925/37056207_apply_ORCL_CDBROOT_2025Mar13_17_37_37.log (no errors)
Patch 37056207 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37056207/25840925/37056207_apply_ORCL_PDBSEED_2025Mar13_17_40_06.log (no errors)
Patch 37056207 apply (pdb ORCLPDB): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/37056207/25840925/37056207_apply_ORCL_ORCLPDB_2025Mar13_17_40_06.log (no errors)
SQL Patching tool complete on Thu Mar 13 17:43:40 2025

The Patch was installed in the container and all pluggable databases.

10. Recompile​

  • Run utlrp.sql to recompile invalid objects:

    @?/rdbms/admin/utlrp.sql
    Output
    OBJECTS WITH ERRORS
    -------------------
    0
    ...
    ERRORS DURING RECOMPILATION
    ---------------------------
    0
  • Check invalid objects in the database:

    select owner, object_name, last_ddl_time from dba_objects where status != 'VALID';
    Output
    no rows selected

11. Verify datapatch​

Run the following query to check the sqlpatch registry in the database if the patch was applied successfully: (For a non CDB database use dba_registry_sqlpatch)

col status format a15
col description format a40
set lines 100

SELECT DISTINCT patch_id, patch_type, action, status, description FROM cdb_registry_sqlpatch WHERE description like 'DATAPUMP BUNDLE%';
Output
  PATCH_ID PATCH_TYPE ACTION	      STATUS	      DESCRIPTION
---------- ---------- --------------- --------------- ----------------------------------------
37056207 INTERIM APPLY SUCCESS DATAPUMP BUNDLE PATCH 19.25.0.0.0

Example: 23ai​

This is an example that shows how to install the Data Pump Bundle Patch on top of a 23ai RAC Linux database with the 23.7 Release Update.

Run the following tasks as oracle user. Make sure the environment is set to the correct database and Oracle Home.

1. Check Version​

Get the exact version of the database by checking the opatch lspatches and sqlpatch registry outputs:

  • Check applied patches for Oracle Home:

    $ORACLE_HOME/OPatch/opatch lspatches
    Output
    ...
    37366180;Database Release Update : 23.7.0.25.01 (37366180) Gold Image
    ...

    The DBRU 23.7 is installed in this Oracle Home.

  • Check patches applied in the container and pluggable databases:

    col status format a10;
    col action format a10;
    col description format a60;
    set lines 110;

    SELECT DISTINCT patch_id, patch_type, action, status, description FROM cdb_registry_sqlpatch where patch_type='RU';
    Output
      PATCH_ID PATCH_TYPE ACTION	 STATUS     DESCRIPTION
    ---------- ---------- ---------- ---------- ------------------------------------------------------------
    37366180 RU APPLY SUCCESS Database Release Update : 23.7.0.25.01 (37366180) Gold Image
  • Show version for running instances:

    SELECT DISTINCT version_full FROM gv$instance;
    Output
    VERSION_FULL
    -----------------
    23.7.0.25.01

2. Download Patch​

Download the patch from the support note.

info

Make sure to download the version that matches the exact version of your Database Release Update (DBRU).

In this example we are downloading patch 37491421 for 23.7.

Screenshot of 23ai patch selection page

3. Copy and Extract​

  • Create a new directory on the database server:

    mkdir DPBP237
  • Copy the downloaded patch zip file to that directory and unzip it:

    unzip p37491421_23702501DBRU_Generic.zip

4. Check Prerequisites​

  • View the Patch README and check the prerequisites.

  • Run opatch with the prereq option to check for any conflicts:

    cd 37491421
    $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
    Output
    ...

    Invoking prereq "checkconflictagainstohwithdetail"

    Prereq "checkConflictAgainstOHWithDetail" passed.

    OPatch succeeded.

5. Check for running jobs​

Run the following query to check if any Data Pump jobs are running in state EXECUTING on any database in the container:

col owner_name format a15;
col job_name format a15;
col job_name format a25;
col operation format a15;
col job_mode format a15;
col state format a15;
set lines 100;

SELECT owner_name, job_name, operation, job_mode, state, con_id FROM cdb_datapump_jobs;

6. Run Opatch​

Run opatch apply to patch the Oracle Home:

$ORACLE_HOME/OPatch/opatch apply -local
Output
Oracle Interim Patch Installer version 12.2.0.1.45
Copyright (c) 2025, Oracle Corporation. All rights reserved.


Oracle Home : /u02/app/oracle/product/23.0.0.0/dbhome_5
Central Inventory : /u01/app/oraInventory
from : /u02/app/oracle/product/23.0.0.0/dbhome_5/oraInst.loc
OPatch version : 12.2.0.1.45
OUI version : 12.2.0.9.0
Log file location : /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/opatch/opatch2025-03-17_18-48-44PM_1.log

Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 37491421

Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Backing up files...
Applying interim patch '37491421' to OH '/u02/app/oracle/product/23.0.0.0/dbhome_5'

Patching component oracle.rdbms, 23.0.0.0.0...

Patching component oracle.rdbms.dbscripts, 23.0.0.0.0...
Patch 37491421 successfully applied.
Warning: No inactive RU is eligible for delete. See log file for more details
Log file location: /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/opatch/opatch2025-03-17_18-48-44PM_1.log

OPatch succeeded.

7. Verify Opatch​

Check output of opatch lspatches and confirm that the patch was applied:

$ORACLE_HOME/OPatch/opatch lspatches
Output
...
37491421;DATAPUMP BUNDLE PATCH 23.7.0.0.0
...

8. RAC (other nodes)​

Repeat steps 6 and 7 on all the other cluster nodes one after another until all cluster nodes are patched successfully.

9. Run datapatch​

info

For a RAC database make sure to run datapatch only on one node.

  • Before running datapatch check the invalid objects in the database:

    select owner, object_name, last_ddl_time from dba_objects where status != 'VALID';
  • Run datapatch to apply the patch in the database:

    $ORACLE_HOME/OPatch/datapatch
tip

To output additional diagnostic information datapatch -verbose can be used: Datapatch User Guide (Doc ID 2680521.1)

Output
SQL Patching tool version 23.7.0.25.01 Lim on Mon Mar 17 18:53:30 2025
Copyright (c) 2012, 2025, Oracle. All rights reserved.

Log file for this invocation: /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/sqlpatch/sqlpatch_sid_MDEXAF231_ts_2025_03_17_18_53_30_pid_230298/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note: Datapatch will only apply or rollback SQL fixes for PDBs
that are in an open state, no patches will be applied to closed PDBs.
Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
(Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
Interim patch 37491421 (DATAPUMP BUNDLE PATCH 23.7.0.0.0):
Binary registry: Installed
PDB CDB$ROOT: Not installed
PDB PDB$SEED: Not installed
PDB PDB1: Not installed

Current state of release update SQL patches:
Binary registry:
23.7.0.25.01 Release_Update 250116103325: Installed
PDB CDB$ROOT:
Applied 23.7.0.25.01 Release_Update 250116103325 successfully on 07-FEB-25 11.36.11.122891 AM
PDB PDB$SEED:
Applied 23.7.0.25.01 Release_Update 250116103325 successfully on 07-FEB-25 11.36.11.344018 AM
PDB PDB1:
Applied 23.7.0.25.01 Release_Update 250116103325 successfully on 07-FEB-25 11.36.11.344018 AM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT PDB$SEED PDB1
No interim patches need to be rolled back
No release update patches need to be installed
The following interim patches will be applied:
37491421 (DATAPUMP BUNDLE PATCH 23.7.0.0.0)

Installing patches...
Patch installation complete. Total patches installed: 3

Validating logfiles...done
Patch 37491421 apply (pdb CDB$ROOT): SUCCESS
logfile: /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/sqlpatch/sqlpatch_sid_MDEXAF231_ts_2025_03_17_18_53_30_pid_230298/37491421_apply_MDEXAF23_CDBROOT_2025Mar17_18_53_52.log (no errors)
Patch 37491421 apply (pdb PDB$SEED): SUCCESS
logfile: /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/sqlpatch/sqlpatch_sid_MDEXAF231_ts_2025_03_17_18_53_30_pid_230298/37491421_apply_MDEXAF23_PDBSEED_2025Mar17_18_55_20.log (no errors)
Patch 37491421 apply (pdb PDB1): SUCCESS
logfile: /u02/app/oracle/product/23.0.0.0/dbhome_5/cfgtoollogs/sqlpatch/sqlpatch_sid_MDEXAF231_ts_2025_03_17_18_53_30_pid_230298/37491421_apply_MDEXAF23_PDB1_2025Mar17_18_55_20.log (no errors)
SQL Patching tool complete on Mon Mar 17 19:06:06 2025

The Patch was installed in the container and all pluggable databases.

10. Recompile​

  • Run utlrp.sql to recompile invalid objects:

    @?/rdbms/admin/utlrp.sql
    Output
    OBJECTS WITH ERRORS
    -------------------
    0
    ...
    ERRORS DURING RECOMPILATION
    ---------------------------
    0
  • Check invalid objects in the database:

    select owner, object_name, last_ddl_time from dba_objects where status != 'VALID';
    Output
    no rows selected

11. Verify datapatch​

Run the following query to check the sqlpatch registry in the database if the patch was applied successfully:

col status format a15
col description format a40
set lines 100

SELECT DISTINCT patch_id, patch_type, action, status, description FROM cdb_registry_sqlpatch WHERE description like 'DATAPUMP BUNDLE%';
Output
  PATCH_ID PATCH_TYPE ACTION	      STATUS	      DESCRIPTION
---------- ---------- --------------- --------------- ----------------------------------------
37491421 INTERIM APPLY SUCCESS DATAPUMP BUNDLE PATCH 23.7.0.0.0