|
1 | | -# Microhack - Intro To Oracle DB Migration to Azure |
| 1 | + |
2 | 2 |
|
3 | | -## Important Notice |
| 3 | +# 🚀 Microhack - Oracle Database @ Azure (ODAA) |
4 | 4 |
|
5 | | -This project is currently under development and is subject to change until the first official release, which is expected by the end of 2024. Please note that all content, including instructions and resources, may be updated or modified as the project progresses. |
| 5 | +## 📖 Introduction |
6 | 6 |
|
| 7 | +This intro-level microhack (hackathon) helps you gain hands-on experience with Oracle Database@Azure (ODAA). |
7 | 8 |
|
8 | | -## Introduction |
| 9 | +### What is Oracle Database at Azure |
| 10 | +Oracle Database@Azure (ODAA) is the joint Oracle–Microsoft managed service that delivers different Database services - see [ODAA deployed Azure regions](https://apexadb.oracle.com/ords/r/dbexpert/multicloud-capabilities/multicloud-regions?session=412943632928469) running on Oracle infrastructure colocated in Azure regions while exposing native Azure management, networking, billing, integration with Azure Key Vault, Entra ID or Azure Sentinel. This microhack targets the first-tier partner solution play focussed on Autononmous database because Microsoft designates ODAA as a strategic, co-sell priority workload; the exercises give partner architects the end-to-end skills—subscription linking, delegated networking, hybrid connectivity, and performance validation—needed to confidently deliver that priority scenario for customers with Oracle related workloads in Azure. |
9 | 11 |
|
10 | | -This intro level microhack (hackathon) will help you get hands-on experience migrating Oracle databases from on-premises to different Azure Services. |
| 12 | +### What You Will Learn in the MicroHack |
| 13 | +You will learn how to create and configure an Autonomous Database shared of the offered Oracle Database@Azure services, how to deploy an Autonomous Database instance inside an Azure delegated subnet, update network security group (NSG) and DNS settings to enable connectivity from a simulated on-premises environment, and measure network performance to the Oracle Autonomous Database instance. To make the microhack more realistic we will deploy the Application layer (AKS) and the Data layer (ODAA) in 2 different subscription to simulate a hub & spoke architecture. The following picture shows highlevel the architecture of the microhack. |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +Furthermore we will address the integration of ODAA into the existing Azure native services and howto use Goldengate for migrations to ODAA and integration into Azure Fabric. |
11 | 18 |
|
12 | 19 | ## Learning Objectives |
13 | | -In this microhack you will solve a common challenge for companies migrating to the cloud: migrating Oracle databases to Azure. The application using the database is a sample e-commerce [application](https://github.com/pzinsta/pizzeria) written in JavaScript. It will be configured to use Oracle Database Express Edition [Oracle XE]. |
14 | | - |
15 | | -The participants will learn how to: |
16 | | - |
17 | | -1. Perform a pre-migration assessment of the databases looking at size, database engine type, database version, etc. |
18 | | -1. Use offline tools to copy the databases to Azure OSS databases |
19 | | -1. Use the Azure Database Migration Service to perform an online migration (if applicable) |
20 | | -1. Do cutover and validation to ensure the application is working properly with the new configuration |
21 | | -1. Use a private endpoint for Azure OSS databases instead of a public IP address for the database |
22 | | -1. Configure a read replica for the Azure OSS databases |
23 | | - |
24 | | -## Challenges |
25 | | -- Challenge 0: **[Pre-requisites - Setup Environment and Prerequisites!](Student/00-prereqs.md)** |
26 | | - - Prepare your environment to run the sample application |
27 | | -- Challenge 1: **[Discovery and assessment](Student/01-discovery.md)** |
28 | | - - Discover and assess the application's PostgreSQL/MySQL/Oracle databases |
29 | | -- Challenge 2: Oracle to IaaS migration |
30 | | -- Challenge 3: Oracle to PaaS migration |
31 | | -- Challenge 4: Oracle to Azure OCI migration |
32 | | -- Challenge 5: Oracle to Oracle Database on Azure migration |
33 | | - |
34 | | -## Prerequisites |
35 | | - |
36 | | -- Access to an Azure subscription with Owner access |
37 | | - - If you don't have one, [Sign Up for Azure HERE](https://azure.microsoft.com/en-us/free/) |
38 | | - - Familiarity with Azure Cloud Shell |
39 | | -- [**Visual Studio Code**](https://code.visualstudio.com/) (optional) |
40 | | - |
41 | | -## Repository Contents |
42 | | -- `../Coach` |
43 | | - - [Lecture presentation](Coach/OSS-DB-What-the-Hack-Lecture.pptx?raw=true) with short presentations to introduce each challenge |
44 | | - - Example solutions and coach tips to the challenges (If you're a student, don't cheat yourself out of an education!) |
45 | | -- `../Student/Resources` |
46 | | - - Pizzeria application environment setup |
47 | 20 |
|
| 21 | +- Understand how to onboard securely to Azure and prepare an account for Oracle Database@Azure administration. |
| 22 | +- Learn the sequence for purchasing and linking an Oracle Database@Azure subscription with Oracle Cloud Infrastructure. |
| 23 | +- Deploy an Autonomous Database instance inside an Azure network architecture and the required preparations. |
| 24 | +- Apply required networking and DNS configurations to enable hybrid connectivity between Azure Kubernetes Service and Oracle Database@Azure resources. |
| 25 | +- Operate the provided tooling (Helm, GoldenGate, Data Pump, SQL*Plus) to simulate data replication scenarios and measure connectivity performance. |
| 26 | +<br> |
| 27 | +<br> |
| 28 | +- <b>Optional</b> available session is the integration of Oracle Database at Azure databases into the Azure Fabric to have a holistic view on business data including the realization of a central data governance. |
| 29 | +- <b>Optional</b> available session is the integration of the deployed ADB via OAuth v2 tokens with the Azure Entra ID |
| 30 | + |
| 31 | +## 📋 Prerequisites |
| 32 | + |
| 33 | +- Powershell Terminal |
| 34 | +- 🔧 install Azure CLI |
| 35 | +- ⚓ install kubectl |
| 36 | +- install Helm |
| 37 | +- install git and clone the this repo |
| 38 | + |
| 39 | +## 🎯 Challenges |
| 40 | + |
| 41 | +### Challenge 0: Set Up Your User Account |
| 42 | + |
| 43 | +Before we start with the Microhack you should have 3 passwords: |
| 44 | +1. You User with the initial password for the registration, which you have to change during the registration |
| 45 | + |
| 46 | +2. The password you need to use for admin user of the ADB deployment - <font color=red>Don't use different passwords</font> |
| 47 | +3. The password you need to use for the AKS cluster deployment - <font color=red>Don't use different passwords</font> |
| 48 | + |
| 49 | + |
| 50 | +Open a private browser session or create an own browser profile to sign in with the credentials you received, and register multi-factor authentication. In a first check you have to verify if the two resource groups for the hackathon are created. |
| 51 | +<br> |
| 52 | +The goal is to ensure your Azure account is ready for administrative work in the remaining challenges. |
| 53 | + |
| 54 | +#### Actions |
| 55 | +* Enable the multi factor authentication (MFA) |
| 56 | +* Login into the Azure portal with the assigned User |
| 57 | +* Verify if the ODAA and AKS resource group including resources are available |
| 58 | +* Verfity the users roles |
| 59 | + |
| 60 | + |
| 61 | +#### Sucess criteria |
| 62 | +* Download the Microsoft authenticator app on your mobile phone |
| 63 | +* Enable MFA for a successful Login |
| 64 | +* Check if the resource groups for the aks and ODAA are available and contains the resources. |
| 65 | +* Check if the assigned user have the required roles in both resource groups. |
| 66 | + |
| 67 | +#### Learning Resources |
| 68 | +* [Sign in to the Azure portal](https://learn.microsoft.com/azure/azure-portal/azure-portal-sign-in), |
| 69 | +* [Set up Microsoft Entra multi-factor authentication](https://learn.microsoft.com/azure/active-directory/authentication/howto-mfa-userdevicesettings) |
| 70 | +* [Groups and roles in Azure](https://docs.oracle.com/en-us/iaas/Content/database-at-azure/oaagroupsroles.htm) |
| 71 | + |
| 72 | +#### Solution |
| 73 | +* Challenge 0: [Set Up Your User Account](./walkthrough/setup-user-account/setup-user-account.md) |
| 74 | + |
| 75 | +<br> |
| 76 | +<hr> |
| 77 | + |
| 78 | +### Challenge 1: Create an Oracle Database@Azure (ODAA) Subscription |
| 79 | + |
| 80 | +Review the Oracle Database@Azure service offer, the required Azure resource providers, and the role of the OCI tenancy. By the end you should understand how an Azure subscription links to Oracle Cloud so database services can be created. |
| 81 | + |
| 82 | +#### Actions |
| 83 | +* Move to the ODAA marketplace side. The purchasing is already done, but checkout the implementation of ODAA on the Azure side. |
| 84 | +* Access the OCI console via the pre defined federation implementation |
| 85 | +* Check if the required Azure resource providers are enabled |
| 86 | + |
| 87 | + |
| 88 | +#### Sucess criteria |
| 89 | +* Search for the Oracle Database at Azure |
| 90 | +* Make yourself familar with the available services of ODAA and how to purchase ODAA |
| 91 | + |
| 92 | +#### Learning Resources |
| 93 | +* [ODAA in Azure an overview](https://www.oracle.com/cloud/azure/oracle-database-at-azure/) |
| 94 | +* [Enhanced Networking for ODAA](https://learn.microsoft.com/en-us/azure/oracle/oracle-db/oracle-database-network-plan) |
| 95 | + |
| 96 | +#### Solution |
| 97 | +* Challenge 1: [Create an Oracle Database@Azure (ODAA) Subscription](./walkthrough/create-odaa-subscription/create-odaa-subscription.md) |
| 98 | + |
| 99 | + |
| 100 | +<br> |
| 101 | +<hr> |
| 102 | + |
| 103 | + |
| 104 | + |
| 105 | +### Challenge 2: Create an Oracle Database@Azure (ODAA) Autonomous Database (ADB) Instance |
| 106 | + |
| 107 | +Walk through the delegated subnet prerequisites, select the assigned resource group, and deploy the Autonomous Database instance with the standard parameters supplied in the guide. Completion is confirmed when the database instance shows a healthy state in the portal. |
| 108 | + |
| 109 | +#### Actions |
| 110 | +* Verify that a delegated subnet of the upcoming ADB deployment is available |
| 111 | +* Deploy the ADB in the previous created subnet |
| 112 | + |
| 113 | + |
| 114 | +#### Sucess criteria |
| 115 | +* Delegated Subnet is available |
| 116 | +* ADB shared is successfully deployed |
| 117 | + |
| 118 | +#### Learning Resources |
| 119 | +* [How to provision an Oracle ADB in Azure](https://learn.microsoft.com/en-us/azure/oracle/oracle-db/oracle-database-provision-autonomous-database) |
| 120 | +* [Deploy an ADB in Azure](https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html) |
| 121 | + |
| 122 | +#### Solution |
| 123 | +* Challenge 2: [Create an Oracle Database@Azure (ODAA) Autonomous Database (ADB) Instance](./walkthrough/create-odaa-adb/create-odaa-adb.md) |
| 124 | + |
| 125 | +### Challenge 3: Update the Oracle ADB NSG and DNS |
| 126 | + |
| 127 | +Update the Network Security Group to allow traffic from the AKS environment and register the Oracle private endpoints in the AKS Private DNS zones. Validate connectivity from AKS after both security and DNS changes are applied. |
| 128 | + |
| 129 | +#### Actions |
| 130 | +* Set the NSG of the CIDR on the OCI side, to allow Ingress from the AKS on the ADB |
| 131 | +* Extract the ODAA FQDN and IP Address and assign them to the Azure Private DNS Zones linked to the AKS VNet. |
| 132 | + |
| 133 | +#### Sucess criteria |
| 134 | +* Set the NSG of the CIDR on the OCI side, to allow Ingress from the AKS on the ADB |
| 135 | +* DNS is setup correctly. <font color=red><b>Important:</b> Without a working DNS the next Challenge will failed.</font> |
| 136 | + |
| 137 | +#### Learning Resources |
| 138 | +* [Network security groups overview](https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview), |
| 139 | +* [Private DNS zones in Azure](https://learn.microsoft.com/azure/dns/private-dns-privatednszone), |
| 140 | +* [Oracle Database@Azure networking guidance](https://docs.oracle.com/en-us/iaas/Content/database-at-azure/azucr-networking-overview.htm) |
| 141 | + |
| 142 | +#### Solution |
| 143 | +* Challenge 3: [Update the Oracle ADB NSG and DNS](./walkthrough/update-odaa-nsg-dns/update-odaa-nsg-dns.md) |
| 144 | + |
| 145 | +### Challenge 4: Simulate the On-Premises Environment |
| 146 | + |
| 147 | +Deploy the pre-built Helm chart into AKS to install the sample Oracle database, Data Pump job, GoldenGate services, and Instant Client. Manage the shared secrets carefully and verify that data flows from the source schema into the Autonomous Database target schema. |
| 148 | + |
| 149 | +#### Actions |
| 150 | +* Deploy of the AKS cluster with the responsible Pods, juypter notebook with CPAT, Oracle instant client and Goldengate |
| 151 | +* Verify AKS cluster deployment |
| 152 | +* Check the connectivity from instant client on the ADB database and check if the SH schema from the 23 ai free edition is migrated to the SH2 schema in the ADB |
| 153 | +* Schema the Goldengate configuration |
| 154 | + |
| 155 | +#### Sucess criteria |
| 156 | +* Successful AKS deployment with Pods |
| 157 | +* Successful connection from the instant client to the ADB and source database |
| 158 | +* Successful login to Goldengate |
| 159 | + |
| 160 | +#### Learning Resources |
| 161 | +* [Connect to an AKS cluster using Azure CLI](https://learn.microsoft.com/azure/aks/learn/quick-kubernetes-deploy-cli), |
| 162 | +* [Use Helm with AKS](https://learn.microsoft.com/azure/aks/kubernetes-helm), |
| 163 | +* [Oracle GoldenGate Microservices overview](https://docs.oracle.com/en/middleware/goldengate/core/23.3/gghic/oracle-goldengate-microservices-overview.html), |
| 164 | +* [Oracle Data Pump overview](https://docs.oracle.com/en/database/oracle/oracle-database/23/sutil/introduction-to-oracle-data-pump.html) |
| 165 | + |
| 166 | +#### Solution |
| 167 | +* Challenge 4: [Simulate the On-Premises Environment](./walkthrough/onprem-ramp-up/onprem-ramp-up.md) |
| 168 | + |
| 169 | +<br> |
| 170 | +<hr> |
| 171 | + |
| 172 | + |
| 173 | +### Challenge 5: Measure Network Performance to Your Oracle Database@Azure Autonomous Database |
| 174 | + |
| 175 | +Use the Instant Client pod to run the scripted SQL latency test against the Autonomous Database and collect the round-trip results. Optionally supplement the findings with the lightweight TCP probe to observe connection setup timing. |
| 176 | + |
| 177 | +#### Actions |
| 178 | +* Login to the instant client and execute a first performance test from the aks cluster against the deployed ADB |
| 179 | + |
| 180 | +#### Sucess criteria |
| 181 | +* Successful login on the ADB via the instant client |
| 182 | +* Sucdessful execution of the available performance scripts |
| 183 | + |
| 184 | +#### Learning Resources |
| 185 | +* [Connect to Oracle Database@Azure using SQL*Plus](https://docs.oracle.com/en-us/iaas/Content/database-at-azure/azucr-connect-sqlplus.htm), |
| 186 | +* [Diagnose metrics and logs for Oracle Database@Azure](https://learn.microsoft.com/azure/oracle/oracle-database-at-azure-monitor) |
| 187 | + |
| 188 | +#### Solution |
| 189 | +* Challenge 5: [Measure Network Performance to Your Oracle Database@Azure Autonomous Database](./walkthrough/perf-test-odaa/perf-test-odaa.md) |
| 190 | + |
| 191 | +<!-- - 🔌 Challenge 4: **[Do performance test from inside the AKS cluster against the Oracle ADB instance](./walkthrough/c3-perf-test-odaa.md)** |
| 192 | +- 🦫 Challenge 5: **[Review data replication via Beaver](./walkthrough/c5-beaver-odaa.md)** |
| 193 | +- 🏗️ Challenge 6: **[Setup High Availability for Oracle ADB](./walkthrough/c6-ha-oracle-adb.md)** |
| 194 | +- 📊 Challenge 7: **[(Optional) Use Estate Explorer to visualize the Oracle ADB instance](./walkthrough/c7-estate-explorer-odaa.md)** |
| 195 | +- 🧵 Challenge 8: **[(Optional) Use Azure Data Fabric with Oracle ADB](./walkthrough/c8-azure-data-fabric-odaa.md)** --> |
| 196 | + |
48 | 197 | ## Contributors |
49 | 198 |
|
| 199 | +<to-be-added> |
| 200 | + |
0 commit comments