Liquibase Enterprise was formerly known as Datical DB.

Limited Forecast


Limited Forecast is a mode of Forecast that selectively profiles database objects based on the changes targeted for Deployment. This significantly reduces the time spent on the Forecast & Full Deploy.

Limited Forecast can be set as the default mode at the project level in the project settings or at the Deployment Step level with a simple check box.

Notes: 

  • Because a full profile of the database is not created during Limited Forecast, some Post Forecast rules may be skipped because the objects they depend on are not present in the Post Deploy Model.
  • Associated objects for non-referenced tables are not profiled:
    • primary keys
    • columns
    • indices
    • check constraints
    • foreign key constraints
    • unique constraints
  • Objects that are profiled for referenced tables:
    • views
    • triggers
    • procedures
    • functions
    • packages
    • synonyms
    • sequences
    • materialized views
  • All table names are selected during Limited Profile. This gives Datical the capability of detecting duplicate object creations for non-referenced tables during Limited Forecast.
  • With versions 7.13 and above, in multi-schema projects, Limited Forecast will only profile the schemas that are relevant to the current deployment.
  • Connections for forecast profiling in multi-schema projects:

    • For SQL Server, DB2, and Postgres only one connection is used to profile the managed schemas during forecast.  The first schema will be profiled, then the second schema, then the third, etc.
    • For Oracle with Liquibase Enterprise/Datical versions 7.14 and higher, multiple connections are used to profile the managed schemas during forecast.  A maximum of 10 connections are used to profile the first 10 schemas simultaneously.  Note that you may notice higher CPU utilization due to multiple connections being used for Oracle forecast profiling with Liquibase Enterprise/Datical versions 7.14 and higher.

How to set Limited Forecast

  • Specifying Limited Forecast on the Settings tab
  • Specifying Limited Forecast on the Forecast With Options screen
  • Specifying Limited Forecast on the Deploy With Options screen
  • It can also be set from the command line using the "hammer set limitForecast true" command

Updates in "datical.project" file

Making the abovementioned changes get reflected in the datical.project files by adding limitForecastProfiling="true" attribute in line #2 (scroll all the way to the right to see this attribute):

<?xml version="1.0" encoding="ASCII"?>
<dbproject:Project xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dbproject="http://datical.com/db/project/1.0" name="SONY" storedLogicExternal="true" deployThreshold="stopOnError" requireOptions="true" limitForecastProfiling="true" deployMode="quick" projectsId="5afdc6b6-4252-4def-9b2a-1e1ccb04d380" runtimeCredentials="false" multiSchema="true" dbSchemaDefinition="project" schemaSelectionStep="REF1" trackingSchema="DATICALDBTRACKING" enableRowCount="false">
  <dbDefs xsi:type="dbproject:OracleDbDef" name="REF1" driver="oracle.jdbc.OracleDriver" hostname="demo-db1-rhel6.datical.net" port="1521" username="DATICAL_USER" password="" contexts="REF1" storageOptionCollectedAtSnapshot="true" labels="current" serviceName="REF.datical.net" enableCompression="false" rowsPerBatch="10000"/>
  <dbDefs xsi:type="dbproject:OracleDbDef" name="DEV" driver="oracle.jdbc.OracleDriver" hostname="demo-db1-rhel6.datical.net" port="1521" username="DATICAL_USER" password="" contexts="DEV" storageOptionCollectedAtSnapshot="true" labels="current" environment="DEV" serviceName="DEV.datical.net" enableCompression="false" rowsPerBatch="10000"/>
  <dbDefs xsi:type="dbproject:OracleDbDef" name="QA" driver="oracle.jdbc.OracleDriver" hostname="demo-db1-rhel6.datical.net" port="1521" username="DATICAL_USER" password="" contexts="QA" storageOptionCollectedAtSnapshot="true" labels="current" environment="QA" serviceName="QA.datical.net" enableCompression="false" rowsPerBatch="10000"/>
  <plans name="current" databaseDefs="//@dbDefs[name='REF1'] //@dbDefs[name='DEV'] //@dbDefs[name='QA']"/>
  <changelog href="Changelog/changelog.xml#//@databaseChangeLog"/>
  <schemas name="MYSCHEMA"/>
</dbproject:Project>

Programmatic Support for Limited Forecast

Datical's automation utility allows you to configure this programmatically. This is useful when there is a need to overwrite project-level settings.

The argument for limited forecast is --limitForecast=true. This can be passed for both Forecast and Deploy commands as follows:

# Forecast command
hammer forecast <dbDef> --limitForecast=true

# Deploy command
hammer deploy <dbDef> --limitForecast=true



Copyright © Liquibase 2012-2022 - Proprietary and Confidential