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 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

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:78 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(78): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/developm...', 1759612616, '216.73.216.149', 'Mozilla/5.0 App...', NULL) #2 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/development/databases/Oracle/demo/database-schema-changes/liquibase(179): insert_webrequest() #3 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 78