Handling Flashback Data Archive (FDA) in SQLcl Project Deployments across multiple environments
We use Oracle Flashback Data Archive (FDA) in our PROD and TEST environments, but not in DEV. Our schema was initially exported with FDA already enabled on several tables — which caused an unexpected side effect in our SQLcl Project workflow.
The Problem
Whenever we make a structural change to an FDA-enabled table, SQLcl Project's stage command generates the DDL diff correctly — but always prepends an ALTER TABLE ... NO FLASHBACK ARCHIVE statement before the actual change. This is Oracle's standard behavior: before modifying an FDA-tracked table, FDA must be temporarily removed, the DDL applied, and then re-enabled.
This works perfectly fine in PROD and TEST, where FDA exists. But when we deploy to DEV — where FDA is not configured — these NO FLASHBACK ARCHIVE statements cause the deployment to fail, since there is nothing to remove.
Our environments
PROD✅TEST✅DEV❌
What we are looking for
A clean way to either:
- Filter out
NO FLASHBACK ARCHIVE statements selectively for DEV deployments, without modifying the generated changesets manually
- Or suppress them conditionally using Liquibase contexts, a DDL trigger, or a pre-processing step in our SQLcl/Liquibase pipeline
Has anyone solved this cleanly within a SQLcl Projects workflow? We would love to hear how others handle FDA across mixed environments.