1. Wprowadzenie

Migracja serwera Oracle Database do chmury to złożony proces, który wymaga starannego planowania, analizy technicznej i biznesowej oraz wyboru odpowiedniej strategii. Niniejszy dokument opisuje wszystkie dostępne ścieżki migracji, narzędzia, scenariusze oraz najlepsze praktyki.

1.1 Dlaczego migrować Oracle do chmury?

CzynnikOpis
Redukcja kosztówEliminacja kosztów utrzymania fizycznej infrastruktury (CAPEX → OPEX)
SkalowalnośćElastyczne skalowanie zasobów w górę i w dół w zależności od obciążenia
Wysoka dostępnośćWbudowane mechanizmy HA, DR i geo-replikacji
ModernizacjaMożliwość stopniowej modernizacji aplikacji i baz danych
ZgodnośćCertyfikacje bezpieczeństwa (ISO, SOC, HIPAA, GDPR)
AutomatyzacjaAutomatyczne patching, backup, monitoring
Szybkość wdrożeńProwizjonowanie środowisk w minutach zamiast tygodni

1.2 Strategie migracji (6R)

StrategiaOpisZastosowanie dla Oracle
Rehost (Lift & Shift)Przeniesienie bazy bez zmian na IaaSOracle na VM w Azure/AWS/GCP
Replatform (Lift & Reshape)Przeniesienie z drobnymi optymalizacjamiOracle na RDS, Exadata Cloud
RepurchaseZmiana na inny produkt SaaSPrzejście na Oracle SaaS (Fusion)
RefactorPrzepisanie/modyfikacja aplikacjiMigracja do PostgreSQL/Azure SQL
RetireWycofanie systemuWyłączenie nieużywanych baz
RetainPozostawienie on-premisesBazy z ograniczeniami licencyjnymi

2. Analiza przedmigracyjna

2.1 Inwentaryzacja środowiska Oracle

Przed rozpoczęciem migracji należy przeprowadzić dokładną inwentaryzację:

2.1.1 Informacje o instancji

<a href="#cb1-1"></a>-- Wersja Oracle
<a href="#cb1-2"></a>SELECT * FROM V$VERSION;
<a href="#cb1-3"></a>
<a href="#cb1-4"></a>-- Informacje o instancji
<a href="#cb1-5"></a>SELECT INSTANCE_NAME, HOST_NAME, VERSION, STATUS, DATABASE_STATUS 
<a href="#cb1-6"></a>FROM V$INSTANCE;
<a href="#cb1-7"></a>
<a href="#cb1-8"></a>-- Rozmiar bazy danych
<a href="#cb1-9"></a>SELECT ROUND(SUM(bytes)/1024/1024/1024, 2) AS "Rozmiar_GB" 
<a href="#cb1-10"></a>FROM DBA_DATA_FILES;
<a href="#cb1-11"></a>
<a href="#cb1-12"></a>-- Rozmiar poszczególnych schematów
<a href="#cb1-13"></a>SELECT OWNER, ROUND(SUM(BYTES)/1024/1024, 2) AS "Rozmiar_MB"
<a href="#cb1-14"></a>FROM DBA_SEGMENTS
<a href="#cb1-15"></a>GROUP BY OWNER
<a href="#cb1-16"></a>ORDER BY 2 DESC;
<a href="#cb1-17"></a>
<a href="#cb1-18"></a>-- Liczba obiektów według typu
<a href="#cb1-19"></a>SELECT OBJECT_TYPE, COUNT(*) 
<a href="#cb1-20"></a>FROM DBA_OBJECTS 
<a href="#cb1-21"></a>WHERE OWNER NOT IN ('SYS','SYSTEM','DBSNMP','OUTLN')
<a href="#cb1-22"></a>GROUP BY OBJECT_TYPE
<a href="#cb1-23"></a>ORDER BY 2 DESC;

2.1.2 Analiza obciążenia

<a href="#cb2-1"></a>-- Top SQL pod względem CPU
<a href="#cb2-2"></a>SELECT SQL_ID, ELAPSED_TIME, CPU_TIME, EXECUTIONS, 
<a href="#cb2-3"></a>       ROUND(ELAPSED_TIME/EXECUTIONS/1000, 2) AS AVG_MS
<a href="#cb2-4"></a>FROM V$SQL
<a href="#cb2-5"></a>WHERE EXECUTIONS > 0
<a href="#cb2-6"></a>ORDER BY CPU_TIME DESC
<a href="#cb2-7"></a>FETCH FIRST 20 ROWS ONLY;
<a href="#cb2-8"></a>
<a href="#cb2-9"></a>-- Statystyki I/O
<a href="#cb2-10"></a>SELECT * FROM V$SYSSTAT WHERE NAME LIKE '%physical read%';
<a href="#cb2-11"></a>
<a href="#cb2-12"></a>-- Sesje i połączenia
<a href="#cb2-13"></a>SELECT COUNT(*) AS ACTIVE_SESSIONS FROM V$SESSION WHERE STATUS = 'ACTIVE';
<a href="#cb2-14"></a>SELECT VALUE AS MAX_SESSIONS FROM V$PARAMETER WHERE NAME = 'sessions';
<a href="#cb2-15"></a>
<a href="#cb2-16"></a>-- AWR Report (za ostatnie 24h)
<a href="#cb2-17"></a>@$ORACLE_HOME/rdbms/admin/awrrpt.sql

2.1.3 Identyfikacja funkcji specyficznych dla Oracle

Należy zidentyfikować użycie następujących funkcji:

Funkcja OracleWpływ na migracjęAlternatywa w chmurze
RAC (Real Application Clusters)WysokiOracle RAC na OCI/Exadata, Azure HA
Data GuardŚredniNatywne replikacje cloud
ASM (Automatic Storage Management)ŚredniManaged Disks, Block Storage
PartitioningNiski-ŚredniPartycjonowanie natywne w PostgreSQL/SQL
Advanced CompressionNiskiKompresja w docelowej bazie
Advanced Security (TDE)ŚredniNatywne szyfrowanie cloud
Spatial and GraphWysokiPostGIS, Azure SQL Spatial
OLAPWysokiSynapse Analytics, BigQuery
PL/SQLBardzo wysokipgPL/SQL, T-SQL (wymaga konwersji)
Oracle TextŚredniFull-text search w PostgreSQL/SQL
Materialized ViewsŚredniMaterialized Views w PostgreSQL
Database LinksŚredniLinked Servers, Foreign Data Wrappers
FlashbackNiskiPoint-in-time recovery
Streams/GoldenGateWysokiCDC narzędzia cloud-native
Java w bazieWysokiWymaga refaktoryzacji
Oracle SchedulerNiskiCloud scheduler, cron, Azure Automation

2.1.4 Mapowanie zależności aplikacyjnych

┌─────────────────────────────────────────────────────┐
│                    APLIKACJE                         │
├──────────┬──────────┬───────────┬───────────────────┤
│ App Web  │ App ERP  │ Reporting │ ETL/Integration   │
│ (JDBC)   │ (OCI)    │ (ODBC)    │ (SQL*Loader)      │
└────┬─────┴────┬─────┴─────┬─────┴─────────┬─────────┘
     │          │           │               │
     └──────────┴───────────┴───────────────┘
                        │
              ┌─────────┴─────────┐
              │  Oracle Database  │
              │  (on-premises)    │
              ├───────────────────┤
              │ Schemat APP       │
              │ Schemat REPORT    │
              │ Schemat ETL       │
              │ Schemat ARCHIVE   │
              └───────────────────┘

2.2 Ocena gotowości do migracji (Migration Assessment)

Checklist przedmigracyjny:

  • Kompletna inwentaryzacja instancji Oracle (wersja, edycja, patche)
  • Rozmiar bazy danych i tempo wzrostu
  • RPO (Recovery Point Objective) i RTO (Recovery Time Objective)
  • Wymagania SLA (dostępność, wydajność)
  • Analiza obciążenia (IOPS, CPU, pamięć, sieć)
  • Identyfikacja funkcji Oracle Enterprise Edition
  • Mapowanie zależności aplikacyjnych
  • Analiza połączeń sieciowych (latency, bandwidth)
  • Przegląd licencji Oracle (BYOL vs nowe licencje)
  • Wymagania regulacyjne i compliance
  • Budżet migracji i docelowy TCO
  • Okno migracyjne (dopuszczalny downtime)
  • Zasoby zespołu (kompetencje, dostępność)

3. Modele migracji — przegląd

┌────────────────────────────────────────────────────────────────────┐
│                    MIGRACJA ORACLE DO CHMURY                       │
├────────────────────────┬───────────────────────────────────────────┤
│   ZACHOWANIE ORACLE    │       ZMIANA SILNIKA BAZY DANYCH          │
│   (Homogeniczna)       │       (Heterogeniczna)                    │
├────────────────────────┼───────────────────────────────────────────┤
│                        │                                           │
│  ┌──────────────────┐  │  ┌─────────────────────────────────────┐  │
│  │ Azure VM (IaaS)  │  │  │ Azure SQL Database                  │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ Oracle DB@Azure  │  │  │ Azure SQL Managed Instance          │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ OCI (natywne)    │  │  │ Azure Database for PostgreSQL       │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ OCI-Azure Link   │  │  │ Amazon Aurora PostgreSQL             │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ AWS EC2 (IaaS)   │  │  │ Amazon RDS for PostgreSQL           │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ Amazon RDS Oracle │  │  │ Google Cloud SQL for PostgreSQL     │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ GCP Compute      │  │  │ Azure Database for MySQL            │  │
│  ├──────────────────┤  │  ├─────────────────────────────────────┤  │
│  │ OCI Autonomous   │  │  │ Google AlloyDB                      │  │
│  └──────────────────┘  │  └─────────────────────────────────────┘  │
│                        │                                           │
└────────────────────────┴───────────────────────────────────────────┘

3.1 Macierz decyzyjna

KryteriumRehost (VM)Oracle DB@AzureOCIRe-platform (PaaS)Refactor (PostgreSQL/SQL)
Czas migracjiKrótkiŚredniŚredniŚredniDługi
RyzykoNiskieNiskieNiskieŚrednieWysokie
Koszt migracjiNiskiŚredniŚredniŚredniWysoki
Koszt operacyjnyWysokiŚredni-WysokiŚredniNiski-ŚredniNiski
Zmiana aplikacjiBrakBrakMinimalnaMinimalna-ŚredniaZnaczna
ZarządzaniePełne (klient)CzęścioweCzęścioweMinimalneMinimalne
Vendor lock-in OracleTakTakTakNieNie
SkalowalnośćRęcznaAutomatycznaAutomatycznaAutomatycznaAutomatyczna

4. Opcja 1: Oracle na Azure Virtual Machines (IaaS)

4.1 Opis

Przeniesienie Oracle Database na maszyny wirtualne Azure w modelu IaaS (Infrastructure as a Service). Jest to podejście Lift & Shift — baza danych jest przenoszona bez zmian w architekturze.

4.2 Obsługiwane wersje i edycje

Wersja OracleEdycjaStatus na Azure
Oracle 19cEnterprise Edition✅ W pełni wspierane
Oracle 19cStandard Edition 2✅ W pełni wspierane
Oracle 21cEnterprise Edition✅ W pełni wspierane
Oracle 23aiEnterprise Edition✅ W pełni wspierane
Oracle 12cEnterprise Edition⚠️ End of Support (tylko Extended)

4.3 Rekomendowane typy maszyn wirtualnych Azure

Seria VMvCPURAM (GB)StorageZastosowanie
E-series (Edsv5)2-10416-672Premium SSDOLTP, ogólne obciążenia
M-series (Msv2)32-416256-11,400Ultra DiskDuże bazy, in-memory
Mv2-series208-4165,700-11,400Ultra DiskNajwiększe bazy (>4TB RAM)
L-series (Lsv3)8-8064-640NVMe SSD lokalneWysoki throughput I/O
D-series (Ddsv5)2-968-384Premium SSDŚrodowiska dev/test

4.4 Konfiguracja storage

