Friday, December 19, 2025

FAQ: Oracle E-Business Suite and the Oracle Multitenant Architecture



Oracle E-Business Suite and Multitenant Architecture: A Practical Guide

Oracle E-Business Suite (EBS) has steadily evolved to align with modern Oracle Database capabilities, including the multitenant architecture. This article provides a consolidated, practitioner-focused overview of how Oracle E-Business Suite works with Container Databases (CDBs) and Pluggable Databases (PDBs), covering architecture, operations, patching, performance, and diagnostics.


1. Multitenant Architecture Overview for Oracle E-Business Suite

How EBS Supports Multitenant Databases

Oracle E-Business Suite supports a single-tenant multitenant model, where one Container Database (CDB) hosts exactly one Oracle E-Business Suite Pluggable Database (PDB). While this leverages multitenant technology, EBS itself does not currently support multiple PDBs within the same CDB.

Supported deployment combinations include:

  • EBS Release 12.2

    • On-premises with Oracle Database 19c or 23ai

    • OCI Base Database Service (1-node or 2-node)

    • Exadata Database Service (Dedicated Infrastructure or Cloud@Customer)

  • EBS Release 12.1.3

    • Oracle Database 19c (on-premises or OCI-supported platforms)

How Many PDBs Are Supported?

At present, Oracle E-Business Suite supports only one PDB per CDB. Running multiple EBS PDBs in a single container is not certified.

Licensing Considerations

Since EBS uses a single PDB per CDB, the Oracle Multitenant option license is not required. The multitenant licensing requirement applies only when more than one PDB is hosted in a CDB.


2. Infrastructure Considerations for Multitenant EBS

On-Premises Environments

When upgrading an Oracle E-Business Suite database to Oracle Database 19c, the database is converted from a non-CDB to a CDB with a single PDB as part of the upgrade process. This conversion is mandatory for EBS on newer database versions.

Oracle Cloud Infrastructure (OCI)

For EBS deployments moving to OCI database services—such as Base Database Service or Exadata—the database must also be converted to a multitenant architecture. This applies whether the migration is from an earlier database release or from on-premises infrastructure.


3. Working with the EBS Container Database (CDB)

Sourcing the CDB Environment

CDB-specific environment files reside under the database ORACLE_HOME. Administrators should source the appropriate environment file before performing CDB-level operations.

Connecting as SYSDBA

Once the CDB environment is sourced, connections to the container database are made using standard SYSDBA access via SQL*Plus.

Starting and Stopping the CDB

  • Single-instance systems use SQL*Plus startup and shutdown commands.

  • Oracle RAC environments use srvctl to manage the database across nodes.

Cloning EBS in a Multitenant Setup

In on-premises environments, the EBS Rapid Clone utility can be used to clone both the CDB and the associated PDB together. This ensures application and database consistency.


4. Managing the Oracle E-Business Suite PDB

Sourcing the PDB Environment

PDB-specific environment files are also stored in the ORACLE_HOME. These must be sourced before performing application-related database tasks.

Connecting to the PDB as SYSDBA

To connect directly to the PDB:

  1. Source the CDB environment.

  2. Set the PDB identifier.

  3. Connect using SYSDBA privileges.

Opening and Closing the PDB

The PDB is opened or closed from the CDB root using SQL commands. Administrators can also save the PDB state so that it automatically restores its open mode when the CDB restarts.

Viewing PDB Status

PDB details such as name and open mode can be queried using standard multitenant views. These views provide quick insight into PDB availability and state.

Switching Sessions from CDB to PDB

While logged into the CDB, sessions can be explicitly switched to the EBS PDB using an ALTER SESSION SET CONTAINER command.

Troubleshooting PDB Issues

If problems occur during PDB operations, plugin violation views can be queried to identify configuration or compatibility issues.

Can an EBS PDB Be Moved Between CDBs?

Currently, Oracle does not support unplugging and plugging an Oracle E-Business Suite PDB between CDBs, whether for relocation or cloning.


5. Multitenant-Specific Context Parameters

Oracle E-Business Suite uses several context file variables to support multitenant databases, including:

  • Indicators for pluggable database usage

  • CDB and PDB naming details

  • Database service naming conventions

  • Multitenant tenancy indicators

  • Network configuration paths

These parameters are automatically maintained and are critical for AutoConfig and runtime operations.

Running AutoConfig

Before running AutoConfig on the database tier, administrators must always source the PDB environment, not the CDB environment.


6. Migrating from Non-CDB to PDB

Data from an Oracle 12c non-CDB database can be moved directly into a PDB using Oracle Data Pump. This approach is commonly used during database upgrades and platform migrations for EBS Release 12.2.


7. Running SQL and EBS Scripts in a Multitenant Setup

When executing EBS database scripts:

  1. Source the CDB environment.

  2. Set the ORACLE_PDB_SID to the EBS PDB.

  3. Run the required SQL or utility scripts.

This ensures scripts execute in the correct container context.


8. Patching Oracle E-Business Suite Multitenant Databases

EBS Technology Codelevel Checker (ETCC)

ETCC validates whether required database and application tier patches are applied. Since it reads the EBS context file, the PDB environment must be sourced before execution. OCI environments require an additional parameter to indicate cloud deployment.

OPatch Inventory

The OPatch inventory for a multitenant database is listed the same way as a traditional database, by sourcing the CDB environment and running standard OPatch commands.

