Search notes:

Oracle Demo: Sync Database Schema Changes with Liquibase

variables.sql
$ sqlcl -nolog @run-liquibase.sql

Initial state

Schema evolution: Initial state

lb generate-schema

lb generate-schema captures the schema to which SQLcl is connected into a controller.xml file in the current working directory.
This The controller file is acts as a change log that includes all files in the proper order to allow the schema to be deployed correctly.
cd liquibase/out
lb generate-schema
cd ../..
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/generate-schema.sql
Compare generate-schema with generate-changelog.

lb changelog-sync

lb changelog-sync -changelog-file controller.xml -search-path liquibase/out
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/changelog-sync.sql

Tagging the current state

lb tag -tag "Release 1.0"
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/tag-rel-1.0.sql

Developing release 1.1 on dev DB

Schema evolution: Release 1.1

lb diff-changelog

lb diff-changelog -output-file liquibase/out/controller.xml -reference-username &schema -reference-password &schema -reference-url jdbc:oracle:thin:@&dbDev
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/diff-changelog.sql

Deploy release 1.1 to prod DB

lb update -search-path liquibase/out -changelog-file controller.xml
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/update.sql

Tagging release 1.1

lb tag -tag "Release 1.1"
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/tag-rel-1.1.sql

Select data in account table

select * from account;
Github repository Oracle-demo-database-schema-changes, path: /sql/select-account.sql

Developing release 1.2 on dev DB

Schema evolution: Release 1.2

lb diff-changelog

lb diff-changelog -output-file liquibase/out/controller.xml -reference-username &schema -reference-password &schema -reference-url jdbc:oracle:thin:@&dbDev
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/diff-changelog.sql

Deploy release 1.2

lb update -search-path liquibase/out -changelog-file controller.xml
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/update.sql

Tagging release 1.2

lb tag -tag "Release 1.2"
Github repository Oracle-demo-database-schema-changes, path: /liquibase/cmd/tag-rel-1.2.sql

Select data in account table

The column account_type is renamed (but empty, because column was dropped and recreated).
select * from account;
Github repository Oracle-demo-database-schema-changes, path: /sql/select-account.sql

Check if index was recreated

select
   column_name
from 
   user_ind_columns
where
   index_name = 'ACCOUNT_IX';
Github repository Oracle-demo-database-schema-changes, path: /sql/index-account_ix.sql

Show database changelog

select
   tag,
   filename,
   to_char(dateexecuted, 'yyyy-mm-dd hh24:mi') exec_dt,
   exectype,
   description,
   author
from
   databasechangelog
order by
   orderexecuted;
Github repository Oracle-demo-database-schema-changes, path: /liquibase/sql/databasechangelog.sql

Cleaning up

Schema evolution: Cleaning up

See also

Oracle demo: Database schema changes

Index