┌─────────────────────────────────────────────────┐
│              Azure VM Oracle                     │
├─────────────────────────────────────────────────┤
│                                                  │
│  OS Disk (P30)          128 GB   Premium SSD     │
│  Oracle Binaries (P20)   64 GB   Premium SSD     │
│                                                  │
│  ┌─── DATA ────────────────────────────────┐     │
│  │ Stripe Set (ASM / LVM)                  │     │
│  │ P40 x 4 = 4 TB  Premium SSD            │     │
│  │ lub Ultra Disk (konfigurowalny IOPS)    │     │
│  └─────────────────────────────────────────┘     │
│                                                  │
│  ┌─── REDO LOGS ───────────────────────────┐     │
│  │ P30 x 2 = 2 TB  Premium SSD            │     │
│  │ lub Ultra Disk (niska latencja)         │     │
│  └─────────────────────────────────────────┘     │
│                                                  │
│  ┌─── ARCHIVE LOGS ───────────────────────┐      │
│  │ E40 x 2  Standard SSD                  │      │
│  └─────────────────────────────────────────┘     │
│                                                  │
│  ┌─── BACKUP ─────────────────────────────┐      │
│  │ Azure Blob Storage (Hot/Cool tier)     │      │
│  └─────────────────────────────────────────┘     │
│                                                  │
└─────────────────────────────────────────────────┘

4.5 Wysoka dostępność na Azure VM

Opcja A: Oracle Data Guard na Azure

                    ┌──────────────────┐
                    │   Azure Traffic   │
                    │     Manager       │
                    └────────┬─────────┘
                             │
              ┌──────────────┴──────────────┐
              │                             │
   ┌──────────┴──────────┐     ┌───────────┴──────────┐
   │  Region: West Europe│     │  Region: North Europe │
   │                     │     │                       │
   │  ┌───────────────┐  │     │  ┌─────────────────┐  │
   │  │ Oracle Primary│  │────▶│  │ Oracle Standby  │  │
   │  │   Database    │  │ DG  │  │   Database      │  │
   │  └───────────────┘  │     │  └─────────────────┘  │
   │                     │     │                       │
   │  Availability Zone 1│     │  Availability Zone 1  │
   └─────────────────────┘     └───────────────────────┘

Opcja B: Oracle RAC na Azure (z Shared Storage)

Uwaga: Oracle RAC na Azure wymaga rozwiązania shared storage (np. Azure Shared Disks, FlashGrid, lub Oracle ASM z iSCSI).

   ┌─────────────────────────────────────────┐
   │         Azure Load Balancer              │
   └────────────────┬────────────────────────┘
                    │
         ┌──────────┴──────────┐
         │                     │
   ┌─────┴──────┐       ┌─────┴──────┐
   │  RAC Node 1│       │  RAC Node 2│
   │  (VM AZ-1) │       │  (VM AZ-2) │
   └─────┬──────┘       └─────┬──────┘
         │                     │
         └──────────┬──────────┘
                    │
         ┌──────────┴──────────┐
         │  Azure Shared Disk  │
         │  (Ultra / Premium)  │
         │  lub FlashGrid      │
         └─────────────────────┘

4.6 Kroki migracji Lift & Shift na Azure VM

  1. Przygotowanie środowiska Azure
    • Utworzenie Resource Group, VNet, Subnets
    • Konfiguracja NSG (porty 1521, 22, 5500)
    • Provisioning VM z odpowiednim rozmiarem
    • Konfiguracja Managed Disks
  2. Instalacja Oracle na Azure VM
    • Instalacja Oracle Linux / RHEL na VM
    • Instalacja Oracle Database Software
    • Konfiguracja ASM lub filesystem storage
  3. Migracja danych (wybrać jedną z metod)
    • RMAN Backup/Restore przez Azure Blob Storage
    • Data Pump Export/Import (expdp/impdp)
    • Oracle Data Guard (zero downtime)
    • Oracle GoldenGate (zero downtime z CDC)
  4. Konfiguracja post-migracyjna
    • Konfiguracja networking (TNS, Listener)
    • Konfiguracja backup (RMAN → Azure Blob)
    • Konfiguracja monitoringu (OEM, Azure Monitor)
    • Testy wydajnościowe i funkcjonalne
  5. Cutover
    • Przełączenie aplikacji na nowy endpoint
    • Weryfikacja łączności i funkcjonalności
    • Monitoring przez 24-72h po migracji

5. Opcja 2: Oracle Database@Azure (Exadata w Azure)

5.1 Opis

Oracle Database@Azure to usługa umożliwiająca uruchamianie Oracle Exadata Database Service bezpośrednio w centrach danych Microsoft Azure. Oracle infrastruktura Exadata jest fizycznie zlokalizowana w regionach Azure i podłączona do sieci Azure z ultra-niskim opóźnieniem.

5.2 Kluczowe cechy

CechaOpis
InfrastrukturaOracle Exadata X9M/X10M w Azure datacenter
SiećBezpośrednie połączenie z Azure VNet (<2ms latency)
ZarządzanieZarządzane przez Oracle (OCI console + Azure portal)
BillingZintegrowane z Azure billing
SLA99.995% dostępności
RACPełne wsparcie Oracle RAC
Data GuardNatywne Data Guard cross-region
Autonomous DBOpcja Oracle Autonomous Database

5.3 Dostępne konfiguracje

KonfiguracjaComputeStorageIOPSZastosowanie
Quarter Rack2 DB servers, 3 storage servers76.8 TB Flash1.5MŚrednie obciążenia
Half Rack4 DB servers, 6 storage servers153.6 TB Flash3MDuże obciążenia
Full Rack8 DB servers, 12 storage servers307.2 TB Flash6MEnterprise critical
Multi-RackSkalowalneSkalowalneSkalowalneNajwiększe wdrożenia

5.4 Architektura Oracle Database@Azure

┌──────────────────────────────────────────────────────────────┐
│                      Azure Region                             │
│                                                               │
│  ┌──────────────────────┐    ┌─────────────────────────────┐  │
│  │   Azure Services     │    │  Oracle Database@Azure       │  │
│  │                      │    │                              │  │
│  │  ┌────────────────┐  │    │  ┌─────────────────────┐    │  │
│  │  │ Azure App      │  │    │  │  Oracle Exadata      │    │  │
│  │  │ Service        │──┼────┼─▶│  Database Service    │    │  │
│  │  └────────────────┘  │    │  │                      │    │  │
│  │  ┌────────────────┐  │    │  │  ┌───────┐ ┌──────┐ │    │  │
│  │  │ Azure Kubernetes│ │    │  │  │ RAC   │ │ ASM  │ │    │  │
│  │  │ Service        │──┼────┼─▶│  │ Node1 │ │      │ │    │  │
│  │  └────────────────┘  │    │  │  │ Node2 │ │      │ │    │  │
│  │  ┌────────────────┐  │    │  │  └───────┘ └──────┘ │    │  │
│  │  │ Azure Virtual  │  │    │  │                      │    │  │
│  │  │ Network (VNet) │──┼────┼─▶│  Exadata Storage     │    │  │
│  │  └────────────────┘  │    │  │  (Smart Flash Cache)  │    │  │
│  │                      │    │  └─────────────────────┘    │  │
│  └──────────────────────┘    └─────────────────────────────┘  │
│             │                              │                   │
│             └──────── <2ms latency ────────┘                   │
└──────────────────────────────────────────────────────────────┘

5.5 Kroki migracji do Oracle Database@Azure

  1. Rejestracja usługi — Aktywacja Oracle Database@Azure w subskrypcji Azure
  2. Provisioning Exadata Infrastructure — Przez Azure Portal lub OCI Console
  3. Konfiguracja sieci — Delegacja subnetu Azure VNet do Exadata
  4. Utworzenie VM Cluster — Konfiguracja compute nodes
  5. Utworzenie bazy danych — CDB/PDB provisioning
  6. Migracja danych:
    • Oracle Data Guard (preferowane dla zero-downtime)
    • RMAN Backup/Restore przez Object Storage
    • Oracle Zero Downtime Migration (ZDM)
  7. Rekonfiguracja aplikacji — Zmiana connection string
  8. Walidacja i cutover

6. Opcja 3: Oracle Cloud Infrastructure (OCI)

6.1 Opis

Migracja do natywnego Oracle Cloud Infrastructure (OCI) zapewnia pełną kompatybilność z Oracle Database i dostęp do wszystkich usług Oracle w chmurze.

6.2 Usługi bazodanowe w OCI

UsługaTypZarządzanieZastosowanie
Oracle Base DatabasePaaS (VM)CzęścioweStandardowe obciążenia
Oracle Exadata Cloud ServicePaaS (Exadata)CzęścioweEnterprise, RAC
Oracle Autonomous DatabasePaaS (Serverless)W pełni zarządzaneSamooptymalizujące się
Oracle Autonomous Data WarehousePaaSW pełni zarządzaneAnalityka, BI
Oracle Autonomous Transaction ProcessingPaaSW pełni zarządzaneOLTP
Oracle Autonomous JSON DatabasePaaSW pełni zarządzaneDokument/JSON
MySQL HeatWavePaaSW pełni zarządzaneMySQL + analityka

6.3 Oracle Autonomous Database — szczegóły

Oracle Autonomous Database to w pełni zarządzana usługa oferująca:

  • Auto-tuning — automatyczna optymalizacja zapytań i indeksów
  • Auto-scaling — automatyczne skalowanie CPU (1-128 OCPU)
  • Auto-patching — automatyczne aktualizacje bez przestojów
  • Auto-backup — automatyczne kopie zapasowe (60 dni retencji)
  • Auto-security — automatyczne szyfrowanie i patching bezpieczeństwa
  • Auto-repair — automatyczne wykrywanie i naprawa problemów

6.4 Kroki migracji na OCI

Wariant A: Migracja do Exadata Cloud Service

On-Premises Oracle ──▶ OCI Object Storage ──▶ OCI Exadata Cloud
       │                      │                       │
   RMAN Backup          Upload via         RMAN Restore
   lub Data Pump      OCI CLI/FastConnect   lub Data Pump Import

Wariant B: Migracja do Autonomous Database

On-Premises Oracle ──▶ OCI Object Storage ──▶ Autonomous Database
       │                      │                       │
   Data Pump Export    Upload via          DBMS_CLOUD.COPY_DATA
   (schemas/tables)  OCI CLI/FastConnect   lub Data Pump Import

Wariant C: Oracle Zero Downtime Migration (ZDM)

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│  Source DB   │     │  ZDM Host    │     │  Target DB   │
│  (On-Prem)   │────▶│  (Orchestr.) │────▶│  (OCI)       │
│              │     │              │     │              │
│  Data Guard  │◀───▶│  Automated   │◀───▶│  Standby     │
│  Primary     │     │  Switchover  │     │  → Primary   │
└──────────────┘     └──────────────┘     └──────────────┘

7. Opcja 4: OCI-Azure Interconnect (Multi-Cloud)

7.1 Opis

Oracle i Microsoft oferują Oracle Interconnect for Microsoft Azure — bezpośrednie, prywatne połączenie sieciowe między OCI a Azure z ultra-niskim opóźnieniem. Pozwala to na architekturę, w której baza danych Oracle działa na OCI, a warstwa aplikacyjna na Azure.

7.2 Dostępne regiony i pary

Region AzureRegion OCILatency
East US (Ashburn)US East (Ashburn)<2ms
UK South (London)UK South (London)<2ms
West Europe (Amsterdam)Netherlands Northwest<2ms
Germany West Central (Frankfurt)Germany Central (Frankfurt)<2ms
Canada Central (Toronto)Canada Southeast (Toronto)<2ms
Southeast Asia (Singapore)Singapore<2ms
Japan East (Tokyo)Japan East (Tokyo)<2ms

7.3 Architektura Multi-Cloud

┌─────────────────────────────┐       ┌─────────────────────────────┐
│        Microsoft Azure       │       │     Oracle Cloud (OCI)       │
│                              │       │                              │
│  ┌────────────────────────┐  │       │  ┌────────────────────────┐  │
│  │  Application Tier      │  │       │  │  Database Tier         │  │
│  │                        │  │       │  │                        │  │
│  │  ├─ Azure AKS          │  │       │  │  ├─ Exadata Cloud      │  │
│  │  ├─ Azure App Service  │  │       │  │  ├─ Autonomous DB      │  │
│  │  ├─ Azure Functions    │  │       │  │  ├─ Base Database       │  │
│  │  └─ Azure VM           │  │       │  │  └─ RAC Database       │  │
│  └────────────────────────┘  │       │  └────────────────────────┘  │
│                              │       │                              │
│  ┌─────────┐                 │       │                ┌──────────┐  │
│  │ Express │                 │       │                │ FastConn │  │
│  │ Route   │─────────────────┼───────┼────────────────│ ect      │  │
│  │ Circuit │  Interconnect   │       │  Interconnect  │ Circuit  │  │
│  └─────────┘  (<2ms latency) │       │                └──────────┘  │
│                              │       │                              │
│  Azure AD ◀───── Federacja ──┼───────┼──▶ OCI IAM                  │
│                              │       │                              │
└─────────────────────────────┘       └─────────────────────────────┘

