CLI cookbook: refreshing a VDB from a related VDB

Delphix allows a VDB to be refreshed from a related VDB. For example, a VDB which has the same origin dSource as the VDB being refreshed.

This procedure can only be performed via the CLI.

While VDBs can be refreshed from any related VDB, care should be taken to avoid complex dependencies which can be created by refreshing a VDB from one of its own decedents.

Prerequisites

The VDB being used to refresh from must be related (have the same origin dSource) to the VDB being refreshed.

Procedure

In this example, the VDB being refreshed is called MYPDB, and it will be refreshed from a VDB named SIBLING. Both VDBs are direct decedents of the dSource source.

  1. Log into the Delphix command-line interface using the admin user or a user with admin privileges.

    Copy
    ssh admin@YOUR_ENGINE
  2. Verify the VDB parentage.

    Copy
    mwdlpx-2025.4.0.2.dcol2 database> ls 

    Objects 

    NAME          PROVISIONCONTAINER  DESCRIPTION 

    MYPDB         source              - 

    SIBLING       source              - 

    CDOMLOSRE21D  -                   - 

    OtherSource   - 

    UnRelated     OtherSource         - 

    VCDB          CDOMLOSRE21D        - 

    Grandchild    MYPDB               - 

    source        - 

    The PROVISIONCONTAINER column shows the direct parent of the database. If no value is displayed, it indicates that the database has no parentage (either it is a dSource or a replicated VDB where the dSource is not available on the engine).

    In the example, the MYPDB and SIBLING are both directly provisioned from source. The Grandchild has been provisioned from MYPDB, meaning its origin is also source.

    There is also the OtherSource dSource with a single descendent UnRelated. Since UnRelated is provisioned from a different dSource, it is considered to have no relationship to any VDBs descended from source.

    As a graph, this looks like:

    Copy
    source 

      -> MYPDB 

         -> Grandchild 

      -> SIBLING 

    OtherSource 

      -> UnRelated 

    As the VDB can be refresh from any related VDB, it could refresh MYPDB from either SIBLING, Grandchild or (default option) source. It cannot however be refreshed from OtherSource or UnRelated, as it has no relationship to these databases.

    In this example, MYPDB will be refreshed from SIBLING.

  3. Refresh the VDB.

    When refreshing from a related database, set the timeflowPointParameters.container to the related database. If no value is giving here the VDB will automatically refresh from the database it was originally provisioned from.

    Copy
    mwdlpx-2025.4.0.2.dcol2> /database 

    mwdlpx-2025.4.0.2.dcol2 database> select MYPDB 

    mwdlpx-2025.4.0.2.dcol2 database 'MYPDB'> refresh 

    mwdlpx-2025.4.0.2.dcol2 database 'MYPDB' refresh *> ls 

    Properties 

        type: OracleRefreshParameters 

        credential: (unset) 

        force: false 

        instanceNumber: (unset) 

        syncAfterReprovision: true 

        timeflowPointParameters: 

            type: TimeflowPointSemantic 

            container: (unset) 

            location: LATEST_POINT 

        username: (unset) 

    mwdlpx-2025.4.0.2.dcol2 database 'MYPDB' refresh *> set timeflowPointParameters.container=SIBLING 

    mwdlpx-2025.4.0.2.dcol2 database 'MYPDB' refresh *> commit 

        Dispatched job JOB-121 

        DB_REFRESH job started for "Untitled/MYPDB". 

    ... 

    ... 

        DB_REFRESH job for "Untitled/MYPDB" completed successfully. 
    Performing a relative refresh does not change the provisionContainer. If further refreshes are performed without specifying timeflowPointParameters.container, it will be from the original source database.
  4. (optional) Verify VDB parentage.

    To verify which database a VDB has been refreshed from, use the following procedure:

    • Find the current timeflow for the VDB in question.

    • Find the parentPoint for that timeflow.

    • Find the container for the parentPoint.timeflow.

      Copy
      mwdlpx-2025.4.0.2.dcol2 database 'MYPDB'> get currentTimeflow 

          'DB_REFRESH@2025-08-27T23:11:49' 

      mwdlpx-2025.4.0.2.dcol2 database 'MYPDB'> /timeflow 

      mwdlpx-2025.4.0.2.dcol2 timeflow> select  'DB_REFRESH@2025-08-27T23:11:49' 

      mwdlpx-2025.4.0.2.dcol2 timeflow ''DB_REFRESH@2025-08-27T23:11:49''> get parentPoint 

          type: OracleTimeflowPoint 

          location: 4003113 

          timeflow: 'DB_REFRESH@2025-08-27T22:54:13' 

          timestamp: 2025-08-28T06:10:58.000Z 

      mwdlpx-2025.4.0.2.dcol2 timeflow ''DB_REFRESH@2025-08-27T23:11:49''> cd .. 

      mwdlpx-2025.4.0.2.dcol2 timeflow> select 'DB_REFRESH@2025-08-27T22:54:13' 

      mwdlpx-2025.4.0.2.dcol2 timeflow ''DB_REFRESH@2025-08-27T22:54:13''> get container 

          SIBLING