Created by Simon Cunningham (AWS), Jaydeep Nandy (AWS), Nitin Saxena (AWS), and Vishnu Vinnakota (AWS)
Summary
Oracle E-Business Suite is an Enterprise Resource Planning (ERP) solution for automating enterprise-wide processes such as financials, human resources, supply chains, and manufacturing. It has a three-tier architecture: client, application, and database. Previously, you had to run your Oracle E-Business Suite database on a self-managed Amazon Elastic Compute Cloud (Amazon EC2) instance,
Amazon RDS Custom for Oracle is a managed database service for legacy, custom, and packaged applications that require access to the underlying operating system and database environment. It automates database administration tasks and operations while making it possible for you, as a database administrator, to access and customize your database environment and operating system. When you migrate your Oracle database to Amazon RDS Custom, Amazon Web Services (AWS) takes care of heavy lifting such as backup tasks and ensuring high availability, while you can focus on maintaining your Oracle E-Business Suite application and functionality. For key factors to consider for a migration, see Oracle database migration strategies in AWS Prescriptive Guidance.
This pattern focuses on the steps to migrate a standalone Oracle database on Amazon EC2 to Amazon RDS Custom by using an Oracle Recovery Manager (RMAN) backup and an Amazon Elastic File System (Amazon EFS)
For information about architecting Oracle E-Business Suite on AWS for high availability and disaster recovery, see the pattern Set up an HA/DR architecture for Oracle E-Business Suite on Amazon RDS Custom with an active standby database.
Note
This pattern provides links to Oracle support notes. You need an Oracle Support
Prerequisites and limitations
Prerequisites
An Oracle version 12.1.0.2 or 19c (minimum 19.3) source database that is running on Amazon EC2 with Oracle Linux 7 or Red Hat Enterprise Linux (RHEL) version 7.x. This pattern assumes that the source database name is
VIS
and that the additional container database name for Oracle 19c isVISCDB
, but you can use other names.Note
You can also use this pattern with on-premises Oracle source databases, as long as you have the appropriate network connectivity between the on-premises network and Amazon Virtual Private Cloud (Amazon VPC)
. An Oracle E-Business Suite version 12.2.x application (vision instance). This procedure has been tested on version 12.2.11.
A single Oracle E-Business Suite application tier. However, you can adapt this pattern to work with multiple application tiers.
For Oracle 12.1.0.2, Amazon RDS Custom configured with at least 16 GB of swap space. Otherwise, the 12c Examples CD displays a warning. (Oracle 19c doesn’t require the Examples CD, as mentioned later in this document.)
Complete the following steps before you start your migration:
On the Amazon RDS console, create an Amazon RDS Custom for Oracle DB instance with the database name
VIS
(or your source database name). For instructions, see Working with Amazon RDS Custom in the AWS documentation and the Amazon RDS Custom for Oracle – New Control Capabilities in Database Environmentblog post. This ensures that the database name is set to the same name as the source database. (If left blank, the EC2 instance and database name will be set to ORCL
.) Make sure that you create your custom engine version (CEV) with the patches that have been applied to the source at a minimum. For more information, see Preparing to create a CEV in the Amazon RDS documentation.Note for Oracle 19c: Currently, for Oracle 19c, the Amazon RDS container database name can be customized. The default is
RDSCDB
. Make sure to create the RDS Custom Oracle instance with same system ID (SID) as on the source EC2 instance. For example, in this pattern, the Oracle 19c SID is assumed to beVISCDB
on the source instance. Therefor, the target Oracle 19c SID on Amazon RDS Custom should also beVISCDB
.Configure the Amazon RDS Custom DB instance with enough storage, vCPU, and memory to match the Amazon EC2 source database. To do this, you can match the Amazon EC2 instance types
based on vCPU and memory. Create an Amazon EFS file system and mount it on the Amazon EC2 and Amazon RDS Custom instances. For instructions, see the Integrate Amazon RDS Custom for Oracle with Amazon EFS
blog post. This pattern assumes that you have mounted the Amazon EFS volume on /RMAN
on both the source Amazon EC2 and target Amazon RDS Custom DB instances, and that network connectivity is possible between the source and target. You can also use the same method by using Amazon FSxor any shared drive.
Assumptions
This pattern assumes that your application and database are using logical hostnames, which reduce the number of migration steps. You can adjust these steps to use physical hostnames, but logical hostnames reduce the complexity of the migration process. For information about the advantages of using logical hostnames, see the following support notes:
For 12c, Oracle Support Note 2246690.1
For 19c, Oracle Support Note 2617788.1
This pattern doesn’t cover the Oracle 12c to 19c upgrade scenario, and focuses on migrating the same version of the Oracle database running on Amazon EC2 to Amazon RDS Custom for Oracle.
Amazon RDS Custom for Oracle supports Oracle Home customization/rdsdbbin/oracle
to a path that you specify, such as /d01/oracle/VIS/19c
. For simplicity, the instructions in this pattern assume the default path /rdsdbbin/oracle
.
Limitations
This pattern doesn’t support the following features and configurations:
Setting the database
ARCHIVE_LAG_TARGET
parameter to a value outside the 60–7200 rangeDisabling the DB instance log mode (
NOARCHIVELOG
)Turning off the
EBS-optimized
attribute of the EC2 instanceModifying the original Amazon Elastic Block Store (Amazon EBS) volumes attached to the EC2 instance
Adding new EBS volumes or changing the volume type from
gp2
togp3
Support for the TNS ifile
Changing the
control_file
location and name (it must be/rdsdbdata/db/VISCDB_A/controlfile/control-01.ctl
, whereVISCDB
is the CDB name)
For additional information about these and other unsupported configurations, see Fixing unsupported configurations in the Amazon RDS documentation.
Product versions
For Oracle Database versions and instance classes supported by Amazon RDS Custom, see Availability and requirements for Amazon RDS Custom for Oracle.
Architecture
The following architecture diagram represents an Oracle E-Business Suite system running in a single Availability Zone on AWS. The application tier is accessed through an Application Load Balancer