7.4 Zalety Multi-Cloud

  • Baza Oracle na natywnym OCI (najlepsza wydajność i kompatybilność)
  • Aplikacje korzystające z bogactwa usług Azure (AI/ML, DevOps, Kubernetes)
  • Federacja tożsamości Azure AD ↔︎ OCI IAM
  • Ultra-niskie opóźnienie między warstwami (<2ms)
  • Rozdzielenie billing — Azure i OCI osobno

7.5 Kroki wdrożenia

  1. Konfiguracja OCI Tenancy — Utworzenie compartment, VCN
  2. Konfiguracja Azure — VNet, ExpressRoute Circuit
  3. Ustanowienie Interconnect — Peering ExpressRoute ↔︎ FastConnect
  4. Provisioning bazy Oracle na OCI — Exadata/Autonomous/Base DB
  5. Migracja danych — Data Guard, ZDM, lub Data Pump
  6. Konfiguracja federacji IAM — Azure AD ↔︎ OCI Identity Federation
  7. Konfiguracja aplikacji na Azure — Connection string do OCI DB
  8. Testy end-to-end — Weryfikacja latency, throughput, failover

8. Opcja 5: Oracle na AWS EC2 (IaaS)

8.1 Opis

Przeniesienie Oracle Database na instancje Amazon EC2 w modelu Lift & Shift. AWS oficjalnie wspiera Oracle Database na EC2.

8.2 Rekomendowane typy instancji

Typ instancjivCPURAM (GB)StorageZastosowanie
r6i.xlarge → r6i.32xlarge4-12832-1,024EBSOLTP, ogólne
r6i.metal1281,024EBSDuże bazy RAC
x2idn.xlarge → x2idn.metal4-12832-2,048NVMe+EBSIn-memory, duże bazy
i3.xlarge → i3.16xlarge4-6430.5-488NVMe lokalneWysoki I/O throughput
m6i.xlarge → m6i.32xlarge4-12816-512EBSBalanced workloads

8.3 Konfiguracja storage na AWS

Typ storageIOPSThroughputZastosowanie
gp3do 16,0001,000 MB/sOgólne, redo logs
io2 Block Expressdo 256,0004,000 MB/sKrytyczne dane
io1do 64,0001,000 MB/sDane transakcyjne
st1500500 MB/sArchive logs
S3N/AN/ABackup, staging

8.4 Wysoka dostępność na AWS

  • Multi-AZ Data Guard — Primary w AZ-1, Standby w AZ-2
  • Cross-Region Data Guard — DR w innym regionie AWS
  • Oracle RAC na EC2 — Z wykorzystaniem shared storage (EBS Multi-Attach lub FlashGrid)

8.5 Kroki migracji na AWS EC2

  1. Setup AWS — VPC, Subnets, Security Groups, IAM roles
  2. Provisioning EC2 — Launch instancji, attach EBS volumes
  3. Instalacja Oracle — Oracle Linux, Oracle Database software
  4. Transfer danych:
    • AWS Direct Connect + RMAN Backup/Restore
    • S3 + Data Pump
    • Oracle Data Guard (online)
    • AWS Database Migration Service (DMS) — ograniczone wsparcie
  5. Konfiguracja — TNS, Listener, Backup, Monitoring
  6. Cutover — Przełączenie ruchu

9. Opcja 6: Amazon RDS for Oracle

9.1 Opis

Amazon RDS for Oracle to w pełni zarządzana usługa bazy danych Oracle na AWS. Amazon zarządza patchowaniem, backup, i infrastrukturą.

9.2 Obsługiwane edycje i wersje

WersjaStandard Edition 2Enterprise Edition
Oracle 19c
Oracle 21c

9.3 Klasy instancji RDS

KlasavCPURAM (GB)Zastosowanie
db.m6i.large → db.m6i.24xlarge2-968-384Ogólne
db.r6i.large → db.r6i.24xlarge2-9616-768Memory-optimized
db.x2idn.xlarge → db.x2idn.24xlarge4-9632-1,536Memory-intensive

9.4 Ograniczenia RDS for Oracle

FunkcjaDostępność
Oracle RAC❌ Niedostępne
Oracle Data Guard⚠️ Tylko RDS Multi-AZ (automatyczny failover)
Oracle GoldenGate✅ Jako źródło/cel
PL/SQL✅ W pełni wspierane
Oracle Spatial✅ (EE)
TDE
Advanced Compression✅ (EE)
Partitioning✅ (EE)
DBA Access⚠️ Ograniczony (brak SYS, częściowy SYSDBA)
OS Access❌ Brak dostępu do OS
Custom patches❌ Niedostępne

9.5 Kroki migracji do RDS for Oracle

  1. Ocena kompatybilności — Sprawdzenie ograniczeń RDS
  2. Provisioning RDS — Przez AWS Console/CLI/CloudFormation
  3. Migracja danych:
    • AWS DMS (Database Migration Service) — online
    • Data Pump przez S3 integration: <a href="#cb13-1"></a>-- Na RDS <a href="#cb13-2"></a>SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( <a href="#cb13-3"></a> p_bucket_name => 'my-bucket', <a href="#cb13-4"></a> p_prefix => 'dump/', <a href="#cb13-5"></a> p_s3_prefix => '', <a href="#cb13-6"></a> p_directory_name => 'DATA_PUMP_DIR' <a href="#cb13-7"></a>) AS TASK_ID FROM DUAL;
    • Oracle GoldenGate → RDS
  4. Walidacja — Testy integralności i wydajności
  5. Cutover — Zmiana DNS/endpoint

10. Opcja 7: Oracle na Google Cloud Platform

10.1 Opis

Google Cloud Platform oferuje kilka opcji uruchamiania Oracle Database:

10.2 Dostępne opcje

OpcjaTypZarządzanie
Oracle na Compute EngineIaaSKlient zarządza
Google Cloud Bare MetalBare MetalKlient zarządza, Google utrzymuje hardware
Oracle Database@Google CloudPaaS (Exadata)Oracle zarządza (analogicznie do DB@Azure)

10.3 Oracle na Google Compute Engine

Rekomendowane typy maszyn:

Typ maszynyvCPURAM (GB)Zastosowanie
n2-highmem-8 → n2-highmem-1288-12864-864Ogólne OLTP
m2-ultramem-208 → m2-megamem-416208-4165,888-8,832In-memory, SAP
c3-highmem-8 → c3-highmem-1768-17664-1,408Compute-intensive

10.4 Google Cloud Bare Metal Solution

  • Dedykowane serwery fizyczne w GCP datacenter
  • Pełne wsparcie Oracle RAC, Data Guard, ASM
  • Połączenie do GCP VPC z niskim opóźnieniem
  • Idealne dla Oracle workloads wymagających certyfikacji

10.5 Oracle Database@Google Cloud (2024+)

Analogicznie do Oracle Database@Azure — Oracle Exadata Infrastructure fizycznie w GCP datacenter z bezpośrednim połączeniem do GCP networking.


11. Opcja 8: Migracja do Azure SQL Database / SQL Managed Instance

11.1 Opis

Migracja heterogeniczna z Oracle do Microsoft SQL Server w chmurze Azure. Wymaga konwersji schematu, kodu PL/SQL (na T-SQL) i danych.

11.2 Porównanie docelowych usług Azure SQL

CechaAzure SQL DatabaseAzure SQL Managed InstanceSQL Server na VM
Kompatybilność z SQL Server~95%~99%100%
ZarządzanieW pełni zarządzaneW pełni zarządzaneKlient
Maks. rozmiar DB128 TB16 TBNieograniczony
Linked Servers
SQL Agent Jobs❌ (Elastic Jobs)
CLROgraniczone
Cross-DB queries❌ (Elastic Query)

11.3 Mapowanie typów danych Oracle → SQL Server

OracleSQL ServerUwagi
NUMBER(p,s)DECIMAL(p,s) lub INT/BIGINTZależne od precyzji
VARCHAR2(n)NVARCHAR(n)Unicode w SQL Server
CLOBNVARCHAR(MAX)Do 2 GB
BLOBVARBINARY(MAX)Do 2 GB
DATEDATETIME2Oracle DATE zawiera czas
TIMESTAMPDATETIME2(7)
RAW(n)VARBINARY(n)
LONGNVARCHAR(MAX)Przestarzałe w Oracle
XMLTYPEXML
INTERVALBrak natywnegoWymaga obejścia
ROWIDBrakUżyć klucza głównego
BOOLEAN (PL/SQL)BIT
SEQUENCESEQUENCE lub IDENTITY
SYS_REFCURSORCursor

11.4 Konwersja PL/SQL → T-SQL — kluczowe różnice

KonstrukcjaPL/SQL (Oracle)T-SQL (SQL Server)
Zmiennav_name VARCHAR2(100);DECLARE @name NVARCHAR(100);
Przypisaniev_name := 'test';SET @name = 'test';
IF-THENIF ... THEN ... END IF;IF ... BEGIN ... END
Pętla FORFOR i IN 1..10 LOOP ... END LOOP;WHILE @i <= 10 BEGIN ... SET @i += 1; END
ExceptionEXCEPTION WHEN ... THENBEGIN TRY ... END TRY BEGIN CATCH ... END CATCH
PakietyCREATE PACKAGE ...Brak — użyć schematów + procedur
Sekwencjaseq.NEXTVALNEXT VALUE FOR seq
NVLNVL(x, default)ISNULL(x, default) lub COALESCE
DECODEDECODE(x, a, b, c)CASE x WHEN a THEN b ELSE c END
SYSDATESYSDATEGETDATE() lub SYSDATETIME()
DUALSELECT x FROM DUALSELECT x (bez FROM)
ROWNUMWHERE ROWNUM <= nTOP n lub OFFSET...FETCH
CONNECT BYCONNECT BY PRIORWITH CTE AS (... UNION ALL ...)
MERGEMERGE INTO ...MERGE INTO ... (składnia zbliżona)
Autonomous TransactionPRAGMA AUTONOMOUS_TRANSACTIONBrak natywnego — obejście z loopback linked server

11.5 Narzędzie: SQL Server Migration Assistant (SSMA) for Oracle

SSMA automatyzuje konwersję schematów i danych z Oracle do SQL Server/Azure SQL.

Możliwości SSMA: – Automatyczna konwersja schematów (tabele, widoki, indeksy) – Konwersja PL/SQL → T-SQL (pakiety, procedury, funkcje, triggery) – Migracja danych z Oracle do SQL Server – Raporty kompatybilności i oceny migracji – Obsługa Oracle 10g, 11g, 12c, 18c, 19c, 21c

Proces z SSMA:

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  1. Connect  │───▶│  2. Assess   │───▶│  3. Convert  │───▶│  4. Migrate  │
│  to Oracle   │    │  Schema      │    │  Schema &    │    │  Data        │
│  Source      │    │  (Report)    │    │  Code        │    │              │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

11.6 Kroki migracji Oracle → Azure SQL

  1. Assessment — SSMA Assessment Report, identyfikacja problemów
  2. Konwersja schematu — SSMA automatic + ręczna korekta
  3. Konwersja kodu PL/SQL — SSMA + ręczna konwersja złożonego kodu
  4. Migracja danych — SSMA Data Migration lub Azure DMS
  5. Modyfikacja aplikacji — Zmiana connection string, driver (JDBC→JDBC, OCI→ODBC)
  6. Testy regresyjne — Pełne testy funkcjonalne i wydajnościowe
  7. Cutover — Przełączenie produkcji

12. Opcja 9: Migracja do PostgreSQL (Azure/AWS/GCP)

12.1 Opis

Migracja z Oracle do PostgreSQL eliminuje koszty licencji Oracle i daje dostęp do open-source’owej bazy danych z bogatym ekosystemem. PostgreSQL jest często uważany za najbliższy open-source’owy odpowiednik Oracle.

12.2 Docelowe usługi PostgreSQL w chmurze

UsługaProviderZarządzanieMaks. storageHA
Azure Database for PostgreSQL Flexible ServerAzureW pełni zarządzane64 TBZone-redundant
Amazon RDS for PostgreSQLAWSW pełni zarządzane128 TBMulti-AZ
Amazon Aurora PostgreSQLAWSW pełni zarządzane128 TBMulti-AZ + read replicas
Cloud SQL for PostgreSQLGCPW pełni zarządzane64 TBRegional HA
Google AlloyDBGCPW pełni zarządzane64 TBRegional HA + columnar
Crunchy BridgeMulti-cloudW pełni zarządzaneZmiennyMulti-cloud HA

12.3 Mapowanie typów danych Oracle → PostgreSQL

