The issue is with small case database username.
Create a small case user in Oracle using below command:-
create user "demo" identified by <password> default tablespace users quota unlimited to users.
By enclosing the username in double-quotes, database will not create it in upper-case.
Give this username in the connection url so that the database will use it as a default catalog name.
After this our code is calling createSnapshot method as described below :-
SnapshotGeneratorFactory.getInstance().createSnapshot(compareControl.getSchemas(CompareControl.DatabaseRole.REFERENCE), getDatabase(), snapshotControl);
Inside this function, getDefaultCatalogName() method, implemented in liquibase.database.core.OracleDatabase , is called which return catalog name in upper case.
@Override public String getDefaultCatalogName() {//NOPMD return (super.getDefaultCatalogName() == null) ? null : super.getDefaultCatalogName().toUpperCase(Locale.US); }
And this DBUser in upper-case doesnot actually exists in database due to which DatabaseChangeLog.getChangeSets() is null.
NOTE:- i have set case-sensitive to true
((AbstractJdbcDatabase)database).setCaseSensitive(true);
Is there any way to handle case-sensitive database username in oracle.