Use a replace script to replace a deployed changes with the desired changes.
Sometimes database changes (changesets) need to be replaced after deployment. This can occur if a change fails testing in a later stage environment.
The replace capability allows you to deploy a changeset that is specially marked for replacing prior changes. During processing, the original changeset gets the attribute ignore=true
to prevent it from being deployed further.
See Cleaning Up Deployed Changesets: cleanup.
You commonly need to deploy a cleanup script to undo the changes of the script you want to replace.
A cleanup script and a replace script can be packaged in the same packaging run.
Replace scripts work for different types "non-rerunnable" changes:
Cleanup and/or Replace are NOT recommended for stored logic (code: package, packagebody, procedure, function, trigger, view folders). Use the provided versioning capability with stored logic instead.
For a file named myscript.sql
, create a replace file that contains the code to replace what was deployed before. Use one of the following forms:
myscript-replace.sql
myscript_replace.sql
The file may use any extension (e.g. .sql) or no extension.
Deployment Packager processes the -replace files during packaging, as follows:
ignore=true
attribute on all matching changesets (same orgFilePath and origFileName) that pertain to the most recent / highest version