OraclePostgreSQLUwagi
NUMBER(p,s)NUMERIC(p,s)Dokładne odwzorowanie
NUMBER (bez precyzji)NUMERIC lub DOUBLE PRECISIONZależne od użycia
VARCHAR2(n)VARCHAR(n) lub TEXTTEXT nie ma limitu
CHAR(n)CHAR(n)
CLOBTEXTDo 1 GB
BLOBBYTEADo 1 GB
NCLOBTEXTPostgreSQL natywnie UTF-8
DATETIMESTAMPOracle DATE zawiera czas!
TIMESTAMPTIMESTAMP
TIMESTAMP WITH TIME ZONETIMESTAMPTZ
INTERVAL YEAR TO MONTHINTERVAL
RAW(n)BYTEA
LONGTEXT
XMLTYPEXML
SDO_GEOMETRYGEOMETRY (PostGIS)Wymaga rozszerzenia PostGIS
BINARY_FLOATREAL
BINARY_DOUBLEDOUBLE PRECISION
BOOLEAN (PL/SQL)BOOLEANNatywny w PostgreSQL
SYS_REFCURSORREFCURSOR

12.4 Konwersja PL/SQL → PL/pgSQL

KonstrukcjaPL/SQL (Oracle)PL/pgSQL (PostgreSQL)
Blok proceduryCREATE PROCEDURE p AS BEGIN ... END;CREATE FUNCTION p() RETURNS void AS $$ BEGIN ... END; $$ LANGUAGE plpgsql;
FunkcjaCREATE FUNCTION f RETURN NUMBER ASCREATE FUNCTION f() RETURNS NUMERIC AS $$
PakietyCREATE PACKAGE pkg AS ...Brak — użyć schematów + funkcji
WyjątkiEXCEPTION WHEN NO_DATA_FOUND THENEXCEPTION WHEN NO_DATA_FOUND THEN (zbliżone)
KursoryCURSOR c IS SELECT ...;DECLARE c CURSOR FOR SELECT ...;
EXECUTE IMMEDIATEEXECUTE IMMEDIATE 'SQL';EXECUTE 'SQL';
DBMS_OUTPUTDBMS_OUTPUT.PUT_LINE('msg');RAISE NOTICE 'msg';
SYSDATESYSDATECURRENT_TIMESTAMP lub NOW()
NVLNVL(x, default)COALESCE(x, default)
DECODEDECODE(x, a, b, c)CASE x WHEN a THEN b ELSE c END
ROWNUMWHERE ROWNUM <= nLIMIT n
CONNECT BYCONNECT BY PRIOR id = parent_idWITH RECURSIVE cte AS (...)
SEQUENCESseq.NEXTVALNEXTVAL('seq')
SYNONYMCREATE SYNONYM ...Brak — użyć search_path
MATERIALIZED VIEWCREATE MATERIALIZED VIEW ...CREATE MATERIALIZED VIEW ... (wspierane)
Autonomous TransactionPRAGMA AUTONOMOUS_TRANSACTIONdblink do samego siebie
BULK COLLECTBULK COLLECT INTOArray operations
MERGEMERGE INTO ...INSERT ... ON CONFLICT DO UPDATE

12.5 Narzędzia do migracji Oracle → PostgreSQL

12.5.1 Ora2Pg

Najpopularniejsze narzędzie open-source do migracji Oracle → PostgreSQL.

Funkcje: – Automatyczna konwersja schematów – Konwersja PL/SQL → PL/pgSQL – Migracja danych (wielowątkowa) – Raport oceny migracji z punktacją – Konwersja typów danych, sekwencji, synonimów – Obsługa partycjonowania, materialized views

Instalacja:

<a href="#cb15-1"></a># Debian/Ubuntu
<a href="#cb15-2"></a>sudo apt-get install ora2pg
<a href="#cb15-3"></a>
<a href="#cb15-4"></a># Z CPAN
<a href="#cb15-5"></a>cpan install Ora2Pg
<a href="#cb15-6"></a>
<a href="#cb15-7"></a># Docker
<a href="#cb15-8"></a>docker pull georgmoser/ora2pg

Przykład konfiguracji ora2pg.conf:

<a href="#cb16-1"></a>ORACLE_HOME    /usr/lib/oracle/19.3/client64
<a href="#cb16-2"></a>ORACLE_DSN     dbi:Oracle:host=oracle-server;port=1521;sid=ORCL
<a href="#cb16-3"></a>ORACLE_USER    migration_user
<a href="#cb16-4"></a>ORACLE_PWD     secure_password
<a href="#cb16-5"></a>
<a href="#cb16-6"></a>SCHEMA         APP_SCHEMA
<a href="#cb16-7"></a>
<a href="#cb16-8"></a>PG_DSN         dbi:Pg:dbname=target_db;host=pg-server;port=5432
<a href="#cb16-9"></a>PG_USER        postgres
<a href="#cb16-10"></a>PG_PWD         pg_password
<a href="#cb16-11"></a>
<a href="#cb16-12"></a>TYPE           TABLE,VIEW,SEQUENCE,TRIGGER,FUNCTION,PROCEDURE,PACKAGE,TYPE
<a href="#cb16-13"></a>EXPORT_SCHEMA  1
<a href="#cb16-14"></a>FILE_PER_TABLE 1
<a href="#cb16-15"></a>JOBS           8
<a href="#cb16-16"></a>DATA_LIMIT     10000
<a href="#cb16-17"></a>
<a href="#cb16-18"></a># Konwersje
<a href="#cb16-19"></a>REPLACE_AS_BOOLEAN  status:active,is_deleted,enabled
<a href="#cb16-20"></a>REPLACE_ZERO_DATE   2000-01-01
<a href="#cb16-21"></a>
<a href="#cb16-22"></a>OUTPUT         /output/migration/

Uruchomienie oceny migracji:

<a href="#cb17-1"></a># Raport oceny (Migration Assessment)
<a href="#cb17-2"></a>ora2pg -c ora2pg.conf -t SHOW_REPORT --estimate_cost
<a href="#cb17-3"></a>
<a href="#cb17-4"></a># Wynik: Migration level: B-4 (na skali A-1 do C-5)
<a href="#cb17-5"></a># A-1: Prosta migracja (kilka dni)
<a href="#cb17-6"></a># C-5: Bardzo złożona migracja (miesiące)

12.5.2 AWS Schema Conversion Tool (SCT)

  • GUI narzędzie od AWS do konwersji schematów Oracle → PostgreSQL
  • Automatyczna konwersja z raportami problemów
  • Integracja z AWS DMS do migracji danych

12.5.3 pgLoader

  • Narzędzie do ładowania danych z Oracle do PostgreSQL
  • Szybkie, wielowątkowe ładowanie
  • Obsługa konwersji typów

12.6 Rozszerzenia PostgreSQL przydatne po migracji z Oracle

RozszerzenieOpis
orafceEmulacja funkcji Oracle w PostgreSQL (NVL, DECODE, itp.)
pgTAPFramework testowy dla PostgreSQL
PostGISOdpowiednik Oracle Spatial
pg_partmanZaawansowane partycjonowanie
pg_cronScheduler (odpowiednik Oracle Scheduler/DBMS_SCHEDULER)
pgAuditAuditing (odpowiednik Oracle Audit)
pg_stat_statementsMonitoring zapytań (odpowiednik AWR/ASH)
dblinkDatabase links (odpowiednik Oracle DB links)
postgres_fdwForeign Data Wrappers
pg_hint_planHinty optymalizatora (odpowiednik Oracle hints)

12.7 Kroki migracji Oracle → PostgreSQL

  1. Assessment — Ora2Pg SHOW_REPORT, AWS SCT Assessment
  2. Provision PostgreSQL — Azure/AWS/GCP managed PostgreSQL
  3. Konwersja schematu — Ora2Pg lub AWS SCT
  4. Konwersja kodu PL/SQL — Automatyczna + ręczna (pakiety!)
  5. Migracja danych — Ora2Pg, pgLoader, lub AWS DMS
  6. Instalacja rozszerzeń — orafce, PostGIS, pg_cron itd.
  7. Modyfikacja aplikacji — Driver, connection string, ORM config
  8. Testy regresyjne — Porównanie wyników zapytań Oracle vs PostgreSQL
  9. Testy wydajnościowe — Benchmark, tuning (work_mem, shared_buffers)
  10. Cutover — Przełączenie produkcji

13. Opcja 10: Migracja do MySQL / MariaDB

13.1 Opis

Migracja do MySQL/MariaDB jest opcją dla prostszych baz danych Oracle, które nie wykorzystują zaawansowanych funkcji PL/SQL.

13.2 Docelowe usługi

UsługaProvider
Azure Database for MySQL Flexible ServerAzure
Amazon RDS for MySQL / Aurora MySQLAWS
Cloud SQL for MySQLGCP
OCI MySQL HeatWaveOracle Cloud

13.3 Ograniczenia

  • Brak odpowiednika pakietów PL/SQL
  • Ograniczone wsparcie dla sekwencji (MySQL 8.0+ nie ma natywnych)
  • Brak materialized views
  • Ograniczone partycjonowanie w porównaniu z Oracle
  • Prostsze procedury składowane

13.4 Narzędzia

  • MySQL Workbench Migration Wizard — Automatyczna konwersja schematów
  • AWS DMS — Migracja danych online
  • AWS SCT — Konwersja schematów

14. Narzędzia migracyjne — szczegółowy przegląd

14.1 Oracle Data Pump (expdp/impdp)

Typ: Offline migration
Zastosowanie: Eksport/import schematów, tabel, całych baz
Downtime: Wymagany (czas proporcjonalny do rozmiaru danych)

<a href="#cb18-1"></a># Eksport pełnej bazy
<a href="#cb18-2"></a>expdp system/password@source \
<a href="#cb18-3"></a>  DIRECTORY=DATA_PUMP_DIR \
<a href="#cb18-4"></a>  DUMPFILE=full_export_%U.dmp \
<a href="#cb18-5"></a>  FILESIZE=10G \
<a href="#cb18-6"></a>  PARALLEL=8 \
<a href="#cb18-7"></a>  FULL=Y \
<a href="#cb18-8"></a>  COMPRESSION=ALL \
<a href="#cb18-9"></a>  LOGFILE=export.log
<a href="#cb18-10"></a>
<a href="#cb18-11"></a># Eksport wybranych schematów
<a href="#cb18-12"></a>expdp system/password@source \
<a href="#cb18-13"></a>  DIRECTORY=DATA_PUMP_DIR \
<a href="#cb18-14"></a>  DUMPFILE=schema_export_%U.dmp \
<a href="#cb18-15"></a>  SCHEMAS=APP,REPORT,ETL \
<a href="#cb18-16"></a>  PARALLEL=4 \
<a href="#cb18-17"></a>  COMPRESSION=ALL
<a href="#cb18-18"></a>
<a href="#cb18-19"></a># Import na docelowej bazie
<a href="#cb18-20"></a>impdp system/password@target \
<a href="#cb18-21"></a>  DIRECTORY=DATA_PUMP_DIR \
<a href="#cb18-22"></a>  DUMPFILE=full_export_%U.dmp \
<a href="#cb18-23"></a>  PARALLEL=8 \
<a href="#cb18-24"></a>  TRANSFORM=SEGMENT_ATTRIBUTES:N \
<a href="#cb18-25"></a>  LOGFILE=import.log

Optymalizacja: – Użyj PARALLEL dla wielu wątków – COMPRESSION=ALL redukuje rozmiar dump – FILESIZE dzieli dump na wiele plików – CLUSTER=N może przyspieszyć eksport partycjonowanych tabel – EXCLUDE=STATISTICS — Import statystyk osobno (DBMS_STATS)

14.2 Oracle RMAN (Recovery Manager)

Typ: Offline/Online backup-restore
Zastosowanie: Migracja pełnych baz danych z zachowaniem spójności
Downtime: Minimalny (z incremental backup)

