Skip to content

Commit 4ccbd88

Browse files
authored
New ODAA MicroHack (Oracle on Azure Modernization) (#262)
* init * init * fix broken links * Fix challenge 6 file reference and update README links * Fix: Rename Challenges to challenges (lowercase) for consistency * fix odaa connection issue * work in progress on entra id support * work in progress on entra id support * add entraID * not working * not working * working terraform * nginx integration via helm to aks * OCI Entra ID integration * add dns documentation, needs still to be tested * fix typos * change namespace of gg for bigdata helm * add new challenge setup user account * fix typo * update challenges * update challenges * update challenges2 * 50 user support, not tested yet * wokring with 50 user till challenge 4 * update documentation * working but with double user names * update readme and challenge0 * update readme overview * update dns challenge * update dns challenge * update readme * update create-odaa-dns * update create-odaa-sub * update create-odaa-sub * update create-odaa-sub * update dns * update dns * update dns * update dns * Add Oracle ODAA MicroHack enhancements * add adbping performance test * delete default passwords * delete changes walkthrough * delete changes walkthrough * password deleted in resources * add placeholder for deploy oracle ha * gghack.yaml changed * walkthrough changed * new gghack.yaml * Add files via upload * add odaa destroy script * add todo to readme * modify .gitignore * add documentation of how to add app roles in oci * update documentation and gghack.yaml * update documentation * update documentation * update user.json * update docos and cloudshell * update docos and cloudshell * new gghack.yaml * update documentation * add connping * update docs * update docs by maik * update docs by maik beaver * automate perf pod deployment * update dns setup * fix perf test docs * fix onprem test docs * clean up password * clean up * clean up * Remove credentials example file from PR * Restore files to match upstream - keep only Oracle changes * fix docs * fix docs ---------
1 parent 33d562e commit 4ccbd88

File tree

241 files changed

+14653
-3052
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

241 files changed

+14653
-3052
lines changed
Lines changed: 77 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,77 @@
1-
NOTES.md
1+
# contain sensitive data
2+
misc/
3+
**/mis/
4+
NOTES.md
5+
6+
gghack.yaml
7+
ggfabric.yaml
8+
adbping-job.yaml
9+
connping-job.yaml
10+
resources/infra/terraform/user_credentials.json
11+
resources/infra/terraform/mhodaa-sp-credentials.json
12+
resources/infra/terraform/*-sp-credentials.json
13+
resources/infra/terraform/user-photos/
14+
resources/gg-bigdata-build
15+
resources/scripts/adbping.sh
16+
17+
# ignore helm chart temp folder
18+
resources/infra/terraform/.helm/
19+
20+
# exclude the terrafom files and folders which should not be commited to git following best practces, located under the folder resources and all subfolder
21+
resources/**/terraform.tfstate
22+
resources/**/terraform.tfstate.backup
23+
resources/**/.terraform
24+
resources/**/crash.log
25+
resources/**/override.tf
26+
resources/**/terraform.tfvars
27+
resources/**/terraform.tfvars.json
28+
resources/**/terraform.rc
29+
resources/**/terraform.d
30+
# resources/**/terraform
31+
# resources/**/modules
32+
resources/**/providers
33+
resources/**/workspace
34+
35+
# Terraform Files
36+
resources/**/*.tfstate
37+
resources/**/*.tfstate.*
38+
resources/**/*.tfplan
39+
resources/**/*.tfplan.*
40+
resources/**/.terraform/
41+
resources/**/.terraform.lock.hcl
42+
43+
# Variable files (may contain sensitive data)
44+
resources/**/terraform.tfvars
45+
resources/**/*.auto.tfvars
46+
resources/**/*.auto.tfvars.json
47+
48+
# Override files
49+
resources/**/override.tf
50+
resources/**/override.tf.json
51+
resources/**/*_override.tf
52+
resources/**/*_override.tf.json
53+
54+
# CLI configuration files
55+
resources/**/.terraformrc
56+
resources/**/terraform.rc
57+
58+
# IDE files
59+
.vscode/
60+
.idea/
61+
*.swp
62+
*.swo
63+
*~
64+
65+
# Log files
66+
resources/**/*.log
67+
resources/**/crash.log
68+
resources/**/crash.*.log
69+
70+
# Ignore any .tfvars files that are generated automatically
71+
resources/**/**/*.auto.tfvars
72+
73+
# Exclude Oracle GoldenGate BigData Docker images and extracted files
74+
resources/gg-bigdata-build/V1043090-01.zip
75+
resources/gg-bigdata-build/extracted/
76+
resources/gg-bigdata-build/oracle-docker-images/
77+
resources/gg-bigdata-build/oracle-docker-images/.git*
Lines changed: 190 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,200 @@
1-
# Microhack - Intro To Oracle DB Migration to Azure
1+
![ODAA microhack logo](media/logo_ODAA_microhack_1900x300.jpg)
22

3-
## Important Notice
3+
# 🚀 Microhack - Oracle Database @ Azure (ODAA)
44

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
66

7+
This intro-level microhack (hackathon) helps you gain hands-on experience with Oracle Database@Azure (ODAA).
78

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.
911

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+
![ODAA microhack architecture](media/overivew%20deployment.png)
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.
1118

1219
## 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
4720

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+
48197
## Contributors
49198

199+
<to-be-added>
200+

03-Azure/01-03-Infrastructure/10_Oracle_on_Azure/Walkthrough/README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)