A leading product engineering company, creating adaptive software solutions to improve operations, providing businesses with expert development services from across domain.
A leading product engineering company, creating adaptive software solutions to improve operations, providing businesses with expert development services from across domain.
Oracle to MariaDB migration got easier: MariaDB 13 adds REF CURSOR and RECORD support. Why it is a rolling release, and how to plan the move on an LTS.

Oracle licence costs are one of the most common reasons clients ask us about modernising a legacy system, and the hardest part of an Oracle to MariaDB migration is rarely the tables. It is the PL/SQL: packages, cursors and procedures that hold years of business logic. MariaDB Community Server 13.0, now generally available, closes two more of those gaps. It also comes with a catch that should shape your migration plan: 13.0 is a rolling release that will not receive bug-fix updates.
According to MariaDB's GA announcement, 13.0 "deepens Oracle PL/SQL compatibility with REF CURSORs and RECORD types":
TYPE ... IS REF CURSOR, both weak and strong, alongside the already supported SYS_REFCURSOR. Cursor variables declared this way can be opened, fetched from and closed like other cursors.There is a limit worth knowing before you plan around it. As InfoQ notes, REF CURSOR and RECORD are not yet supported as parameters or return types for non-package, global routines. In 13.0, REF CURSOR can be used inside packages and package bodies. Oracle code that passes cursors between standalone procedures will still need changes.
These build on MariaDB's long-standing SQL_MODE=ORACLE, which accepts a large subset of Oracle PL/SQL syntax, including packages.
OLD_VALUE() to read both old and new values in one round trip.init_rpl_role variable.For an Oracle migration, probably not as your production target. MariaDB's own announcement is explicit: "As part of our quarterly rolling release cycle, MariaDB Community Server 13.0 GA is a rolling release and will not receive further bug-fix releases." It builds on MariaDB 12.3, the current long-term support release, and points towards the next LTS.
That distinction matters more for a migration than for a new application. A migrated enterprise system will run for years, and it needs a database version that will be patched for years. The sensible approach is:
For many business applications, yes; for some, not economically. The migration is usually worth it when:
It is harder when business logic is spread across thousands of procedures with heavy use of features MariaDB does not support, or when third-party software certifies only on Oracle. PostgreSQL is the other common target and has its own mature Oracle-migration tooling; the right choice depends on your code, your team's skills and your hosting.
It is driven almost entirely by the volume and complexity of PL/SQL, and by test coverage. A schema with little procedural code can move quickly. A system with years of business logic in the database is a modernisation project, and should be run like one — incrementally, with the old system as the reference, as we set out in modernising legacy systems without breaking the business. Get the inventory before you get the estimate.
If Oracle licensing is a large line in your budget and you want to know what moving would really involve, our legacy application modernisation team can inventory your PL/SQL, test it against MariaDB and give you an estimate grounded in your code.
MariaDB can replace Oracle for many business applications, especially where PL/SQL uses standard packages, procedures and cursors. MariaDB's SQL_MODE=ORACLE accepts a large subset of PL/SQL, and version 13 adds REF CURSOR and RECORD support. Heavy use of Oracle-only features makes it harder.
MariaDB 13 adds weak and strong REF CURSOR types inside packages and RECORD types as routine parameters and return values, alongside existing SYS_REFCURSOR and package support. REF CURSOR and RECORD are not yet supported for global, non-package routines.
MariaDB states that Community Server 13.0 is a rolling release that will not receive further bug-fix releases. For long-lived systems such as Oracle migrations, test with 13.0 but target production at a long-term support release.
An Oracle to MariaDB migration takes as long as the PL/SQL demands. Schemas with little procedural code move quickly; systems with years of business logic in packages and procedures need an inventory, behaviour tests and incremental migration, and can take months.
Ready to take the first step towards unlocking opportunities, realizing goals, and embracing innovation? We're here and eager to connect.
11th Floor, O-Hub, Chandaka Industrial Estate, Infocity, Bhubaneswar, Odisha 751024
Level 4, 11 York Street Sydney Startup Hub Sydney, NSW – 2000
30 N. Đinh Nghệ, Phước Mỹ Sơn Trà, Đà Nẵng / Da Nang City – 550000
Level 25, AIDP Business Tower, Dubai Marina, United Arab Emirates
50 Beauchamp Street, Wellington, WGN 5028, New Zealand