<a href="#cb19-1"></a># Pełny backup do Object Storage (Azure Blob / S3 / OCI)
<a href="#cb19-2"></a>rman target /
<a href="#cb19-3"></a>CONFIGURE CHANNEL DEVICE TYPE sbt
<a href="#cb19-4"></a>  PARMS 'SBT_LIBRARY=/path/to/libosbws.so,
<a href="#cb19-5"></a>  ENV=(OSB_WS_HOST=https://storage.blob.core.windows.net,
<a href="#cb19-6"></a>  OSB_WS_BUCKET=oracle-backup)';
<a href="#cb19-7"></a>
<a href="#cb19-8"></a>RUN {
<a href="#cb19-9"></a>  ALLOCATE CHANNEL ch1 DEVICE TYPE sbt;
<a href="#cb19-10"></a>  ALLOCATE CHANNEL ch2 DEVICE TYPE sbt;
<a href="#cb19-11"></a>  ALLOCATE CHANNEL ch3 DEVICE TYPE sbt;
<a href="#cb19-12"></a>  ALLOCATE CHANNEL ch4 DEVICE TYPE sbt;
<a href="#cb19-13"></a>  BACKUP AS COMPRESSED BACKUPSET DATABASE
<a href="#cb19-14"></a>    PLUS ARCHIVELOG DELETE INPUT;
<a href="#cb19-15"></a>  RELEASE CHANNEL ch1;
<a href="#cb19-16"></a>  RELEASE CHANNEL ch2;
<a href="#cb19-17"></a>  RELEASE CHANNEL ch3;
<a href="#cb19-18"></a>  RELEASE CHANNEL ch4;
<a href="#cb19-19"></a>}
<a href="#cb19-20"></a>
<a href="#cb19-21"></a># Restore na serwerze docelowym
<a href="#cb19-22"></a>rman target /
<a href="#cb19-23"></a>RUN {
<a href="#cb19-24"></a>  RESTORE DATABASE;
<a href="#cb19-25"></a>  RECOVER DATABASE;
<a href="#cb19-26"></a>  ALTER DATABASE OPEN RESETLOGS;
<a href="#cb19-27"></a>}

Podejście z Incremental Backup (minimalny downtime):

Dzień 1: Full RMAN Backup → Transfer → Restore na target
Dzień 2: Incremental Level 1 → Transfer → Apply na target
Dzień 3: Incremental Level 1 → Transfer → Apply na target
Cutover: Final Incremental → Apply → Open with RESETLOGS

14.3 Oracle Data Guard

Typ: Online migration (zero downtime)
Zastosowanie: Migracja z minimalnym przestojem
Downtime: Sekundy (switchover)

<a href="#cb21-1"></a>-- Na serwerze źródłowym (Primary)
<a href="#cb21-2"></a>-- Konfiguracja redo transport
<a href="#cb21-3"></a>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=cloud_standby
<a href="#cb21-4"></a>  ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
<a href="#cb21-5"></a>  DB_UNIQUE_NAME=cloud_db';
<a href="#cb21-6"></a>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
<a href="#cb21-7"></a>
<a href="#cb21-8"></a>-- Na serwerze docelowym (Standby)
<a href="#cb21-9"></a>-- Po skonfigurowaniu i zsynchronizowaniu:
<a href="#cb21-10"></a>-- Switchover (na primary)
<a href="#cb21-11"></a>ALTER DATABASE SWITCHOVER TO cloud_db;
<a href="#cb21-12"></a>
<a href="#cb21-13"></a>-- Nowa primary w chmurze
<a href="#cb21-14"></a>ALTER DATABASE OPEN;

Architektura Data Guard Migration:

┌────────────────┐                    ┌────────────────┐
│  On-Premises   │    Redo Logs       │  Cloud Target  │
│  PRIMARY       │──────────────────▶│  STANDBY       │
│                │  (via VPN/         │                │
│  Oracle DB     │   ExpressRoute/    │  Oracle DB     │
│                │   Direct Connect)  │                │
└────────────────┘                    └────────────────┘
        │                                     │
        │         SWITCHOVER                  │
        │       (sekundy downtime)            │
        ▼                                     ▼
┌────────────────┐                    ┌────────────────┐
│  On-Premises   │                    │  Cloud Target  │
│  STANDBY       │◀──────────────────│  PRIMARY       │
│  (do wyłącz.)  │                   │  (produkcja)   │
└────────────────┘                    └────────────────┘

14.4 Oracle GoldenGate

Typ: Online migration (zero downtime) z Change Data Capture
Zastosowanie: Migracje homogeniczne i heterogeniczne, replikacja w czasie rzeczywistym
Downtime: Zero (logiczny cutover)

Komponenty:

┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│   Extract    │───▶│  Trail Files  │───▶│  Replicat    │
│  (Source)    │    │  (kolejka)   │    │  (Target)    │
│              │    │              │    │              │
│ Czyta redo   │    │ Pliki z      │    │ Apllikuje    │
│ logs, capture│    │ zmianami     │    │ zmiany       │
│ DML/DDL      │    │ (local/remote)│   │ na target    │
└──────────────┘    └──────────────┘    └──────────────┘

Konfiguracja przykładowa:

-- Extract (na źródle)
EXTRACT ext_ora
USERID ogg_user, PASSWORD ogg_pass
EXTTRAIL ./dirdat/et
TABLE app_schema.*;

-- Data Pump (transfer trail files)
EXTRACT dpump
USERID ogg_user, PASSWORD ogg_pass
RMTHOST cloud-target, MGRPORT 7809
RMTTRAIL ./dirdat/rt
TABLE app_schema.*;

-- Replicat (na celu)
REPLICAT rep_ora
USERID ogg_user, PASSWORD ogg_pass
MAP app_schema.*, TARGET app_schema.*;

Zastosowania GoldenGate: – Migracja Oracle → Oracle (homogeniczna) – Migracja Oracle → PostgreSQL (heterogeniczna) – Migracja Oracle → MySQL/SQL Server (heterogeniczna) – Bidirekcjonalna replikacja (Active-Active) – Real-time data integration

14.5 Oracle Zero Downtime Migration (ZDM)

Typ: Zautomatyzowane narzędzie migracyjne Oracle
Zastosowanie: Migracja z on-premises do OCI lub cloud z orkiestracją
Downtime: Minimalny do zero

Obsługiwane migracje:

On-Premises Oracle ──▶ OCI Base Database
On-Premises Oracle ──▶ OCI Exadata Cloud Service
On-Premises Oracle ──▶ OCI Autonomous Database
On-Premises Oracle ──▶ Oracle Database@Azure

Metody w ZDM:Logical Migration — Data Pump z GoldenGate (online) lub standalone – Physical Migration — RMAN z Data Guard (online) lub standalone

<a href="#cb26-1"></a># Inicjalizacja ZDM
<a href="#cb26-2"></a>zdmcli migrate database \
<a href="#cb26-3"></a>  -sourcesid ORCL \
<a href="#cb26-4"></a>  -sourcenode source-host \
<a href="#cb26-5"></a>  -srcauth zdmauth \
<a href="#cb26-6"></a>  -srcarg1 user:opc \
<a href="#cb26-7"></a>  -srcarg2 identity_file:/home/zdm/.ssh/id_rsa \
<a href="#cb26-8"></a>  -targethome /u01/app/oracle/product/19.0 \
<a href="#cb26-9"></a>  -targetnode target-host \
<a href="#cb26-10"></a>  -tgtauth zdmauth \
<a href="#cb26-11"></a>  -tgtarg1 user:opc \
<a href="#cb26-12"></a>  -tgtarg2 identity_file:/home/zdm/.ssh/id_rsa \
<a href="#cb26-13"></a>  -eval  # Najpierw ewaluacja

14.6 AWS Database Migration Service (DMS)

Typ: Online migration (CDC)
Zastosowanie: Migracja danych Oracle → dowolna baza docelowa na AWS

Obsługiwane cele: – Amazon RDS for Oracle – Amazon RDS for PostgreSQL / Aurora PostgreSQL – Amazon RDS for MySQL / Aurora MySQL – Amazon Redshift – Amazon S3

Konfiguracja:

<a href="#cb27-1"></a>{
<a href="#cb27-2"></a>  "SourceEndpoint": {
<a href="#cb27-3"></a>    "EngineName": "oracle",
<a href="#cb27-4"></a>    "ServerName": "oracle-source.example.com",
<a href="#cb27-5"></a>    "Port": 1521,
<a href="#cb27-6"></a>    "DatabaseName": "ORCL",
<a href="#cb27-7"></a>    "Username": "dms_user"
<a href="#cb27-8"></a>  },
<a href="#cb27-9"></a>  "TargetEndpoint": {
<a href="#cb27-10"></a>    "EngineName": "postgres",
<a href="#cb27-11"></a>    "ServerName": "target.rds.amazonaws.com",
<a href="#cb27-12"></a>    "Port": 5432,
<a href="#cb27-13"></a>    "DatabaseName": "target_db",
<a href="#cb27-14"></a>    "Username": "postgres"
<a href="#cb27-15"></a>  },
<a href="#cb27-16"></a>  "ReplicationTask": {
<a href="#cb27-17"></a>    "MigrationType": "full-load-and-cdc",
<a href="#cb27-18"></a>    "TableMappings": {
<a href="#cb27-19"></a>      "rules": [{
<a href="#cb27-20"></a>        "rule-type": "selection",
<a href="#cb27-21"></a>        "rule-id": "1",
<a href="#cb27-22"></a>        "rule-name": "include-all",
<a href="#cb27-23"></a>        "object-locator": {
<a href="#cb27-24"></a>          "schema-name": "APP_SCHEMA",
<a href="#cb27-25"></a>          "table-name": "%"
<a href="#cb27-26"></a>        },
<a href="#cb27-27"></a>        "rule-action": "include"
<a href="#cb27-28"></a>      }]
<a href="#cb27-29"></a>    }
<a href="#cb27-30"></a>  }
<a href="#cb27-31"></a>}

14.7 Azure Database Migration Service

Typ: Online/Offline migration
Zastosowanie: Migracja danych do Azure SQL lub PostgreSQL

Obsługiwane ścieżki migracji z Oracle: – Oracle → Azure SQL Database – Oracle → Azure SQL Managed Instance – Oracle → Azure Database for PostgreSQL

14.8 Porównanie narzędzi migracyjnych

NarzędzieTypDowntimeHeterogeniczneKosztZłożoność
Data PumpOfflineDługiDarmoweNiska
RMANOffline/Incr.ŚredniDarmoweŚrednia
Data GuardOnlineSekundyLicencja EEŚrednia
GoldenGateOnline/CDCZeroLicencja OGGWysoka
ZDMOrkiestracjaMin./ZeroDarmoweŚrednia
AWS DMSOnline/CDCMin.Per-useŚrednia
Azure DMSOnline/OfflineRóżnyPer-useŚrednia
SSMAOfflineDługi✅ (→SQL)DarmoweŚrednia
Ora2PgOfflineDługi✅ (→PG)Darmowe (OSS)Średnia
AWS SCTSchema onlyN/ADarmoweNiska

15. Scenariusze migracyjne — szczegółowe opisy

15.1 Scenariusz A: Lift & Shift dużej bazy OLTP do Azure VM

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c Enterprise Edition, RAC 2-node
  • Rozmiar: 5 TB danych, 200 GB redo logs/dzień
  • Obciążenie: 50,000 transakcji/s, 2,000 równoczesnych sesji
  • RPO: < 1 minuta, RTO: < 15 minut
  • Dopuszczalny downtime: 4 godziny (okno weekendowe)

Architektura docelowa:

┌─────────────────────────────────────────────────────────────────┐
│                      Azure West Europe                          │
│                                                                  │
│  ┌─────────────────┐    Data Guard    ┌─────────────────┐       │
│  │ VM: E104ids_v5  │◀──────────────▶│ VM: E104ids_v5   │       │
│  │ Primary (AZ-1)  │                 │ Standby (AZ-2)   │       │
│  │ 104 vCPU        │                 │ 104 vCPU         │       │
│  │ 672 GB RAM      │                 │ 672 GB RAM       │       │
│  │                  │                 │                   │       │
│  │ Ultra Disk:      │                 │ Ultra Disk:       │       │
│  │ DATA: 6TB 80K IO│                 │ DATA: 6TB 80K IO │       │
│  │ REDO: 500GB 40K │                 │ REDO: 500GB 40K  │       │
│  │ ARCH: 2TB       │                 │ ARCH: 2TB        │       │
│  └────────┬────────┘                 └────────┬─────────┘       │
│           │                                    │                 │
│           └──────────┬─────────────────────────┘                 │
│                      │                                           │
│              ┌───────┴───────┐                                   │
│              │ Azure ILB     │                                   │
│              │ (port 1521)   │                                   │
│              └───────────────┘                                   │
│                                                                  │
│  Backup: RMAN → Azure Blob Storage (Hot, lifecycle → Cool 30d)  │
│  Monitor: Azure Monitor + OEM Cloud Control                      │
└─────────────────────────────────────────────────────────────────┘

                    Data Guard (async)
                          │
                          ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Azure North Europe (DR)                     │
