Migrating Pluggable Databases (PDB) between Container Databases (CDB)

You can use the hapdbmigrate utility to perform a planned end-to-end migration of pluggable databases across containers of the same database version. The destination container database may be on the same node or on another node. The PDB must have its own independent storage.

If the PDB has parent groups, they will be unlinked and frozen by the utility during the migration. After successful migration, they will be relinked and unfrozen by the utility.

The migration is supported on database version

The configuration must meet the following requirements:

The utility performs the following actions during the migration:

The hapdbmigrate utility performs certain pre-requisite checks before the migration to verify that the cluster is ready for PDB migration. If the utility encounters any issues, you will need to manually fix the issues.

The utility is present in the $VCSHOME/bin directory.

The log files of the migration are located at $VCSLOG/log/hapdbmigrate.log. The logs are rotated after the file exceeds 5 MB and is saved in .gz format hapdbmigrate.log[1..7].gz.


Ensure that only one instance of the hapdbmigrate utility is running at a time.

To migrate Pluggable Databases (PDB) between Container Databases (CDB)

  1. Back up the VCS configuration file /etc/VRTSvcs/conf/config/main.cf:
    # cp /etc/VRTSvcs/conf/config/main.cf \
  2. Verify that the high availability daemon (had) is running on all the nodes in the cluster.
    # hastatus -summary
  3. Verify that there are no resources in faulted or unknown state.
    # hares -state|grep FAULTED
    # hares -state|grep UNKNOWN
  4. Verify that the PDBName attribute is present for the PDB resource with the correct value in the main.cf configuration file.
  5. Verify that the source and destination CDB resources are online.
    # hares -state resname
  6. On the destination CDB, verify the following:

    • The destination CDB is not in suspended mode.

      Any instance of the destination CDB is not in mounted state.

      See the Oracle documentation for more information.

    • If any instance of the destination CDB is in restricted state, ensure that the PDB resource you want to migrate has the StartUpOpt attribute set to restricted.

      # haconf -makerw
      # hares -modify pdb1 StartUpOpt \
      # haconf -dump -makero
  7. Verify that existing dependencies do not conflict with the migration process.

    The PDB child resources must not be dependent on the CDB resource or any of its child resources.

    The PDB child resources must not have any parent, which is not a part of the PDB child hierarchy.

  8. Verify that the XML data directory has read and write permissions for the "oracle" user. The XML data directory must be located either on PDB mounts or at a location accessible to both source and destination CDBs.
  9. Run the hapdbmigrate utility as the root user:


    If there are parent groups dependent on the source CDB group, specify the -ignoreparentgrp option.

    # $VCS_HOME/bin/hapdbmigrate -pdbres pdb_resname -cdbres cdb_resname \
    -XMLdirectory xml_directory [-ignoreparentgrp] [-prechecks]
    		-pdbres: Name of the PDB resource, which needs to be migrated
    	-cdbres: Name of the CDB resource, where the PDB needs to migrate
    	-XMLdirectory: XML directory location for the unplugged PDB
    -ignoreparentgrp: Utility proceeds even 
    if the PDB group has parent groups 
    -prechecks: Performs prechecks and validation
    -help|h: Prints usage

    The migration log file is located at $VCSLOG/log/hapdbmigrate.log.

  10. Verify that the PDB resource is online on the destination CDB.
    # hares -state pdb_resname
  11. Relink the parent service group of the source CDB group manually to the destination CDB group, if it depends on the migrated PDB.
    # haconf -makerw
    # hagrp -dep parent_sg
    #Parent     	     Child         	   Relationship
    parent_sg       source_CDB         online local firm
    # hagrp -offline parent_sg -any
    # hagrp -unlink parent_sg source_CDB
    # hagrp -link parent_sg dest_CDB online local firm 
    # hagrp -dep parent_sg
    #Parent     	    Child         	    Relationship
    parent_sg      dest_CDB           online local firm
    # haconf -dump -makero

See Sample configuration of migratable Oracle pluggable database (PDB) resource in main.cf.

Resource type definition for the Oracle agent

Resource type definition for the Netlsnr agent