Linux really does make the world go around. I love all OS, having been one of those odd Oracle DBAs to have used Mac, Android, and Windows laptops and while at Oracle, had all the OS outside of Linux that I supported, deeming my work, “the island of misfit projects.” As I’ve been asked multiple times this week about Unix platforms and how they can migrate to Azure, I wanted to get a post out on how our customers are handling migrations from Unix to Linux.
We will start with the fact no matter how high the percentage of servers which run Windows OS, Linux runs 100% of the top 1 million servers in the world. Neither are going anywhere, and both are important. Unix, on the other hand, seems to be dwindling in its importance as Linux becomes more robust. Even SQL Server now runs on Linux and my own Azure Portal subscription, I have all Linux machines outside of the single, Azure VM I use for my Power BI Gateway.
There are a lot of Oracle databases out there on Unix that may be holding customers back from going to the cloud. It’s not uncommon to find many Oracle databases for our customers running on HP-UX, AIX, Solaris, or another Unix platform. If you’re a Windows specialist, you may be wondering what’s the big deal, but it’s more about what’s the big-ENDIAN. Unix is a big-endian system, which means it stores/transfers data in a different order than Linux, which is a little-endian system. In big-endian (Unix), the byte with the most significance will be stored at the smallest memory address, where in a little-endian system (Linux) the least significant byte will be at the smallest memory address.
There is a migration that must happen for Oracle databases as they go from Unix, (Big Endian) to Linux (Little Endian). If this isn’t addressed, there will be an inconsistency in the data and how the OS stores/transfers it.
On the Cheap
Now this migration can be done manually, but if you have several databases, it can be time consuming and leave you open to human error.
Using RMAN
- Create an Azure Linux VM
- Set up storage
- Install Oracle and create a database
- Copy Oracle backup to Azure blob storage or files
- Restore using RMAN with convert each datafile in the database:
RMAN> convert datafile '<dbfile name>'
TO PLATFORM="Linux 64-bit for AMD"
FROM PLATFORM="AIX-Based Systems (64-bit)"
…listing every datafile in the system, outside of the system datafile, which is part of the initial database creation.
Use Export/Import
Using Oracle’s Datapump Export and Import consists of a lot more steps, depending on the Oracle version of database and the OS, but the biggest challenge is ensuring you get all of the schemas, tablespaces and data as you import over. Datapump is much easier earlier versions of Oracle’s exp/imp, but if you are still using such an old version of Oracle that you don’t have Datapump? You have other challenges going to the cloud- please just upgrade and get on a supported version already! 😊
If you’re interested and have an Oracle Support login, here’s the link to the detailed document on how to export your data from different Unix platforms and import to Linux:
I can’t stress enough, both processes are considerably time-consuming and if a step is missed, there could be issues and errors. Having a product that supports the conversion is simpler and can make for a better experience when adding in the complexity of a cloud migration.
Tools for Unix to Linux Migrations
There are two options available for most Unix to Linux migration scenarios:
- Create a new Linux VM and convert the database to little endian.
- Choose an emulator to create an image from the onprem OS and database to then run on a Linux distribution inside an Azure VM.
There are a lot of Oracle databases out there on Unix that may be holding customers back from going to the cloud. It’s not uncommon to find many Oracle databases for our customers running on HP-UX, AIX, Solaris, or another Unix platform.
For these two, there are numerous products to use to accomplish the migration to Linux. As these products assume a migration will be part of the steps, they include a migration tool as part of the solution, removing this as a separate task that must be handled, making for a much simpler process:
Convert + Migrate --> New VM in Azure
Database Migration to Little-Endian
For some customers, there may already be a full DevOps or automation deployment process for cloud VMs and they just need to migrate the database over from the older Unix onprem host. There are two tools that I've used to do this and here they are:
Commvault database restore:
Re-Platforming (Cross-Platform) Restore Operations for Oracle (commvault.com)
Delphix virtualize, migrate and clone:
Delphix Unix to Linux Oracle conversion | Delphix
I have no doubt there are more products than just these products to perform the database migration to a new Linux VM that you would deploy into Azure. The challenge is locating them. If you know of any, please feel free to respond in the comments and let me know, as my google searches have failed me.
Unix Emulation/Virtualization on Azure
For some customers, the refactoring or changes required, which may not just be at the database layer, is just too much and an emulator is the answer. There are two that I’m aware of that may help let you continue running your chosen Unix OS in Azure-
Skytap on Azure:
Skytap on Azure - Give Your Traditional Systems New Life
Stromasys’ Charon:
Charon on the Azure Cloud | Stromasys
VMWare:
Unix to Virtual Linux | Unix Virtual Machine | VMware
I've used Skytap and VMWare, but have only heard about Stromasys' product. I always am interested in how these perform and if there is any latency by having an emulator or virtualization on top of virtualization or even on top of bare metal, but I haven't had enough experience to tell you if any occurs, so please let me know if you have any experience with these!
The most important take-away from this post is that you aren’t stuck on legacy OS and your valuable Oracle workloads can come over to Azure no matter if you’re able to simply migrate them to an Azure Linux VM or if you want to emulate the Unix OS in Azure.