│                                                                  │
│  ┌─────────────────┐                                             │
│  │ VM: E64ids_v5   │   (Far Sync Standby - Disaster Recovery)    │
│  │ Standby (AZ-1)  │                                             │
│  │ 64 vCPU         │                                             │
│  │ 504 GB RAM      │                                             │
│  └─────────────────┘                                             │
└─────────────────────────────────────────────────────────────────┘

Plan migracji krok po kroku:

FazaZadanieCzasKto
Tydzień 1-2Provisioning Azure (VNet, VMs, Disks, NSG)5 dniCloud Engineer
Tydzień 2-3Instalacja Oracle 19c na Azure VMs3 dniDBA
Tydzień 3Konfiguracja Data Guard (on-prem → Azure)2 dniDBA
Tydzień 3-4Synchronizacja inicjalna Data Guard3-5 dniDBA (automatyczne)
Tydzień 4Konfiguracja backupu RMAN → Blob Storage1 dzieńDBA
Tydzień 4-5Konfiguracja monitoringu (OEM + Azure Monitor)2 dniDBA + Cloud
Tydzień 5-6Testy HA (failover/switchover)3 dniDBA + App Team
Tydzień 6-7Testy wydajnościowe (load test)5 dniApp Team + DBA
Tydzień 7-8Testy aplikacji (UAT)5 dniApp Team
Weekend 8CUTOVER4hDBA + App Team
Tydzień 9Monitoring post-migracyjny5 dniWszyscy
Tydzień 10Decommission on-premises (po potwierdzeniu)5 dniInfra Team

Procedura Cutover (4h okno):

T+00:00  Ogłoszenie maintenance window
T+00:15  Zatrzymanie aplikacji → baza read-only
T+00:30  Weryfikacja synchronizacji Data Guard (zero lag)
T+00:45  Switchover Data Guard (on-prem → Azure)
T+01:00  Weryfikacja nowej primary na Azure
T+01:15  Zmiana DNS/connection string aplikacji
T+01:30  Restart aplikacji, weryfikacja połączeń
T+02:00  Smoke testy aplikacji (kluczowe flow)
T+02:30  Pełne testy regresyjne (automatyczne)
T+03:00  Weryfikacja backupów, monitoringu
T+03:30  Ogłoszenie zakończenia maintenance
T+03:45  Monitoring — zespół w gotowości 24h

15.2 Scenariusz B: Migracja do Oracle Database@Azure (Exadata)

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c EE, Exadata on-premises (Quarter Rack)
  • Rozmiar: 20 TB danych
  • Obciążenie: Oracle RAC 2-node, OLTP + reporting
  • Wymagania: Zero downtime, Oracle RAC, pełna kompatybilność
  • Integracja: Aplikacje na Azure AKS, Azure AD authentication

Architektura docelowa:

┌──────────────────────────────────────────────────────────────────┐
│                        Azure Region                               │
│                                                                   │
│  ┌──────────────────────────┐   ┌──────────────────────────────┐  │
│  │     Azure Services       │   │   Oracle Database@Azure      │  │
│  │                          │   │                              │  │
│  │  ┌─────────────────┐    │   │  ┌─────────────────────┐    │  │
│  │  │ AKS Cluster     │    │   │  │ Exadata Quarter Rack │    │  │
│  │  │ (App Tier)      │────┼───┼──│ 2 DB Servers         │    │  │
│  │  └─────────────────┘    │   │  │ 3 Storage Servers    │    │  │
│  │  ┌─────────────────┐    │   │  │ 76.8 TB Flash        │    │  │
│  │  │ Azure Functions │    │   │  │                       │    │  │
│  │  │ (Integration)   │────┼───┼──│ RAC: 2-node          │    │  │
│  │  └─────────────────┘    │   │  │ Data Guard: Enabled   │    │  │
│  │  ┌─────────────────┐    │   │  │ TDE: Enabled          │    │  │
│  │  │ Azure AD        │    │   │  └─────────────────────┘    │  │
│  │  │ (Identity)      │────┼───┼──▶ Entra ID Federation     │  │
│  │  └─────────────────┘    │   │                              │  │
│  │  ┌─────────────────┐    │   │  Billing: Azure unified     │  │
│  │  │ Azure Monitor   │    │   │  Management: OCI + Azure    │  │
│  │  └─────────────────┘    │   │                              │  │
│  └──────────────────────────┘   └──────────────────────────────┘  │
└──────────────────────────────────────────────────────────────────┘

Plan migracji:

FazaZadanieCzas
Tydzień 1Aktywacja Oracle Database@Azure, konfiguracja OCI Tenancy3 dni
Tydzień 1-2Provisioning Exadata Infrastructure w Azure3-5 dni (Oracle)
Tydzień 2Konfiguracja sieci (Azure VNet delegation)2 dni
tydzień 2-3Utworzenie VM Cluster i CDB/PDB2 dni
Tydzień 3-4Konfiguracja Oracle Data Guard (on-prem Exadata → DB@Azure)3 dni
Tydzień 4-6Synchronizacja inicjalna (20 TB via ExpressRoute)5-10 dni
Tydzień 6-7Konfiguracja RAC, TDE, Data Guard na Azure3 dni
Tydzień 7-8Konfiguracja Entra ID Federation2 dni
Tydzień 8-9Testy wydajnościowe i HA5 dni
Tydzień 9-10UAT5 dni
Tydzień 10Cutover (Data Guard Switchover)2h
Tydzień 11Post-migration monitoring5 dni

15.3 Scenariusz C: Migracja Oracle → Azure Database for PostgreSQL

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c Standard Edition 2
  • Rozmiar: 500 GB danych, 50 schematów
  • PL/SQL: ~200 procedur, 30 pakietów, 50 trigerów
  • Integracja: Aplikacja Java Spring Boot (Hibernate/JPA)
  • Cel: Eliminacja licencji Oracle, redukcja kosztów o 60%
  • Dopuszczalny downtime: 8 godzin

Plan migracji:

┌─────────────────────────────────────────────────────────────────┐
│                    FAZA 1: ASSESSMENT (2 tygodnie)               │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Ora2Pg Assessment Report                                     │
│     ora2pg -c ora2pg.conf -t SHOW_REPORT --estimate_cost         │
│                                                                  │
│  2. Identyfikacja niekompatybilności:                            │
│     - Pakiety PL/SQL → rozbicie na funkcje w schematach          │
│     - Oracle-specific SQL (CONNECT BY, DECODE, (+) outer join)   │
│     - Typy danych (DATE → TIMESTAMP, NUMBER → NUMERIC)           │
│     - Sekwencje i synonimy                                       │
│     - Database links → Foreign Data Wrappers                     │
│                                                                  │
│  3. Oszacowanie pracochłonności konwersji kodu                   │
│                                                                  │
│  Wynik: Migration Assessment Score: B-3                          │
│  Szacowany czas konwersji kodu: 4-6 tygodni                     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              FAZA 2: KONWERSJA SCHEMATU (3 tygodnie)             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Ora2Pg schema conversion:                                    │
│     ora2pg -c ora2pg.conf -t TABLE -o tables.sql                 │
│     ora2pg -c ora2pg.conf -t VIEW -o views.sql                   │
│     ora2pg -c ora2pg.conf -t SEQUENCE -o sequences.sql           │
│     ora2pg -c ora2pg.conf -t INDEX -o indexes.sql                │
│     ora2pg -c ora2pg.conf -t TRIGGER -o triggers.sql             │
│                                                                  │
│  2. Ręczna korekta typów danych:                                 │
│     - Oracle DATE → TIMESTAMP (zachowanie komponentu czasu)      │
│     - NUMBER bez precyzji → odpowiedni typ PostgreSQL            │
│     - CLOB/BLOB → TEXT/BYTEA                                     │
│                                                                  │
│  3. Provisioning Azure Database for PostgreSQL:                   │
│     - Tier: General Purpose                                      │
│     - vCores: 16, Memory: 64 GB                                 │
│     - Storage: 1 TB (auto-grow)                                  │
│     - HA: Zone-redundant                                         │
│     - Region: West Europe                                        │
│                                                                  │
│  4. Deploy schematu na PostgreSQL                                │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              FAZA 3: KONWERSJA KODU (4-6 tygodni)                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Automatyczna konwersja (Ora2Pg):                             │
│     ora2pg -c ora2pg.conf -t FUNCTION -o functions.sql           │
│     ora2pg -c ora2pg.conf -t PROCEDURE -o procedures.sql         │
│     ora2pg -c ora2pg.conf -t PACKAGE -o packages.sql             │
│                                                                  │
│  2. Ręczna konwersja pakietów PL/SQL:                            │
│     - Każdy pakiet → schemat PostgreSQL                          │
│     - Package variables → tabela konfiguracji lub GUC            │
│     - Package cursors → funkcje zwracające SETOF                 │
│     - Package overloading → różne nazwy funkcji                  │
│                                                                  │
│  3. Konwersja Oracle-specific SQL w aplikacji:                   │
│     - Hibernate dialect: OracleDialect → PostgreSQLDialect       │
│     - Native queries: konwersja ręczna                           │
│     - JDBC driver: ojdbc → postgresql                            │
│     - Connection pool: konfiguracja pod PostgreSQL               │
│                                                                  │
│  4. Instalacja rozszerzenia orafce:                              │
│     CREATE EXTENSION orafce;                                     │
│     -- Zapewnia: NVL, DECODE, LPAD/RPAD, ADD_MONTHS, itp.       │
│                                                                  │
│  5. Instalacja pg_cron:                                          │
│     CREATE EXTENSION pg_cron;                                    │
│     -- Zamiennik Oracle DBMS_SCHEDULER                           │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              FAZA 4: MIGRACJA DANYCH (1-2 tygodnie)              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Metoda 1: Ora2Pg (offline, proste)                              │
│  ┌──────────────────────────────────────────────────────────┐    │
│  │ ora2pg -c ora2pg.conf -t COPY -o data.sql -j 8           │    │
│  │ psql -h pg-server -d target -f data.sql                   │    │
│  └──────────────────────────────────────────────────────────┘    │
│                                                                  │
│  Metoda 2: AWS DMS (online, CDC — jeśli na AWS)                 │
│  ┌──────────────────────────────────────────────────────────┐    │
│  │ Full Load + CDC: Oracle → PostgreSQL                      │    │
│  │ Minimalizuje downtime do czasu cutover                    │    │
│  └──────────────────────────────────────────────────────────┘    │
│                                                                  │
│  Metoda 3: Oracle GoldenGate for PostgreSQL (online)             │
│  ┌──────────────────────────────────────────────────────────┐    │
│  │ Extract z Oracle + Replicat do PostgreSQL                 │    │
│  │ Obsługuje CDC i heterogeniczną replikację                 │    │
│  └──────────────────────────────────────────────────────────┘    │
│                                                                  │
│  Walidacja danych:                                               │
│  - Porównanie row count per tabela                               │
│  - Checksum kluczowych tabel                                     │
│  - Porównanie wyników kluczowych zapytań                         │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              FAZA 5: TESTY (3-4 tygodnie)                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. Testy jednostkowe PL/pgSQL (pgTAP)                           │
│  2. Testy integracyjne aplikacji                                 │
│  3. Testy wydajnościowe (porównanie z Oracle baseline)           │
│  4. Testy obciążeniowe (JMeter/Gatling)                          │
│  5. Testy failover/HA                                            │
│  6. UAT (User Acceptance Testing)                                │
│  7. Testy backupu/restore                                        │
│                                                                  │
│  Tuning PostgreSQL:                                              │
│  - shared_buffers = 16GB (25% RAM)                               │
│  - effective_cache_size = 48GB (75% RAM)                         │
│  - work_mem = 256MB                                              │
│  - maintenance_work_mem = 2GB                                    │
│  - wal_buffers = 64MB                                            │
│  - random_page_cost = 1.1 (SSD)                                 │
│  - effective_io_concurrency = 200 (SSD)                          │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│              FAZA 6: CUTOVER (8h okno migracyjne)                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  T+00:00  Maintenance window start                               │
│  T+00:30  Zatrzymanie aplikacji                                  │
│  T+01:00  Final data sync (delta od ostatniego pełnego load)     │
│  T+03:00  Walidacja danych (row count, checksums)                │
│  T+03:30  Deploy nowej wersji aplikacji (PostgreSQL driver)      │
│  T+04:00  Smoke testy                                            │
│  T+05:00  Pełne testy regresyjne                                │
│  T+06:00  Weryfikacja monitoringu i alertów                      │
│  T+07:00  Go/No-Go decision                                     │
│  T+07:30  Ogłoszenie zakończenia maintenance                     │
│  T+08:00  Monitoring — zespół w gotowości                        │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Szacowane oszczędności:

