BlueXP Blog

A Reference Architecture for Deploying Oracle Databases in the Cloud

Written by Prabu Arjunan, Solution Architect | Aug 28, 2019 11:02:54 AM

Cloud adoption among enterprises is unfolding rapidly. Many organizations are adopting a cloud-first strategy for new projects and migrating their existing systems. For example, Oracle workloads are mission critical for most enterprises and feature prominently in discussions about enterprise cloud migration.

If you’re running Oracle databases on premises and are seeking a similar data management solution in the cloud, Azure provides several solutions you can use. When moving your database to the cloud, you should prioritize solutions that provide high performance with low latency, data protection, data durability, encryption, and high availability. NetApp, in a partnership with Microsoft has created a one-stop cloud storage solution that meets these needs.

The Typical Challenge of Migrating Oracle Databases to the Cloud

When you move your database to the cloud, there are several options to keep in mind. Some of the most common challenges and questions that come up with this type of migration include:

  • How to plan the migration from an on-premises environment to Azure
  • How to achieve on-premises-like performance and advanced data management for Oracle workloads in the cloud
  • How to migrate a diagnostics pack for the Oracle database that you're looking to migrate
  • How to gain a baseline understanding of application performance and platform utilization

Deploying an Oracle Database in Azure by Using Virtual Machines

The easiest way to deploy Oracle databases in Azure is to use one of the preconfigured machine images. These images were created through a partnership between MIcrosoft and Oracle, and you can find them through the marketplace or with the following CLI command:

az vm image list --publisher oracle -o table --all

Alternatively, if you want to migrate your existing database, you can use the Oracle Diagnostics Pack to determine your current configurations. In this pack, the Automatic Workload Repository (AWR) report can provide the metrics that are currently required for your database.

When gathering these metrics, make sure to run the report during both peak and regular workloads. This approach helps you avoid underprovisioning your resources and prevents loss of performance during high request periods.

Virtual machine size
When sizing your virtual machine (VM), take the following steps:

  • Estimate size by using metrics from your AWR report. These metrics include CPU, I/O, and memory usage. You should also consider your top five foreground events, because they can help you identify where bottlenecks might occur.
  • Choose a VM. Select the VM image (VMI) that most closely matches your needs. Pay close attention to the Azure compute units (ACU) available, because this metric helps you compare compute performance in Azure. If there is not a clear match, it is better to err on the larger side to prevent performance issues.

Security
After your VM is selected and configured, make sure that your data and network are protected. When reviewing your security, be sure to consider the following factors:

  • Azure network security group (NSG) policies. You can define your network security group policies with subnets or a network interface controller (NIC). However, subnets are easier to manage in terms of security and force routing. When setting up your subnets, separate your application service and database for better control.
  • Jumpbox. Consider using a jumpbox as a proxy between your administration machine and your database. This approach enables you to limit IP access and restrict connections to your database and application service.

Deploying an Oracle Database in Azure by Using a Fully Managed Cloud Service

Microsoft provides Azure NetApp Files, a fully managed cloud service powered by NetApp technology with full Azure portal integration and access through REST API, CLI, or Windows PowerShell. It’s sold and supported by Microsoft and is not a marketplace offering. With Azure NetApp Files, you can seamlessly migrate and run applications in the cloud without worrying about procuring or managing storage infrastructure. You can purchase Azure NetApp Files and get support through your existing Azure agreements, with no up-front or separate term agreement.

Azure NetApp Files is a one-stop storage solution for cloud customers who are looking to run Oracle databases in the cloud. The solution lets you run a high-performance database with low latency and maximum data protection. This solution also uses NetApp Snapshot technology, which offers for rapid, efficient database backup and restoration. By design, Azure NetApp Files provides four nines of availability and nine nines of data durability.

Key Benefits of Azure NetApp Files for Oracle

Using Azure NetApp Files can provide several benefits over other storage options in Azure. These benefits include the following.

