Redgate Flyway, Oracle, and the Case of the Lowercase Schema
If you’ve spent any time working with Oracle databases, you’ve probably internalized a few expectations so deeply that you don’t even think about them anymore. One of the biggest is this:
Database users, tables, views, and metadata are in UPPERCASE.
So, when you query the database directly, no matter if using SQL*Plus, SQLcl,SQL Developer, or any other tool, you’re going to format your query in a common way:
SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME=’FLYWAY_SCHEMA_HISTORY’;
No rows selected
And if you know the table exists, yet it doesn’t return when queried, this can be a real frustration.
Enter Flyway (and a small but frustrating mismatch)
Flyway is a multiplatform, database development and deployment tool, and that’s one of its greatest strengths. It works consistently across Oracle, PostgreSQL, SQL Server, MySQL, and more. To support that portability, Flyway creates its schemas and objects using lowercase identifiers.
In Oracle, that means:
- The Flyway metadata tables (like the schema history table) are lowercase
- Oracle preserves that case by implicitly quoting the identifiers
So suddenly, this doesn’t work anymore:
SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME=’FLYWAY_SCHEMA_HISTORY’;
Instead, you need:
SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME=”flyway_schema_history”;
If you know what’s happening under the covers, this makes perfect sense.
If you’re an Oracle practitioner just trying to inspect the flyway installation, a migration state or troubleshooting an issue, it’s… annoying.
Not hard.
Not complicated.
Just frustrating enough to break your flow.
Why something so simple matters
This isn’t about correctness, as Flyway has always worked correctly.
It’s about expectations and ergonomics.
Oracle users:
- Expect unquoted identifiers
- Expect uppercase metadata
- Expect tooling to “feel Oracle-native” when they’re in Oracle
And when you’re bouncing between automated pipelines, migration scripts, ad-hoc troubleshooting, and production diagnostics, every little papercut adds up.
The fix: Oracle synonyms, done for you
To remove this friction, Flyway will provide Oracle synonyms that alias the flyway history table with uppercase-friendly names.
That means:
- You can query Flyway metadata without quoted identifiers
- Your muscle memory works again
- Monitoring queries, scripts, and runbooks stay clean and readable
From an Oracle user’s perspective, the database now behaves the way you expect while Flyway continues to operate exactly as designed underneath. No longer will you require custom changes to scripts or queries, or to add quotes to this one thing.
Just a smoother experience for Oracle users that use Flyway.
Why this is a bigger deal than it looks
This change doesn’t add a headline feature or change how migrations work or require you to rewrite anything.
What it does is remove a small but persistent point of friction that Oracle users have quietly worked around for years.
And that’s the part that impresses me about Redgate products. Great tooling isn’t just about big capabilities, but it’s also about respecting the mental models of the people using it. This is one of those quality-of-life improvements that tells you the product team is paying attention to how customers actually work, not just how software can work in theory.
Another step toward better developer experience
Flyway’s strength has always been its portability and consistency. Enhancements like Oracle-friendly synonyms show that Redgate isn’t choosing between “cross-platform” and “native-feeling”, instead they’re actively investing in both.
It’s a small change, but it solves a simple problem and it makes every day work just a little bit better.
In my book, those are usually the changes that matter most.
Want to see more Oracle-focused improvements?
If this update resonates with you, Flyway has even more enhancements aimed at improving the Oracle experience. One example is its support for managing large, partition‑heavy Oracle environments with far less manual effort. You can explore that in my post: Flyway and Optimized Partition Management for Oracle Databases