How to configure alternate liquibase control tables (DATABASECHANGELOG & DATABASECHANGELOGLOCK)

Following the inputs from the below forum, system properties were specified and customized names for DATABASECHANGELOG & DATABASECHANGELOGLOCK tables were used & setup (on liquibase update execution).

But, on subsequent attempts to execute future liquibase updates (against same Oracle database schema), the execution fails as its trying to recreate the customized DATABASECHANGELOG table again - failing with liquibase: ORA-00955: name is already used by an existing object. 

Environment details:

  • Liquibase 3.5.1
  • Oracle 12c
  • JDK 8
  • OS - Redhat Linux 64-bit

This does not happen when trying to use the standard liquibase control tables names (i.e. DATABASECHANGELOG & DATABASECHANGELOGLOCK). 

Also, tested the same scenario against a PostGres 9.5 database, and configured liquibase control tables work as expected (similar to standard control tables).

Any suggestions to fix this?

Did you check permissions? Maybe you are using a different user that does not see the table but it s already there.

Or are there any synonyms around, that may be a problem too?

Thanks Daniel. 

I stumbled upon a solution and I believe its an oracle-specific issue. When connected with Oracle database, the configured table names specified SHOULD be in ALL CAPS for it to be consistently recognized across multiple liquibase runs (first time setup & subsequent attempts to migrate). 

As mentioned earlier, when running similar scenario against postgres database - the configured liquibase control table names are not case sensative, i.e., it works appropriately across multiple liquibase runs even when the table names are specified is in small case.

Since Liquibase uses JDBC connectivity to perform its operations using the database-specific driver - I assume its safe to attribute this behavior to ojdbc7.jar (oracle driver I specified in the classpath when performing liquibase operations against Oracle database).