High performance with low latency
Azure NetApp Files provides shared persistent storage with high throughput, low latency, and consistent volume performance with over 300,000 IOPS. Azure NetApp Files can generate about 470,000 IOPS with less than 0.5-millisecond latency (32 DS32 VMs; 50% 8KiB read and write IOPS) and up to 4.5GMiB/s of throughput. It can meet the demands of large Oracle databases and includes SLAs that ensure consistent performance. With the storage bottleneck freed by Azure NetApp Files, you can hit targets without the need to overprovision the compute and while saving the added costs of additional Oracle licenses.

For Oracle IOPS details, refer to “Oracle IOPS with Azure NetApp Files” later in this article.

Power of NetApp ONTAP
NetApp ONTAP systems provide enterprise-grade storage support for both Linux and Windows file shares, including support for NFSv3, NFSv4.1, and SMB 3.1. These systems enable powerful data management with Snapshot copies of datasets and high availability, and they achieve sub-millisecond latency.

Increased resilience with Snapshot copies
You can easily create a Snapshot copy of an Oracle database in the cloud by using NetApp Snapshot technology. Snapshot copies act as logical backups. They’re point-in-time representations of your data that you can quickly revert to restore databases without downtime.

You create Snapshot copies manually or schedule their creation by using the Azure NetApp Files API. A Snapshot copy in Azure NetApp Files manipulates block pointers, creating a “frozen” read-only view of a volume. You can then access this view from your applications, and you can use older versions of files and directory hierarchies without special programming.

Creating Snapshot copies typically takes less than a second, regardless of the size of the volume or the level of activity within the environment. Because Snapshot copies are read-only, block-level incremental copies, you pay only for the space consumed by new data written.

Faster time to market
You can quickly spin up volumes based on any Snapshot copy. These volumes enable you to back up database files that can be used to mirror environments, back up data, or support recovery processes. For example, you can easily make copies of data for testing and development.

Data durability
With Azure NetApp Files, data is protected against multiple internal failures and storage media errors. These errors can harm your data durability and your data integrity. To avoid these problems, Azure NetApp Files provides 99.9999999% durability.

High availability
Azure NetApp Files uses enterprise-grade hardware and software to provide high availability with a 99.99% uptime guarantee. This benefit is built in with architectural features, such as redundant network paths, failover, and advanced data protection.

Security and encryption
Azure NetApp Files enables FIPS-140-2–compliant data encryption at rest, role-based access controls (RBACs), Active Directory authentication (enabled for SMB), and export policies for network-based access control lists. It also enhances data security by presenting mount points only within a virtual private cloud, and not as a public IP address.

Detailed Reference Architecture: Azure NetApp Files for Oracle

In Figure 1, you can see that the Oracle database datafiles and logs are configured on Azure NetApp Files. With the combination of Snapshot copies and rightsized throughput, you can easily host your high-performance database in the cloud with maximum data protection and four nines of data availability.

In the diagram, you can see:

  • The Oracle database is configured on an Azure VM.
  • Single or multiple Azure NetApp Files volumes are used as the dedicated storage for the datafiles.
  • An additional volume is dedicated to logs (archive logs, redo logs) and control files.
  • The datafile volume is provisioned using the Ultra service level to achieve the highest throughput at a manageable cost.
  • A second volume is provisioned using the Premium service level.

Figure 1) Oracle Database on a single virtual machine.

The key components of the solution in Figure 1 include:

  • Oracle Database engine
  • Azure VM
  • Azure NetApp Files (storage)
  • NetApp SnapshotTM Technology

Figure 2) Oracle Database: high availability on Azure NetApp Files.

In Figure 2, you can see that the Oracle database datafiles, archive logs, redo logs, and control files are configured on Azure NetApp Files. The setup resembles the single-instance Oracle database diagram in Figure 1, except that the setup in Figure 2 includes a standby database.

The database is set up on the second Azure VM, in a different virtual network, which was done by copying a primary database to the second instance. Availability increases when you have two file volumes.