Tools
AWS services
Amazon RDS Custom for Oracle is a managed database service for legacy, custom, and packaged applications that require access to the underlying operating system and database environment. It automates database administration tasks and operations while making it possible for you, as a database administrator, to access and customize your database environment and operating system.
Amazon Elastic File System (Amazon EFS) is a simple, serverless, elastic file system for adding and removing files with no need for management or provisioning. This pattern uses an Amazon EFS shared file system to store and access the RMAN backup files.
AWS Secrets Manager is an AWS managed service that enables you to easily rotate, manage, and retrieve database credentials, API keys, and other secret information. Amazon RDS Custom stores the key pair and database user credentials in Secrets Manager upon database creation. In this pattern, you retrieve the database user passwords from Secrets Manager to create the
RDSADMIN
andADMIN
users and to change the sys and system passwords.
Other tools
RMAN is a tool that provides backup and recovery support for Oracle databases. This pattern uses RMAN to perform a cold backup of the source Oracle database on Amazon EC2 that is restored on Amazon RDS Custom.
Best practices
Use logical hostnames. This significantly reduces the number of post-clone scripts that you have to run. For more information, see Oracle Support Note 2246690.1.
Amazon RDS Custom uses Oracle Automatic Memory Management
(AMM) by default. If you want to use the hugemem kernel, you can configure Amazon RDS Custom to use Automatic Shared Memory Management (ASMM) instead. Leave the
memory_max_target
parameter enabled by default. The framework uses this parameter in the background to create read replicas.Enable Oracle Flashback Database. This feature is useful in failover (not switchover) testing scenarios to reinstate the standby.
For database initialization parameters, customize the standard PFILE that’s provided by the Amazon RDS Custom DB instance for Oracle E-Business Suite instead of using the SPFILE from the Oracle source database. This is because white spaces and comments cause issues when creating read replicas in Amazon RDS Custom. For more information about database initialization parameters, see Oracle Support Note 396009.1.
In the following Epics section, we’ve provided separate instructions for Oracle 12.1.0.2 and 19c, where the details differ.
Epics
Task | Description | Skills required |
---|---|---|
Shut down the application. | To shut down the source application, use these commands:
| DBA |
Create the .zip file. | Create the
| DBA |
Copy the .zip file to Amazon EFS. | Copy | DBA |
Task | Description | Skills required |
---|---|---|
Pre-clone the database tier on Amazon EC2. | Log in as Oracle user and run:
Check the log file generated to confirm that the operation completed successfully. | DBA |
Copy appsutil.zip to the shared Amazon EFS file system. | Create a tar backup and copy
| DBA |
Task | Description | Skills required |
---|---|---|
Create a backup script. | Perform an RMAN full backup of the source database to the shared Amazon EFS file system. For simplicity, this pattern performs a cold RMAN backup. However, you can modify these steps to perform a hot RMAN backup with Oracle Data Guard to reduce downtime. 1. Start up the source Amazon EC2 database in mount mode:
2. Create an RMAN backup script (use one of the following examples, depending on your version of Oracle, or run one of your existing RMAN scripts) to back up the database to the Amazon EFS file system that you mounted ( For Oracle 12.1.0.2:
For Oracle 19c:
| DBA |
Run the backup script. | Change permissions, log in as Oracle user, and run the script:
| DBA |
Check for errors and note the name of the backup file. | Check the RMAN log file for errors. If everything looks fine, list the backup of the control file. Note the name of the output file. For Oracle 12.1.0.2:
You will use the backup file For Oracle 19c:
You will use the backup file | DBA |
Task | Description | Skills required |
---|---|---|
Change the hosts file and set the hostname. | NoteThe commands in this section must be run as root user. 1. Edit the
where 2. Change the database hostname by running the
For example:
For additional information, see the Knowledge Center article on assigning static hostnames 3. Restart the Amazon RDS Custom DB instance. Don’t worry about shutting down the database, because you will be dropping it in a later step.
4. When the Amazon RDS Custom DB instance comes back up, log in and verify that the hostname has changed:
| DBA |
Install the Oracle E-Business Suite software. | Install the Oracle E-Business Suite recommended RPMs to the Oracle home location on the Amazon RDS Custom DB instance. For details, see Oracle Support Note #1330701.1. The following is a partial list. The RPM list changes for each release, so check to make sure that all the required RPMs are installed. As root user, run:
Verify that all of the required patches are installed before proceeding with the next step. | DBA |
Install the VNC server. | NoteYou can omit this step for Oracle 19c because the Examples CD is no longer required; see Oracle Support Note 2782085.1. For Oracle 12.1.0.2: Install the VNC server and its dependent desktop packages. This is a requirement for installing the 12c Examples CD in the next step. 1. As root user, run:
2. Start the VNC server for
| DBA |
Install the 12c Examples CD. | NoteYou can omit this step for Oracle 19c because the Examples CD is no longer required; see Oracle Support Note 2782085.1. For Oracle 12.1.0.2: 1. Download the installation files from https://edelivery.oracle.com/ 2. Create a directory to store the Examples CD:
3. Copy the Examples CD .zip file to this directory by using the transfer mechanism of your choice (for example, SCP):
4. Change ownership to
5. As the
6. Connect from a client that has access to the VNC client and Amazon RDS Custom. Make sure that you have the necessary network connectivity and firewall ports open to allow access for VNC. For example, a VNC server that’s running on 7. Change to the directory where you copied the Examples CD:
8. Run the installer. Make sure to verify the location of the
9. Use the following parameters during the installation of the Examples CD:
10. The installation program includes five steps with prompts. Follow the steps until installation is complete. | DBA |
Task | Description | Skills required |
---|---|---|
Pause automation mode. | You have to pause automation mode on your Amazon RDS Custom DB instance before you proceed with the next steps, to make sure that automation doesn’t interfere with the RMAN activity. Pause the automation by using the following AWS Command Line Interface (AWS CLI) command. (Make sure that you have configured the AWS CLI first.)
When you specify the duration of the pause, make sure that you leave enough time for the RMAN restore. This depends on the size of the source database, so modify the 360 value accordingly. | DBA |
Drop the starter database. | Drop the existing Amazon RDS Custom database. As the Oracle home user, run the following commands. (The default user is
| DBA |
Create directories to store the database files. | For Oracle 12.1.0.2: Create directories for the database, control file, datafiles, and online log. Use the parent directory of the
For Oracle 19c: Create directories for the database, control file, datafiles, and online log. Use the parent directory of the
| DBA |
Create and modify the parameter file for Oracle E-Business Suite. | In this step, you won’t copy the server parameter file (SPFILE) from the source database. Instead, you'll use the standard parameter file (PFILE) created with the Amazon RDS Custom DB instance and add the parameters that you need for Oracle E-Business Suite. When you drop the database, Amazon RDS automation creates a backup of the For Oracle 12.1.0.2: 1. Copy
2. Edit the ImportantMake sure that there are no comments in the parameters that you add. Comments will cause issues with the automation, such as creating read replicas and issuing point-in-time recoveries (PITRs). 3. Add parameters similar to the following to the
4. Amend the following. The values will be dependent on your source system, so revise them based on your current setup.
5. Remove the SPFILE reference.
Notes:
6. Confirm that there are no issues with the
7. Create a symbolic link for SPFILE.
For Oracle 19c: 1. Copy
2. Edit the ImportantMake sure that there are no comments in the parameters that you add. If there are comments, they will cause issues with the automation, such as creating read replicas and issuing point-in-time recoveries (PITRs). 3. Add parameters similar to the following to the
4. Amend the following. The values will depend on your source system, so revise them based on your current setup.
5. Remove the SPFILE reference:
Notes:
6. Confirm that there are no issues with the
7. Create a symbolic link for SPFILE.
| DBA |
Restore the Amazon RDS Custom database from the backup. | For Oracle 12.1.0.2: 1. Restore the control file by using the backup file that you captured on the source earlier:
2. Catalog the backup pieces, so you can issue an
3. Create a script to restore the database:
4. Restore the source to the target Amazon RDS Custom database. You must change the permissions of the script to allow running it, and then run the
For Oracle 19c: 1. Restore the control file by using the backup file that you captured on the source earlier:
2. Catalog the backup pieces, so you can issue an
If you experience issues with the
and then repeat the command for each backup piece. 3. Create a script to restore the database. Amend the pluggable database name based on your requirements. Allocate parallel channels based on the number of vCPUs available to speed up the restore process.
4. Restore the source to the target Amazon RDS Custom database. You must change the permissions of the script to allow running it, and then run the
| DBA |
Check log files for issues. | For Oracle 12.1.0.2: 1. Confirm that there are no issues by reviewing the
2. Confirm the path of the log files registered in the control file:
3. Rename the log files to match the file path of the target. Replace the path to match the output from the previous step:
For Oracle 19c: 1. Confirm that there are no issues by reviewing the
2. Confirm the path of the log files registered in the control file:
3. Rename the log files to match the file path of the target. Replace the path to match the output from the previous step:
4. Confirm the path, the status of the log files, and the group number that is registered in the control file:
| DBA |
Confirm that you can open the Amazon RDS Custom database, and create OMF log files. | Amazon RDS Custom for Oracle uses Oracle Managed Files 1. Open the database with
NoteIf you receive the error ORA-00392: log xx of thread 1 is being cleared, operation not allowed, follow the steps in the Troubleshooting section for ORA-00392. 2. Confirm that the database is open:
3. Create the OMF log files. Change the group numbers, number of groups, and size depending on your requirements by using the output from the previous logfile query. The following example starts at group 4 and adds three groups for simplicity.
4. Drop the previous non-OMF files. Here’s an example that you can customize based on your requirements and the output from the query in earlier steps:
NoteIf you receive an ORA-01624 error when trying to drop the log files, see the Troubleshooting section. 5. Confirm that you can see the OMF files that were created. (The directory path varies for Oracle 12.1.0.2 and 19c, but the concept is the same.)
6. Restart the database and confirm that SPFILE is in use by the instance:
For Oracle 12.1.0.2, this query returns:
For Oracle 19c, the query returns:
7. For Oracle 19c only, check the status of the container database, and open it if required:
8. Delete the
For Oracle 12.1.0.2, use the command:
For Oracle 19c, use the command:
| DBA |
Task | Description | Skills required |
---|---|---|
Retrieve passwords from Secrets Manager. | You can perform these steps in the console or by using the AWS CLI. The following steps provide instructions for the console. 1. Sign in to the AWS Management Console and open the Amazon RDS console at https://console.aws.amazon.com/rds/ 2. In the navigation pane, choose Databases, and then select the Amazon RDS database. 3. Choose Configuration, and note the resource ID for the instance (it will be in the format: 4. Open the AWS Secrets Manager console at https://console.aws.amazon.com/secretsmanager/ 5. Choose the secret that has the same name as 6. Choose Retrieve secret value. | DBA |
Create the RDSADMIN user. |
For Oracle 12.1.0.2: 1. Enter the following commands at a SQL prompt:
2. Create the profile
3. Set the
4. Create the
5. Create the
6. Grant privileges to
For Oracle 19c: 1. Enter the following commands at a SQL prompt:
2. Create the profile Note
3. Set the
4. Create the
5. Create the
6. Grant privileges to
| DBA |
Create the master user. | Because the starter database was dropped and the target database was restored from the source by using RMAN, you must recreate the master user. In this example, the master username is For Oracle 12.1.0.2:
For Oracle 19c:
| DBA |
Change the super user passwords. | 1. Change the system passwords by using the password you retrieved from Secrets Manager. For Oracle 12.1.0.2:
For Oracle 19c:
For Oracle 12.1.0.2:
For Oracle 19c: For this version, you also have to connect to the container database, to update the
If you don’t change these passwords, Amazon RDS Custom displays the error message: The database monitoring user or user credentials have changed. | DBA |
Task | Description | Skills required |
---|---|---|
Create the directories required for Oracle E-Business Suite. | 1. On the Amazon RDS Custom Oracle database, run the following script as the Oracle home user, to create the
Ignore the 2. Copy the
3. Copy the As the
4. Unzip the
The | |
Configure the tsanames.ora and sqlnet.ora files. | You have to configure the
1. Create the 2. Replace the port, host, and SID in accordance with your requirements:
NoteThere should be no extra lines in the file. If you don't remove the lines, you might encounter issues when you create a read replica in the future. The creation of a read replica might fail with the error message: Activity threw exception: HostManagerException: Unable to successfully call restrictReplication on any hosts. 3. Confirm that the database can be reached:
4. For Oracle 19c only, update the
5. Test connectivity:
| DBA |
Configure the database. | Now that you have tested the connectivity to the database, you can configure the database with the appsutil utility to create the context-enabled environment. For Oracle 12.1.0.2: 1. Run the following commands:
2. Create
3. Clone the context file to set the logical hostname by using the context file you created in the previous step. As the
where
For Oracle 19c: 1. Run the following commands:
2. Create
3. Clone the context file to set the logical hostname by using the context file you created in the previous step. As the
where
| DBA |
Install ETCC and run Autoconfig. | 1. Install the Oracle E-Business Suite Technology Codelevel Checker (ETCC). Download patch 17537119 from My Oracle Support 2. Run the Autoconfig utility, and pass the new logical hostname context file. For Oracle 12.1.0.2:
For Oracle 19c: Autoconfig expects the listener name to match
NoteIf your database directories have changed, follow the instructions in Oracle Support Note 2525754.1. | DBA |
Task | Description | Skills required |
---|---|---|
Configure the TNS entries for Amazon RDS Custom and Oracle E-Business Suite. | Autoconfig generates the TNS ifiles in the default locations. For Oracle 12.1.0.2 (which is a non-CDB) and for Oracle19c PDB the default location is For Oracle 12.1.0.2 and 19c CDB, you won’t use these because the For example, Amazon RDS Custom expects the following naming format:
For Oracle 12.1.0.2 this would be:
For Oracle 19c, this would be:
Here’s an example of the For Oracle 12.1.0.2:
For Oracle 19c: Restore the original
Start the listener
For Oracle 12.1.0.2: Edit the Oracle E-Business Suite environment file to change the NoteYou should edit the environment file only in Oracle 12.1.0.2, because the default home for 19c is For example, in Oracle 12.1.0.2, edit the file:
Change the path from:
to:
NoteEvery time you run Autoconfig, you must repeat this step to make sure that the correct TNS ifiles are being used. (12.1.0.2 only). For Oracle 19c: 1. Change the value for the database tier context variable NoteDo not update the
2. Save the changes you made to the value of The values for
3. Run Autoconfig on the database tier:
| DBA |
Set the environment for the rdsdb user. | Skip this step for Oracle 19c. For Oracle 12.1.0.2: Now that you have completed Autoconfig and TNS entries, you need to load the environment file by setting it in the Update The following example environment file is created when you run Autoconfig:
As the
Note For Oracle 19c, you do not have to load the CDB environment in | DBA |
Configure the application and database for Amazon RDS Custom. | Complete the first two steps for both Oracle 12.1.0.2 and 19c. The subsequent steps differ for each version. 1. On the application tier, edit
Because you are using logical hostnames, you can replace the database node almost seamlessly. 2. On the Amazon RDS Custom DB instance, add or amend the security group that is assigned to the source EC2 instance to reflect the Amazon RDS Custom DB instance, to ensure that the application can access the node. For Oracle 12.1.0.2: 3. Run Autoconfig. As application owner (for example,
4. Verify the
5. Confirm that you can log in, and start the application:
For Oracle 19c:
2. Test connectivity as
3. Run Autoconfig on the database tier:
4. Run Autoconfig on the application tier as the application owner (for example,
5. Verify the
6. Start the application:
| DBA |
Task | Description | Skills required |
---|---|---|
Resume automation to confirm that it works. | Resume automation by using the following AWS CLI command:
The database is now managed by Amazon RDS Custom. For example, if the listener or database goes down, the Amazon RDS Custom agent will restart them. To test this, run commands such as the following. Stop listener example:
Shutdown database example:
| DBA |
Validate schema, connections, and maintenance tasks. | To finalize the migration, you must perform the following tasks at a minimum.
| DBA |
Troubleshooting
Issue | Solution |
---|---|
You receive an ORA-01624 error when you try to drop the log files. | If you receive an ORA-01624 error when you try to drop the log files, follow these steps. Issue the following command and wait until the status of the log files you want to drop is
In this example, log file 1 is
Wait until all the log files that you want to drop are
|
You receive an ORA-00392 error when you open the database with | If you receive the error ORA-00392: log xx of thread 1 is being cleared, operation not allowed, run the following command (replace
|
You have trouble connecting to the application using Sysadmin or application user. | To confirm the issue, run the following SQL query:
Root cause: The source database was applied with multiple patches, but the Amazon RDS Custom Reference: datapatch -verbose Fails with Error :" Patch xxxxxx: Archived Patch Directory Is Empty" (Doc ID 2235541.1) Fix: Copy the missing patch-related files from the source ( For example:
Alternatively, you can use a workaround by running the following command on the CDB and PDB:
Then run the following command on the PDB:
Now run the test again:
|
Related resources
Working with Amazon RDS Custom (Amazon RDS documentation)
Amazon RDS Custom for Oracle – New Control Capabilities in Database Environment
(AWS News blog) Integrate Amazon RDS Custom for Oracle with Amazon EFS
(AWS Database blog) Migrating Oracle E-Business Suite on AWS
(AWS whitepaper) Oracle E-Business Suite architecture on AWS (AWS whitepaper)
Set up an HA/DR architecture for Oracle E-Business Suite on Amazon RDS Custom with an active standby database (AWS Prescriptive Guidance)
Additional information
Maintenance operations
Patching Oracle E-Business Suite database home with new patches
As the bin volume (/rdsdbbin
) is an out-of-place upgrade, the contents of the bin volume are dropped during the CEV upgrade. Therefore, you have to create a copy of the appsutil
directory before you perform any upgrades by using CEV.
On the source Amazon RDS Custom instance, before you upgrade the CEV, take a backup of $ORACLE_HOME/appsutil
.
Note
This example uses an NFS volume. However, you can use a copy to Amazon Simple Storage Service (Amazon S3) instead.
1. Make a directory to store appsutil on the source Amazon RDS Custom instance:
$ mkdir /RMAN/appsutil.preupgrade
2. Tar and copy to the Amazon EFS volume:
$ tar cvf /RMAN/appsutil.preupgrade appsutil
3. Verify that the tar file exists:
$ bash-4.2$ ls -l /RMAN/appsutil.preupgrade
-rw-rw-r-- 1 rdsdb rdsdb 622981120 Feb 8 20:16 appsutil.tar
4. Upgrade to the latest CEV (prerequisite CEV is already created) by following the instructions in Upgrading an RDS Custom DB instance in the Amazon RDS documentation).
You can also patch directly by using OPATCH. See the Requirements and considerations for RDS Custom for Oracle Upgrades section of the Amazon RDS documentation.
Note
The IP address of the host machine does not change during the CEV patching process. This process performs an out-of-place upgrade, and during startup a new bin volume is attached on the same instance.