Liquibase idempotency on Oracle DDLs
Unfortunately in most RDBMS, DDL statements commit the transaction and Liquibase reacts to failure by just rolling back the transaction. So first what I would do is wrap each DDL statement in a separate changeset.
In which cases did updating databaschangelog fail? I'm curious as this should be pretty robust.
Anyways, you can avoid repeating yourself by writing a small extension for Liquibase that does it automatically for all of your changesets. Take a look at Precondition extension point.