The key components of the solution in Figure 2 include:

  • The Oracle primary database is configured on an Azure VM in the first availability zone with data residing in Azure NetApp Files.
  • The standby database is setup on the second Azure VM in a second availability zone by replicating the primary database to the second instance.
  • The standby database is set up on the second Azure VM in a second availability zone by replicating the primary database to the second instance.
  • A singlevolume or multiplevolumes are used as the dedicated storage for the datafiles.
  • An additional volume is dedicated to logs (archive logs, redo logs) and control files.
  • The data volume is provisioned using the Ultra service level. The other volume is provisioned using the Premium service level.

Oracle IOPS with Azure NetApp Files

Figure 3 illustrates the performance of an Oracle database in the cloud on Azure NetApp Files. NetApp ran the benchmark with various workload mixtures and volume counts. The results were stunning.

The graph in Figure 3 shows Oracle Database performance with Azure NetApp Files on the Oracle SLOB benchmark. A mixed read/write Oracle workload running in a single Standard D64s_v3 Linux VM instance is able to deliver 71,000 file system IOPS at sub-0.5-millisecond latency in a single NFS volume.

Up to 218,000 IOPS were seen while latency was still below 2.5 milliseconds. Adding a second Azure NetApp Files data volume enables scaling performance of 310,000 IOPS and greater, while latency remains well below 2 milliseconds.

Figure 3) Comparison of Oracle with Azure NetApp Files on one versus two volumes.

Oracle Direct NFS (dNFS) is an optimized NFS client that provides faster and more scalable access to NFS storage located on NAS storage devices (accessible over TCP/IP). dNFS is built into the database kernel. As shown in Figure 4, by using dNFS (available since Oracle 11g), an Oracle database running on an Azure VM can deliver significantly more I/O than a native NFS client.

Figure 4) Comparison of Oracle with Azure NetApp Files on dNFS and kernel NFS (kNFS):

Code Snippet: GET and PUT Request Example

Azure NetApp Files has REST APIs that can be called by various orchestration engines and scripting languages. Here are some example scripts that you can use to get started. 

This example includes:

  •    All NetApp accounts
  •   Capacity pools for NetApp accounts
  •   Volumes
  •   Snapshot copies for a volume
#get NetApp accounts
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts?api-version=2017-08-15

#get capacity pools for NetApp account
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools?api-version=2017-08-15

#get volumes in NetApp account & capacity pool
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes?api-version=2017-08-15

#get snapshots for a volume
curl -X GET -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/VOLUMEGOESHERE/snapsh
ots?api-version=2017-08-15

#create a NetApp account
curl -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE?api-version=2017-08-15

#create a capacity pool
curl -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE?api-version=2017-08-15

#create a volume
curl -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/MYNEWVOLUME?api-version=2017-
08-15

#create a volume snapshot
curl -X PUT -H "Authorization: Bearer TOKENGOESHERE" -H "Content-Type: application/json"
https://management.azure.com/subscriptions/SUBIDGOESHERE/resourceGroups/RESOURCEGROUPGOESHERE/providers/Microsoft.NetApp/netAppAccounts/NETAPPACCOUNTGOESHERE/capacityPools/CAPACITYPOOLGOESHERE/volumes/MYNEWVOLUME/Snapshots/SNAPNAME?api-version=2017-08-15

For more details, see the Azure NetApp Files API documentation.

Customer Support for Azure NetApp Files

Azure NetApp Files is fully supported by Microsoft Azure. If you have questions or need help with the service, you can create a support request: Click the question mark in the top-right corner of the Azure Portal interface, and then click the Help + Support button.

How Does Oracle licensing work?
Oracle Database licensing on Azure is based on the size of the instance on which the database is installed. In Microsoft Azure, if hyperthreading is enabled, two virtual CPUs (vCPUs) are equivalent to one Oracle Processor license. If hyperthreading is not enabled, one vCPU is equivalent to one Oracle Processor license. For details, see Licensing Oracle Software in the Cloud Computing Environment.

Oracle Middleware Support
Azure NetApp Files supports Oracle middleware applications such as Oracle Fusion. To minimize network latency issues, Oracle recommends that all metadata repositories reside on a database at the same site as the components. For more details, please refer to Supported Virtualization and Partitioning Technologies for Oracle Fusion Middleware.

Already a seller or partner?

For further information on performance, please download this report