Preparing for Database Patching

Database patching is performed from the CDB environment. However, before running datapatch, ensure the EBS PDB is open, as SQL fixes apply only to active PDBs.


9. Performance Best Practices

To achieve optimal performance in Oracle E-Business Suite:

  • Follow Oracle-recommended performance methodologies

  • Apply recommended performance patches

  • Configure database initialization parameters as per the EBS release and database version

  • Remove obsolete or restricted parameters listed in Oracle documentation

These steps are critical for both stability and scalability.


10. Diagnostics and Monitoring in Multitenant EBS

Alert Logs and Trace Files

In a multitenant architecture, all alert logs and trace files for both the CDB and its PDBs are stored under the CDB diagnostic directory. The exact location can be retrieved from dynamic performance views.

AWR Reports for PDBs

  • In Oracle 12c, AWR data is collected only at the CDB level.

  • Oracle 19c introduces PDB-aware AWR reporting, with separate views for root-level and PDB-level statistics.

Administrators can generate AWR reports by selecting the appropriate data source during report creation.


Conclusion

Oracle E-Business Suite’s adoption of the multitenant architecture provides a modern foundation while maintaining a conservative, single-tenant design. Understanding the operational boundaries—especially around PDB limitations, patching, and diagnostics—is essential for administrators managing EBS on-premises or on Oracle Cloud Infrastructure.

With the right practices in place, multitenant EBS environments can deliver improved manageability, standardization, and alignment with Oracle’s long-term database roadmap.

Multipart Upload a large file to Oracle Cloud Infrastructure Object Storage using cURL

 When you have large files to be transferred either from on-premise or from another cloud to OCI, the best way is to do that is using Multipart upload. Multipart uploads help to accommodate objects that are too large for a single upload operation. OCI now supports doing multipart upload from cURL directly instead of using SDK’s or oci-cli. With a Pre-Authenticated URL (PAR) you can avoid configuring API keys and sharing it with external parties. PAR URL can provide a quick and secure way to upload files to OCI object storage.

The maximum size for an uploaded object is 10 TiB on OCI and object parts cannot be larger than 50 GiB. It is highly recommended to use multipart uploads to upload objects larger than 100 MiB. You can split the files into chunks and initiate a multipart upload from curl. You are responsible for creating the parts to upload. Object Storage just provides the API operations for the remaining steps. Once all the parts are uploaded, a final POST call is required to assemble the file. Let us now see what those steps are :

1. Create a PAR URL on Bucket

Press enter or click to view image in full size
PAR URL

Generated PAR URL:

https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/o/

2. Split the large file into parts

You can split the file in parts using any OS utility. We will use split on Linux to divide the large file large_random_data.csv into 250MB chunks

Become a member

Decide what part number you want to use for each part. Part numbers can range from 1 to 10,000. You do not need to assign contiguous numbers, but Object Storage constructs the object by ordering part numbers in ascending order.

split -b 250M -d large_random_data.csvls -ltrh x*-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x00
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x01
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x02
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x03
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x04
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x05
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x06
-rw-rw-r — . 1 opc opc 250M Aug 2 22:56 x07
-rw-rw-r — . 1 opc opc 50M Aug 2 22:56 x08

3. Create Multipart upload for the file on OCI Object Storage using the par URL

curl -X PUT -H “opc-multipart:true” https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/o/large_random_data.csv

Output

{
“namespace”: “idmldytingzx”,
“bucket”: “DWH-Load”,
“object”: “large_random_data.csv”,
“uploadId”: “7f878479–00e1–4630–23b6–683deac88a78”,
“timeCreated”: “2021–08–03T21:10:59.273Z”,
“storageTier”: “Standard”,
“accessUri”: “/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479–00e1–4630–23b6–683deac88a78/”
}

Use the access URI together with the Object Storage hostname for the target region to upload parts, specifying the part number at the end of the URI. For example, to upload an object in 9 parts, issue the following PUT commands

curl -X PUT — data-binary ‘@x00https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/1curl -X PUT — data-binary ‘@x01https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/2curl -X PUT — data-binary ‘@x02https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/3curl -X PUT — data-binary ‘@x03https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/4curl -X PUT — data-binary ‘@x04https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/5curl -X PUT — data-binary ‘@x05https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/6curl -X PUT — data-binary ‘@x06https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/7curl -X PUT — data-binary ‘@x07https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/8curl -X PUT — data-binary ‘@x08https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/9

4. To commit the multipart upload, use the POST command with the access URI. For example:

curl -X POST https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/

You can delete all parts of an uncommitted or failed multipart upload using the DELETE command with the access URI. For example:

curl -X DELETE https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/u/large_random_data.csv/id/7f878479-00e1-4630-23b6-683deac88a78/

5. To GET list of objects

curl -X get <unique-par-url>curl -X GET https://objectstorage.us-ashburn-1.oraclecloud.com/p/OxZ47fcsRhQRxNqhPJzCpqvw23zqZQGV1L9nnLY-g3FzNgO223qo9mR77K2U1gpE/n/idmldytingzx/b/DWH-Load/o/

Make sure you delete the par URL once the upload is complete or create it with a short validity for security purpose.

FAQ: Oracle E-Business Suite and the Oracle Multitenant Architecture

Oracle E-Business Suite and Multitenant Architecture: A Practical Guide Oracle E-Business Suite (EBS) has steadily evolved to align with mod...