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.
How to set Limited Forecast
- Specifying Limited Forecast on the project settings tab
- Specifying Limited Forecast on the Forecast With Options Screen
- Specifying Limited Forecast on the Deploy With Options Screen
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