PozycjaOracle (roczny)PostgreSQL Azure (roczny)Oszczędność
Licencja Oracle SE2 (2 proc.)~$34,000$0$34,000
Oracle Support (22%)~$7,500$0$7,500
Infrastruktura (serwer)~$15,000~$12,000 (PaaS)$3,000
DBA (czas na patching)~$10,000~$2,000 (auto-patching)$8,000
RAZEM~$66,500~$14,000~$52,500 (79%)

15.4 Scenariusz D: Multi-Cloud OCI + Azure (Interconnect)

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c EE, 10 TB, RAC, GoldenGate rep.
  • Aplikacje: .NET na Azure App Service, Azure AKS
  • Wymaganie: Najlepsza wydajność Oracle + ekosystem Azure
  • Region: West Europe

Plan migracji:

FazaZadanieCzas
Tydzień 1Setup OCI Tenancy, VCN, kompartmenty3 dni
Tydzień 1-2Konfiguracja Azure ExpressRoute + OCI FastConnect Interconnect3 dni
Tydzień 2Walidacja Interconnect (latency test <2ms)1 dzień
Tydzień 2-3Provisioning OCI Exadata Cloud Service5 dni
Tydzień 3Konfiguracja Oracle RAC na OCI Exadata3 dni
Tydzień 3-4Data Guard: on-prem → OCI (via VPN/FastConnect)5 dni
Tydzień 4-5Synchronizacja danych (10 TB)5-7 dni
Tydzień 5Federacja tożsamości Azure AD ↔︎ OCI IAM2 dni
Tydzień 5-6Rekonfiguracja aplikacji Azure (connection do OCI)3 dni
Tydzień 6-7Testy end-to-end (latency, throughput, failover)5 dni
Tydzień 7-8UAT5 dni
Tydzień 8Cutover (Data Guard Switchover)2h

15.5 Scenariusz E: Migracja Oracle → Amazon Aurora PostgreSQL

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c EE, 2 TB, 100 proc. w PL/SQL
  • Cel: Eliminacja Oracle, wysoka wydajność na AWS
  • Wymaganie: Minimalizacja downtime (max 2h)
  • Aplikacja: Microservices na ECS/EKS

Podejście: AWS SCT + DMS + ręczna konwersja kodu

┌─────────────┐    ┌──────────┐    ┌──────────────┐    ┌────────────────┐
│ AWS Schema  │───▶│ Ręczna   │───▶│ AWS DMS      │───▶│ Aurora         │
│ Conversion  │    │ konwersja│    │ Full Load    │    │ PostgreSQL     │
│ Tool (SCT)  │    │ PL/SQL   │    │ + CDC        │    │                │
│             │    │          │    │              │    │ Reader: 2      │
│ Schema      │    │ Procedures│   │ Oracle →     │    │ Writer: 1      │
│ assessment  │    │ Packages │    │ Aurora PG    │    │ Auto-scaling   │
│ & convert   │    │ Triggers │    │              │    │                │
└─────────────┘    └──────────┘    └──────────────┘    └────────────────┘

Fazy:

  1. AWS SCT Assessment (1 tydzień) — Raport konwersji schematu
  2. Schema Conversion (2 tygodnie) — SCT automatic + manual fixes
  3. PL/SQL → PL/pgSQL (4-6 tygodni) — Konwersja 100 procedur
  4. AWS DMS Setup (1 tydzień) — Full Load + CDC replication task
  5. Application Migration (2 tygodnie) — Driver, ORM, native queries
  6. Testing (3 tygodnie) — Functional, performance, HA
  7. Cutover (2h) — Stop CDC, switch DNS, validate

15.6 Scenariusz F: Migracja Oracle → Azure SQL Managed Instance

Parametry wejściowe:

  • Baza źródłowa: Oracle 12c SE, 200 GB, 30 procedur PL/SQL
  • Aplikacja: .NET Framework, Entity Framework
  • Cel: Migracja na w pełni zarządzaną bazę Microsoft
  • Dopuszczalny downtime: Weekend (48h)

Podejście: SSMA + Azure DMS

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│  1. SSMA     │───▶│  2. SSMA     │───▶│  3. Azure    │───▶│  4. Azure SQL│
│  Assessment  │    │  Convert     │    │  DMS         │    │  Managed     │
│              │    │  Schema &    │    │  Data        │    │  Instance    │
│  Report:     │    │  PL/SQL →    │    │  Migration   │    │              │
│  85% auto    │    │  T-SQL       │    │  (online)    │    │  16 vCores   │
│  15% manual  │    │              │    │              │    │  64 GB RAM   │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

Specyficzne konwersje dla tego scenariusza:

<a href="#cb34-1"></a>-- ORACLE: Pakiet
<a href="#cb34-2"></a>CREATE OR REPLACE PACKAGE order_pkg AS
<a href="#cb34-3"></a>  PROCEDURE create_order(p_customer_id NUMBER, p_amount NUMBER);
<a href="#cb34-4"></a>  FUNCTION get_order_total(p_order_id NUMBER) RETURN NUMBER;
<a href="#cb34-5"></a>END order_pkg;
<a href="#cb34-6"></a>
<a href="#cb34-7"></a>-- SQL SERVER: Schemat + procedury
<a href="#cb34-8"></a>CREATE SCHEMA order_pkg;
<a href="#cb34-9"></a>GO
<a href="#cb34-10"></a>
<a href="#cb34-11"></a>CREATE PROCEDURE order_pkg.create_order
<a href="#cb34-12"></a>  @p_customer_id INT,
<a href="#cb34-13"></a>  @p_amount DECIMAL(18,2)
<a href="#cb34-14"></a>AS
<a href="#cb34-15"></a>BEGIN
<a href="#cb34-16"></a>  -- konwertowany kod
<a href="#cb34-17"></a>END;
<a href="#cb34-18"></a>GO
<a href="#cb34-19"></a>
<a href="#cb34-20"></a>CREATE FUNCTION order_pkg.get_order_total(@p_order_id INT)
<a href="#cb34-21"></a>RETURNS DECIMAL(18,2)
<a href="#cb34-22"></a>AS
<a href="#cb34-23"></a>BEGIN
<a href="#cb34-24"></a>  DECLARE @total DECIMAL(18,2);
<a href="#cb34-25"></a>  -- konwertowany kod
<a href="#cb34-26"></a>  RETURN @total;
<a href="#cb34-27"></a>END;
<a href="#cb34-28"></a>GO

15.7 Scenariusz G: Migracja Oracle do OCI Autonomous Database

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c EE, 3 TB, Oracle RAC
  • Cel: Najwyższy poziom automatyzacji, minimalny DBA overhead
  • Wymaganie: Auto-scaling, auto-patching, auto-tuning

Podejście: Oracle Zero Downtime Migration (ZDM)

┌──────────────────────────────────────────────────────────────────┐
│                    ZDM Orchestrated Migration                     │
│                                                                   │
│  Source (On-Prem)         ZDM Host           Target (OCI ADB)     │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────────┐    │
│  │ Oracle 19c   │    │ ZDM Service  │    │ Autonomous DB    │    │
│  │ RAC (EE)     │    │              │    │ Transaction      │    │
│  │              │    │ Orchestrates:│    │ Processing       │    │
│  │ 3 TB data   │───▶│ 1. Data Pump │───▶│                  │    │
│  │              │    │ 2. GoldenGate│    │ Auto-scaling     │    │
│  │              │    │ 3. Switchover│    │ 4-128 OCPU       │    │
│  └──────────────┘    └──────────────┘    └──────────────────┘    │
│                                                                   │
│  Metoda: Logical Online Migration                                 │
│  - Initial Load: Data Pump via Object Storage                     │
│  - CDC: GoldenGate (zintegrowany w ZDM)                          │
│  - Cutover: Automatyczny switchover                               │
│                                                                   │
└──────────────────────────────────────────────────────────────────┘

Uwagi dotyczące Autonomous Database:

AspektOpis
Nieobsługiwane funkcjeOracle RAC (zarządzane przez ADB), bezpośredni dostęp OS, custom patching
Mapowanie PDBOn-prem CDB/PDB → ADB (każda ADB to efektywnie PDB)
NetworkingPrivate Endpoint w OCI VCN, dostęp przez Service Gateway
SzyfrowanieTDE wymagane (wbudowane, Oracle-managed keys lub Customer-managed)
BackupAutomatyczny, 60 dni retencji, cross-region opcjonalnie

15.8 Scenariusz H: Migracja krytycznej bazy Oracle z zerowym downtime (GoldenGate)

Parametry wejściowe:

  • Baza źródłowa: Oracle 19c EE, 8 TB, 24/7 operacja
  • Wymaganie: Absolutnie zero downtime (system finansowy)
  • Cel: Oracle na Azure VM z Data Guard
  • Metoda: Oracle GoldenGate bidirection + logical cutover

Architektura migracji:

FAZA 1: Setup i Initial Load
═══════════════════════════════════════════════════════

On-Premises                           Azure VM
┌──────────────┐                    ┌──────────────┐
│ Oracle 19c   │  GoldenGate       │ Oracle 19c   │
│ PRIMARY      │  Extract ────────▶│ TARGET       │
│              │                    │              │
│ 8 TB data   │  Initial Load     │ Empty DB     │
│ (running)    │  (Data Pump)  ───▶│ → 8 TB       │
│              │                    │              │
│ Users: ✅   │                    │ Users: ❌    │
└──────────────┘                    └──────────────┘


FAZA 2: CDC Replication (dni/tygodnie)
═══════════════════════════════════════════════════════

On-Premises                           Azure VM
┌──────────────┐                    ┌──────────────┐
│ Oracle 19c   │  GoldenGate CDC   │ Oracle 19c   │
│ PRIMARY      │  Extract ────────▶│ TARGET       │
│              │  (real-time)       │              │
│ Zmiany ──────┤                    │──── Applies  │
│              │  Lag: <1 sec       │              │
│ Users: ✅   │                    │ Users: ❌    │
└──────────────┘                    └──────────────┘


FAZA 3: Cutover (logiczny, zero downtime)
═══════════════════════════════════════════════════════

1. Włącz bidirectional replication
2. Przekieruj ruch app → Azure (DNS TTL = 30s)
3. Weryfikacja, że zmiany replikują w obu kierunkach
4. Gdy 100% ruchu na Azure — wyłącz starą replikację

On-Premises                           Azure VM
┌──────────────┐                    ┌──────────────┐
│ Oracle 19c   │  ◀───────────────▶│ Oracle 19c   │
│ (old primary)│  Bidirectional    │ (new primary)│
│              │  GoldenGate       │              │
│ Users: ❌   │                    │ Users: ✅    │
│ (drain)      │                    │ (active)     │
└──────────────┘                    └──────────────┘

16. Porównanie kosztów

16.1 Szacunkowe koszty miesięczne (przykład: 4 TB baza, 16 vCPU, 128 GB RAM)

OpcjaCompute/mies.Storage/mies.Licencja Oracle/mies.Support/mies.TOTAL/mies.
On-premises~$1,500 (amortz.)~$200~$2,800 (BYOL amortz.)~$620~$5,120
Azure VM (BYOL)~$2,100~$460(BYOL — istniejąca)~$620~$3,180
Azure VM (nowa lic.)~$2,100~$460~$2,800~$620~$5,980
Oracle DB@Azure~$4,500 (Exadata)IncludedIncludedIncluded~$4,500
OCI Base DB~$1,200~$100~$2,500 (BYOL)~$550~$4,350
OCI Autonomous DB~$2,400~$100IncludedIncluded~$2,500
AWS EC2 (BYOL)~$2,000~$400(BYOL)~$620~$3,020
AWS RDS Oracle~$5,500 (license incl.)~$400IncludedIncluded~$5,900
Azure PostgreSQL~$1,200~$200$0$0~$1,400
Aurora PostgreSQL~$1,400~$200$0$0~$1,600
Azure SQL MI~$2,200IncludedIncludedIncluded~$2,200

Uwaga: Ceny orientacyjne, zależne od regionu, typu instancji, rezerwacji i rabatów.

16.2 Koszt migracji (jednorazowy)

ScenariuszZespółCzasSzacowany koszt
Lift & Shift (Azure VM)2-3 os.2-3 miesiące$30,000 – $80,000
Oracle DB@Azure2-3 os.2-3 miesiące$40,000 – $100,000
OCI Migration2-3 os.2-3 miesiące$30,000 – $80,000
Oracle → PostgreSQL3-5 os.4-8 miesięcy$100,000 – $300,000
Oracle → Azure SQL3-5 os.3-6 miesięcy$80,000 – $250,000
Multi-Cloud (OCI+Azure)3-4 os.3-4 miesiące$60,000 – $150,000

