This blog is for cloud architects, DBAs, and developers who want to understand how to handle complex Oracle workloads miration to AWS. Whether you're exploring Amazon RDS or facing limitations with standard configurations, this post will help you see how Amazon RDS Custom can be a game-changer.
Migrating large Oracle databases to the AWS cloud can be complex. Even with a well-planned strategy, unexpected issues can appear, especially when dealing with legacy systems or custom configurations.
In this blog, I’ll share how we used Amazon RDS Custom to solve real-world Oracle migration challenges that standard RDS could not handle.
What is an Amazon RDS?
Amazon RDS (Relational Database Service) is a fully managed service that supports popular engines like Oracle, PostgreSQL, MySQL, and more. It helps you avoid the heavy lifting of managing infrastructure, backups, and patching.
Key benefits of Amazon RDS:
- Automated backups and snapshots
- Multi-AZ high availability
- Easy scaling of compute and storage
- Built-in monitoring and security
When RDS Isn’t Enough
In our case, we were migrating a 40 TB Oracle database. Everything was going smooth,until we hit a bug during the import process. The fix required applying one-off Oracle patch, which standard RDS does not support.
We also needed:
- Guaranteed Restore Points for flashback (not supported in RDS)
Oracle DBAs often rely on Guaranteed Restore Points (GRPs) for performing safe database changes or upgrades. GRPs allow DBAs to quickly rewind the entire database to a known consistent state without restoring from backups, which can be time-consuming. For example, when applying major schema changes or testing potentially risky application deployments, a DBA can create a GRP before changes and roll back within minutes if something goes wrong.
- Control over patching schedules
In my client’s environment, DBAs owned the patching process end to end. They did not apply every quarterly Oracle patch as soon as it was released—instead, patches were evaluated for business impact and scheduled according to internal change control policies. Some patches were deliberately deferred to avoid disrupting stable production workloads, while one-off patches—often critical or vendor-recommended—were applied on-demand when needed. This level of control ensured they could balance stability, compliance, and vendor requirements. Moving to Amazon RDS doesn't offer that flexibility and applying one-off patches is not an option.
- Access to the OS for tuning and diagnostics
The application running on this Oracle database was a vendor-provided product, and while most of the time it operated smoothly, there were occasional situations where DBAs had to make changes at the operating system level. This could include adjusting kernel parameters, deploying vendor-recommended diagnostic tools, or analyzing OS logs to troubleshoot performance issues specific to the application’s behavior. These interventions were infrequent but critical when required to maintain stability and performance. In a fully managed service like Amazon RDS, direct OS access is not available, making such tuning and troubleshooting scenarios a challenge without alternative approaches.
That’s when we pivoted to Amazon RDS Custom.
What is Amazon RDS Custom?
Amazon RDS Custom is a managed database service that gives you more control over the database and operating system. It’s ideal for workloads that need custom configurations, patches, or legacy support. Amazon RDS custom supports Oracle and SQL server database engines as of writing this blog.
What makes RDS Custom different:
- Access to the OS via SSH or Systems Manager
- Ability to apply custom patches
- Install agents or modify OS packages
- Use advanced Oracle features like Flashback and Data Guard
RDS vs. RDS Custom – Key Differences
How to Set Up Amazon RDS Custom for Oracle?
Let's break it down into simplified steps:
1. Set Up the Environment
Amazon RDS Custom for Oracle requires encryption at rest, which uses AWS Key Management Service (KMS). You can either create a new KMS key or reuse an existing one. The KMS key must be customer-managed, and you must ensure the RDS Custom service has permissions to use it. This key encrypts database storage, automated backups, read replicas, and snapshots.
RDS Custom deployments use CloudFormation templates to create and manage the necessary AWS resources in your account. These templates define the instance, networking, and supporting infrastructure. AWS provides downloadable templates so you can customize and deploy them according to your environment and compliance requirements.
RDS Custom for Oracle requires specific IAM roles that allow the service to manage the underlying EC2 instance, Systems Manager (SSM) sessions, and related automation workflows.
2. Create a Custom Engine Version (CEV)
Before you begin creating a custom engine version, you need to gather the required Oracle installation files and patches. Download the relevant Oracle database software patches and installation media from the Oracle Support portal, ensuring you have all necessary components for your desired version. Once downloaded, upload these files to an Amazon S3 bucket. During the CEV creation process, you will specify the path to this S3 bucket, allowing CEV creation workflow to access the required Oracle binaries and patches.
With your Oracle software now in S3, navigate to the Amazon RDS Console and select the option to create a custom engine version. Point to the S3 location containing your Oracle installation files. The system will validate the files before proceeding. After the custom engine version is successfully created, you can use it as the base to launch a new RDS Custom for Oracle DB instance, giving you a tailored environment that meets your application and compliance needs.
3. Customize and Connect
- Access the host via SSH or Session Manager
To access the host of an Amazon RDS Custom for Oracle instance, you can use SSH or AWS Systems Manager Session Manager. You can use Putty to connect using key pair as you would do for any other EC2 server.However Systems Manager lets you start a browser-based shell session without needing direct network connectivity or key management. Both methods give you direct operating system access for advanced troubleshooting, configuration, or installing custom tools—capabilities not available with standard RDS instances.
- Connect your application to the DB endpoint
To connect your application to the Amazon RDS Custom for Oracle DB instance, use the provided DB endpoint as the hostname in your database connection string along with the appropriate port and database identifier. This enables your application to communicate directly with the managed database instance.
If you're a visual learner, I've created a video just for you, demonstrating how to provision RDS Custom for Oracle with clear, step-by-step instructions.
This flexibility offered by Amazon RDS custom for Oracle helped us complete the migration without compromising stability or supportability.
Before you decide, Few questions to ask yourself -
- Do you require direct OS-level (root/SSH) access to the database server?
- Do you need to apply custom Oracle patches, use specific Oracle features, or install third-party agents that require OS access?
- Do your DBAs need precise control over patching, upgrades, or custom monitoring deployments?
- Is your application highly customized and doesn't fit a fully managed database environment?
Final Thought
Amazon RDS is great for most use cases. But when you need more control—especially for Amazon RDS Custom gives you the flexibility of EC2 with the benefits of a managed service.
If you're planning a complex Oracle migration, consider RDS Custom early in your design. It might save you from a painful pivot later.
Top comments (0)