Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Package Method Name

Description

BackupRestoreOracleEphemeralInternalPdb

This is the same container that holds the dbDef to be copied. Eg. if I want to use the DEV database, the cloned db will be created on the same container as the DEV database.

Info

BackupRestoreOracleEphemeralInternalPdb is the faster and more reliable option. Usually it is 2.5 times faster, but it is important to take into account that BackupRestoreOracleEphemeralExternalPdb depends on the internet speed. BackupRestoreOracleEphemeralInternalPdb can be even faster if your internet speed becomes a bottle neck for BackupRestoreOracleEphemeralExternalPdb. We Liquibase strongly recommend recommends this option.

BackupRestoreOracleEphemeralExternalPdb

This container is different and separate from the cloned dbDef.

Info

If you are using OMF mode it should be same on both databases when the copy is made.

Both containers must be on the same Oracle version to use this method.

...

External container user privileges:

On the external database we will create a new user on oracle CDB with the following privileges. This allows us Liquibase to create an ephemeral copy and create a link to the source database.

...

  1. Create the dbDef using instructions from Creating a Liquibase Enterprise project Using the Liquibase Enterprise GUI

  2. Ensure the Name of the database is <dbDef_to_be_cloned>_EPHEMERAL. This can be DEV, QA, STAGE, or PRODThe <dbDef to be cloned> needs to be the first database in the pipeline.

    image-20240311-142341.png
  3. Enter your Connection Settings.

    1. If you are using a TNSNAMES/LDAP connection, see the section above Use TNSNAMES/LDAP with Oracle Ephemeral Database.

    2. If you are using a BASIC connection, the Service Name is ORCLCDB or the name of the container that houses the ephemeral copy. (See Backup and Restore Package Methods section before for more information.)

      1. Enter your container name in the Hostname text box. This entry depends on if you are using an internal or external backup and restore method. (See Backup and Restore Package Methods section before for more information.)

      2. The username and password are the ORCLCDB user created in step 12. Create ORCLCDB SYSOPER User above.

        image-20240311-173432.png

  4. Contexts and Labels

    1. Contexts are left blank or set to the same context as the dbDef to be cloned.

    2. Set your Labels to either of these:

      1. To the name of the pipeline that houses the dbDef to be cloned

      2. Or use the same pattern that is in use for the dbDef to be cloned

  5. After creating the dbDef, remove the Step from the Pipeline by selecting Remove Step.

    image-20240311-143808.png

  6. Do not select the box to delete the Deployment Step from the Deployment Plan

    image-20240311-143908.png

...

  1. If the password is present in the file, please note this value is Base64 encoded. If modifying this value, the new value will also need to be Base64 encoded.

  2. Clear out the dbDefsId for the new _EPHEMERAL dbDef.

    Code Block
        <dbDefs xsi:type="dbproject:OracleDbDef" name="DEV_EPHEMERAL" driver="oracle.jdbc.OracleDriver" hostname="cs-oracledb.liquibase.net" port="1521" username="c##liquibase_ephemeral_user" password="bGlxdWliYXNlX3VzZXI=" labels="current" dbDefsId="" serviceName="ORCLCDB" enableCompression="false" rowsPerBatch="10000"/>
  3. Do a Test Connection to another database in the pipeline or sync the project to the DMC to populate the dbDefsId field before checking it the datical.project changes into source control.

6. Optional Step: Associated deployPackager.properties

...

  • If oracleEphemeralSourceName packager property is not specified we try Liquibase attempts to get the PDB name from 3 three different tables on the DB (v$pdbs and database. These tables are v$pdbs, dba_data_files, or and v$parameter). If you already gave the user required grants according to requested grants are in place as listed on Multi-Schema Projects - Oracle Roles and Permissions, everything should work because both the PDB name can be located. Both GRANT SELECT ANY DICTIONARY TO DATICAL_ROLE; and GRANT IMP_FULL_DATABASE TO DATICAL_PACKAGER_ROLE; already give us enough permission provide the proper permissions to query the required tables. If you haven’t given such permission to us and want to use the ephemeral databaseBackupRestoreMethod - these permissions have not been granted, in order to use ephemeral databaseBackupRestoreMethod, permissions to query v$pdbs, dba_data_files and v$parameter is available tables must be granted.

Use Oracle Managed Files (OMF) with Oracle Ephemeral Database

...