17. Zarządzanie licencjami Oracle w chmurze

17.1 BYOL (Bring Your Own License)

Przeniesienie istniejących licencji Oracle do chmury:

CloudReguły licencjonowania
Azure1 Oracle Processor License = 4 vCPU (hyper-threaded), max 8 vCPU na SE2
AWS1 Oracle Processor License = 2 vCPU (hyper-threaded) dla EC2, wyjątek dla m/r/x z BYOL
OCI1 Oracle Processor License = 2 OCPU (natively 1 OCPU = 2 vCPU)
GCP1 Oracle Processor License = 2 vCPU

17.2 Oracle License Included (LI)

  • OCI: Licencja wliczona w cenę (Autonomous DB, Exadata Cloud)
  • AWS RDS: Licencja wliczona w cenę instancji RDS
  • Oracle DB@Azure: Licencja wliczona w cenę usługi

17.3 Ważne zasady

  1. Oracle License Agreement — Sprawdź ograniczenia w umowie (Limited Use, Named User Plus vs Processor)
  2. Authorized Cloud Environments — Oracle oficjalnie autoryzuje: OCI, AWS, Azure, Google Cloud
  3. Soft Partitioning vs Hard Partitioning — VMware = soft partitioning (licencja na cały host), dedicated hosts = hard partitioning
  4. Oracle Audit — Przygotuj się na audyt Oracle po migracji
  5. Support transfer — Poinformuj Oracle Support o zmianie platformy

17.4 Rekomendacje licencyjne

ScenariuszRekomendacja
Mam istniejące licencje EEBYOL na Azure/AWS/OCI — oszczędność
Chcę uniknąć licencji OracleMigracja do PostgreSQL/Azure SQL
Potrzebuję RAC/ExadataOCI lub Oracle DB@Azure (LI)
Mała baza, SE2BYOL na VM lub migracja do PostgreSQL
Koniec umowy licencyjnejOCI Autonomous (LI) lub refactor do open-source

18. Bezpieczeństwo i zgodność

18.1 Szyfrowanie

WarstwaOracle on-premChmura (cel)
Data at restTDE (Transparent Data Encryption)TDE + Cloud KMS (Azure Key Vault, AWS KMS, OCI Vault)
Data in transitOracle Native Encryption, SSL/TLSTLS 1.2/1.3 (wymuszane)
Backup encryptionRMAN encryptionAutomatyczne szyfrowanie backup (AES-256)
NetworkVPNVPN / ExpressRoute / Direct Connect / FastConnect

18.2 Kontrola dostępu

  • Azure: Azure AD (Entra ID) + RBAC + NSG + Private Endpoints
  • AWS: IAM + Security Groups + VPC Endpoints + KMS
  • OCI: OCI IAM + Network Security Groups + Private Endpoints
  • PostgreSQL: Row-Level Security (RLS), Column-Level Permissions

18.3 Zgodność regulacyjna

StandardAzureAWSOCIGCP
GDPR
ISO 27001
SOC 1/2/3
HIPAA
PCI DSS
FedRAMP

18.4 Network Security — architektura referencyjna

┌─────────────────────────────────────────────────────────────────┐
│                      Azure VNet (10.0.0.0/16)                    │
│                                                                  │
│  ┌─────────────────────────────────┐                             │
│  │  Subnet: Application (10.0.1.0/24)                            │
│  │  NSG: Allow 443 inbound, 1521 to DB subnet                   │
│  │  ┌───────────┐  ┌───────────┐                                │
│  │  │ App VM 1  │  │ App VM 2  │                                │
│  │  └───────────┘  └───────────┘                                │
│  └──────────────────────┬──────────────────────────────────────┘ │
│                         │ (NSG: only 1521)                       │
│  ┌──────────────────────┴──────────────────────────────────────┐ │
│  │  Subnet: Database (10.0.2.0/24)                              │ │
│  │  NSG: Allow 1521 from App subnet ONLY                        │ │
│  │  ┌───────────┐  ┌───────────┐                                │ │
│  │  │ Oracle VM │  │ Oracle VM │   Private Endpoint             │ │
│  │  │ (Primary) │  │ (Standby) │   (no public IP)              │ │
│  │  └───────────┘  └───────────┘                                │ │
│  └──────────────────────────────────────────────────────────────┘ │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────────┐ │
│  │  Subnet: Management (10.0.3.0/24)                            │ │
│  │  NSG: Allow SSH from Bastion only                            │ │
│  │  ┌───────────┐                                               │ │
│  │  │ Azure     │                                               │ │
│  │  │ Bastion   │                                               │ │
│  │  └───────────┘                                               │ │
│  └──────────────────────────────────────────────────────────────┘ │
│                                                                  │
│  ExpressRoute / VPN Gateway ◀───▶ On-premises                   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

19. Testowanie i walidacja

19.1 Plan testów post-migracyjnych

19.1.1 Testy integralności danych

<a href="#cb38-1"></a>-- Porównanie row count
<a href="#cb38-2"></a>-- Na źródle (Oracle)
<a href="#cb38-3"></a>SELECT table_name, num_rows FROM all_tables WHERE owner = 'APP_SCHEMA';
<a href="#cb38-4"></a>
<a href="#cb38-5"></a>-- Na celu (np. PostgreSQL)
<a href="#cb38-6"></a>SELECT schemaname, relname, n_live_tup FROM pg_stat_user_tables;
<a href="#cb38-7"></a>
<a href="#cb38-8"></a>-- Porównanie checksums kluczowych tabel
<a href="#cb38-9"></a>-- Oracle
<a href="#cb38-10"></a>SELECT ORA_HASH(SUM(ORA_HASH(col1||col2||col3))) FROM table1;
<a href="#cb38-11"></a>
<a href="#cb38-12"></a>-- PostgreSQL
<a href="#cb38-13"></a>SELECT md5(string_agg(md5(col1::text||col2::text||col3::text), '')) 
<a href="#cb38-14"></a>FROM table1;

19.1.2 Testy funkcjonalne

  • Wszystkie procedury składowane wykonują się poprawnie
  • Triggery działają jak oczekiwano
  • Widoki zwracają prawidłowe dane
  • Sekwencje generują prawidłowe wartości
  • Constraints (PK, FK, CHECK, UNIQUE) są enforce’owane
  • Indeksy są wykorzystywane przez optymalizator
  • Job scheduler działa prawidłowo
  • Backup/restore działa prawidłowo

19.1.3 Testy wydajnościowe

TestMetrykaOracle BaselineCloud TargetAkceptowalne
OLTP throughputTPS50,000≥ 45,000≥ 90%
Query response timeP95 (ms)15≤ 20≤ 133%
Batch processingCzas (min)120≤ 150≤ 125%
Concurrent usersSesje2,000≥ 2,000≥ 100%
Backup timeCzas (min)60≤ 90≤ 150%
Recovery timeRTO (min)15≤ 15≤ 100%

19.1.4 Testy HA/DR

  • Failover automatyczny (Data Guard / Zone HA)
  • Switchover ręczny
  • Recovery z backup
  • Cross-region DR test
  • Network partition test

19.2 Narzędzia do testowania

NarzędzieZastosowanie
Oracle Real Application Testing (RAT)Replay Oracle workload na nowym serwerze
Apache JMeterLoad testing aplikacji i bazy
GatlingPerformance testing
pgTAPUnit testing PostgreSQL
tSQLtUnit testing SQL Server
DbUnitDatabase testing w Java
Flyway/LiquibaseSchema versioning i validation

20. Plan rollback

20.1 Strategia rollback dla każdego scenariusza

Lift & Shift (Data Guard)

Stan normalny po migracji:
  Cloud = PRIMARY, On-prem = STANDBY

Rollback:
  1. Switchover: Cloud → STANDBY, On-prem → PRIMARY
  2. Zmiana DNS/connection string na on-prem
  3. Walidacja

Czas rollback: ~30 minut

Migracja do PostgreSQL

Stan normalny po migracji:
  PostgreSQL = produkcja, Oracle = wyłączony

Rollback (wymaga przygotowania):
  1. Utrzymaj Oracle w stanie standby przez 2-4 tygodnie po migracji
  2. Jeśli rollback potrzebny:
     a. Zatrzymaj aplikację
     b. Reverse data sync: PostgreSQL → Oracle (GoldenGate lub dump)
     c. Przywróć starą wersję aplikacji (Oracle driver)
     d. Restart aplikacji z Oracle

Czas rollback: 4-8 godzin (zależnie od zmian w danych)

Migracja do Azure SQL

Analogicznie do PostgreSQL — utrzymaj Oracle standby.
Reverse migration za pomocą SSMA reverse lub Data Export/Import.

20.2 Macierz ryzyk i mitygacji

RyzykoPrawdopodobieństwoWpływMitygacja
Utrata danychNiskieKrytycznyBackup przed cutover, Data Guard w sync
Degradacja wydajnościŚrednieWysokiTesty obciążeniowe przed cutover, tuning
Niekompatybilność PL/SQLŚrednie (heterog.)WysokiPełna konwersja i testy przed cutover
Problemy siecioweNiskieŚredniRedundantne połączenia, ExpressRoute
Przekroczenie okna migracjiŚrednieŚredniRehearsal migration, buffer w planie
Problemy licencyjneNiskieWysokiKonsultacja z Oracle LMS przed migracją
Brak kompetencji zespołuŚrednieŚredniSzkolenia, wsparcie partnera Oracle

21. Podsumowanie i rekomendacje

21.1 Drzewo decyzyjne

                    Czy chcesz zachować Oracle?
                            │
                    ┌───────┴───────┐
                    │               │
                   TAK             NIE
                    │               │
            ┌───────┴────┐    ┌────┴───────────────┐
            │            │    │                    │
      Zero zmian    Optymalizacja   Jaka baza docelowa?
        w kodzie     i zarządzanie       │
            │            │         ┌─────┴─────┐
            │            │         │           │
       Lift&Shift  Oracle PaaS  PostgreSQL  SQL Server
            │            │         │           │
     ┌──────┴──┐    ┌───┴────┐    │       Azure SQL MI
     │         │    │        │    │       (SSMA)
   Azure     AWS   OCI    DB@Azure │
   VM (IaaS) EC2  Autonomous      │
                  /Exadata   Azure DB for
                              PostgreSQL
                            / Aurora PG
                            (Ora2Pg/SCT)

21.2 Rekomendacje według profilu

Profil organizacjiRekomendowana opcjaPowód
Duży enterprise, mocno zintegrowany z Oracle, minimalne ryzykoOracle Database@Azure lub OCI ExadataPełna kompatybilność, minimalne zmiany
Enterprise na Azure, potrzeba Oracle wydajnościOracle Database@AzureNatywna integracja, Exadata performance
Enterprise, multi-cloud strategyOCI-Azure InterconnectBest of both worlds
Średnia firma, chce zredukować koszty OracleMigracja do PostgreSQL (Azure/AWS)Eliminacja licencji, 60-80% oszczędności
Firma .NET/Microsoft stackAzure SQL Managed Instance (SSMA)Naturalna integracja z ekosystemem MS
Startup/mała firma z OraclePostgreSQL na Azure/AWSMinimalne koszty, open-source
Szybka migracja, minimalne ryzykoLift & Shift na Azure/AWS VMNajszybsza ścieżka, BYOL
Krytyczny system 24/7GoldenGate + Azure VM/OCIZero downtime, pełna kontrola
Chce pozbyć się zarządzania DBOCI Autonomous DatabaseAuto-everything, minimalny DBA

21.3 Kolejne kroki

  1. ✅ Przeprowadź inwentaryzację środowiska Oracle
  2. ✅ Wykonaj assessment z użyciem odpowiedniego narzędzia (Ora2Pg, SSMA, AWS SCT)
  3. ✅ Wybierz docelową platformę na podstawie drzewa decyzyjnego
  4. ✅ Przeprowadź Proof of Concept (PoC) na wybranej platformie
  5. ✅ Zaplanuj budżet migracji i docelowy TCO
  6. ✅ Przeprowadź rehearsal migration na środowisku testowym
  7. ✅ Zaplanuj okno migracyjne i procedurę cutover
  8. ✅ Wykonaj migrację produkcyjną według wybranego scenariusza
  9. ✅ Monitoring post-migracyjny
  10. ✅ Decommission starego środowiska (po potwierdzeniu stabilności)

Artykuł ten został przygotowany jako kompletne kompendium wiedzy o migracji Oracle Database do chmury. Każdy scenariusz powinien być dostosowany do specyficznych wymagań organizacji.