Share via


Ontwerpen en prestaties voor Oracle-migraties

Dit artikel is deel één van een zevendelige reeks die richtlijnen biedt voor het migreren van Oracle naar Azure Synapse Analytics. De focus van dit artikel ligt op aanbevolen procedures voor ontwerp en prestaties.

Overzicht

Vanwege de kosten en complexiteit van het onderhouden en upgraden van verouderde on-premises Oracle-omgevingen willen veel bestaande Oracle-gebruikers profiteren van de innovaties die worden geboden door moderne cloudomgevingen. Met IaaS-omgevingen (Infrastructure-as-a-Service) en PaaS-cloudomgevingen (Platform as a Service) kunt u taken, zoals infrastructuuronderhoud en platformontwikkeling, delegeren aan de cloudprovider.

Tip

Meer dan alleen een database: de Azure-omgeving bevat een uitgebreide set mogelijkheden en hulpprogramma's.

Hoewel Oracle en Azure Synapse Analytics beide SQL-databases zijn die MPP-technieken (Massively Parallel Processing) gebruiken om hoge queryprestaties te bereiken op uitzonderlijk grote gegevensvolumes, zijn er enkele eenvoudige verschillen in aanpak:

  • Verouderde Oracle-systemen worden vaak on-premises geïnstalleerd en gebruiken relatief dure hardware, terwijl Azure Synapse cloudgebaseerde azure-opslag- en rekenresources gebruikt.

  • Het upgraden van een Oracle-configuratie is een belangrijke taak met extra fysieke hardware en mogelijk langdurige herconfiguratie van databases, of dumpen en opnieuw laden. Omdat opslag- en rekenresources gescheiden zijn in de Azure-omgeving en elastisch kunnen worden geschaald, kunnen deze resources onafhankelijk van elkaar of naar beneden worden geschaald.

  • U kunt Azure Synapse zo nodig onderbreken of het formaat ervan wijzigen om het resourcegebruik en de kosten te verminderen.

Microsoft Azure is een wereldwijd beschikbare, uiterst veilige, schaalbare cloudomgeving met Azure Synapse en een ecosysteem van ondersteunende hulpprogramma's en mogelijkheden. In het volgende diagram ziet u een overzicht van het Azure Synapse-ecosysteem.

Grafiek met het Azure Synapse-ecosysteem van ondersteunende hulpprogramma's en mogelijkheden.

Azure Synapse biedt de beste relationele databaseprestaties met behulp van technieken zoals MPP en automatische caching in het geheugen. U kunt de resultaten van deze technieken zien in onafhankelijke benchmarks, zoals de techniek die onlangs door GigaOm wordt uitgevoerd, waarmee Azure Synapse wordt vergeleken met andere populaire clouddatawarehouseaanbiedingen. Klanten die migreren naar de Azure Synapse-omgeving, zien veel voordelen, waaronder:

  • Verbeterde prestaties en prijs/prestaties.

  • Verbeterde flexibiliteit en kortere tijd tot waarde.

  • Snellere serverimplementatie en toepassingsontwikkeling.

  • Elastische schaalbaarheid: alleen betalen voor werkelijk gebruik.

  • Verbeterde beveiliging/naleving.

  • Lagere kosten voor opslag en herstel na noodgevallen.

  • Lagere totale TCO, betere kostenbeheersing en gestroomlijnde operationele uitgaven (OPEX).

Als u deze voordelen wilt maximaliseren, migreert u nieuwe of bestaande gegevens en toepassingen naar het Azure Synapse-platform. In veel organisaties omvat migratie het verplaatsen van een bestaand datawarehouse van een verouderd on-premises platform, zoals Oracle, naar Azure Synapse. Op hoog niveau omvat het migratieproces de volgende stappen:

    Voorbereiding 🡆

  • Bereik definiëren: wat moet worden gemigreerd.

  • Inventaris maken van gegevens en processen voor migratie.

  • Wijzigingen in gegevensmodellen definiëren (indien van toepassing).

  • Mechanisme voor het extraheren van brongegevens definiëren.

  • Identificeer de juiste hulpprogramma's en functies van Azure en derden die moeten worden gebruikt.

  • Train het personeel vroeg op het nieuwe platform.

  • Stel het Azure-doelplatform in.

    Migratie 🡆

  • Begin klein en eenvoudig.

  • Automatiseer waar mogelijk.

  • Maak gebruik van ingebouwde Azure-hulpprogramma's en -functies om de migratie te verminderen.

  • Migreer metagegevens voor tabellen en weergaven.

  • Historische gegevens migreren die moeten worden onderhouden.

  • Opgeslagen procedures en bedrijfsprocessen migreren of herstructureren.

  • EtL/ELT incrementele belastingprocessen migreren of herstructureren.

    Na de migratie

  • Bewaak en documenteer alle fasen van het proces.

  • Gebruik de ervaring die is opgedaan om een sjabloon te maken voor toekomstige migraties.

  • Herbouw het gegevensmodel indien nodig (met behulp van nieuwe platformprestaties en schaalbaarheid).

  • Test toepassingen en queryhulpprogramma's.

  • Benchmarken en queryprestaties optimaliseren.

Dit artikel bevat algemene informatie en richtlijnen voor prestatieoptimalisatie bij het migreren van een datawarehouse vanuit een bestaande Oracle-omgeving naar Azure Synapse. Het doel van prestatieoptimalisatie is om na de migratie dezelfde of betere prestaties van het datawarehouse in Azure Synapse te bereiken.

Ontwerpoverwegingen

Migratiebereik

Wanneer u zich voorbereidt op migratie vanuit een Oracle-omgeving, moet u rekening houden met de volgende migratieopties.

De workload voor de eerste migratie kiezen

Oudere Oracle-omgevingen zijn doorgaans in de loop van de tijd ontwikkeld om meerdere onderwerpgebieden en gemengde workloads te omvatten. Wanneer u besluit waar u wilt beginnen met een migratieproject, kiest u een gebied waar u het volgende kunt doen:

  • De levensvatbaarheid van de migratie naar Azure Synapse bewijzen door snel de voordelen van de nieuwe omgeving te bieden.

  • Laat uw interne technische medewerkers relevante ervaring opdoen met de processen en hulpprogramma's die ze gebruiken wanneer ze andere gebieden migreren.

  • Maak een sjabloon voor verdere migraties die specifiek zijn voor de Oracle-bronomgeving en de huidige hulpprogramma's en processen die al aanwezig zijn.

Een goede kandidaat voor een eerste migratie vanuit een Oracle-omgevingsondersteuning de voorgaande items en:

  • Implementeert een BI/Analytics-workload in plaats van een OLTP-workload (Online Transaction Processing).

  • Heeft een gegevensmodel, zoals een ster- of snowflake-schema, dat kan worden gemigreerd met minimale aanpassingen.

Tip

Maak een inventaris van objecten die moeten worden gemigreerd en documenteer het migratieproces.

Het volume van gemigreerde gegevens in een eerste migratie moet groot genoeg zijn om de mogelijkheden en voordelen van de Azure Synapse-omgeving te demonstreren, maar niet te groot om snel waarde te demonstreren. Een grootte in het bereik van 1-10 terabyte is typisch.

Een eerste benadering van een migratieproject is het minimaliseren van het risico, de inspanning en de benodigde tijd, zodat u snel de voordelen van de Azure-cloudomgeving kunt zien. De volgende benaderingen beperken het bereik van de eerste migratie tot alleen de datamarts en hebben geen betrekking op bredere migratieaspecten, zoals ETL-migratie en historische gegevensmigratie. U kunt deze aspecten echter in latere fasen van het project aanpakken zodra de gemigreerde datamart-laag weer wordt gevuld met gegevens en de vereiste buildprocessen.

Lift-and-shift-migratie versus gefaseerde benadering

Over het algemeen zijn er twee soorten migratie, ongeacht het doel en het bereik van de geplande migratie: lift-and-shift as-is en een gefaseerde benadering die wijzigingen bevat.

Lift-and-shift

In een lift-and-shift-migratie wordt een bestaand gegevensmodel, zoals een stervormig schema, ongewijzigd gemigreerd naar het nieuwe Azure Synapse-platform. Deze aanpak minimaliseert de risico- en migratietijd door het werk te verminderen dat nodig is om de voordelen van de overstap naar de Azure-cloudomgeving te realiseren. Lift-and-shift-migratie is geschikt voor deze scenario's:

  • U hebt een bestaande Oracle-omgeving met één datamart die moet worden gemigreerd of
  • U hebt een bestaande Oracle-omgeving met gegevens die zich al in een goed ontworpen ster- of sneeuwvlokschema bevinden, of
  • U ondervindt tijd- en kostendruk om over te stappen naar een moderne cloudomgeving.

Tip

Lift and shift is een goed uitgangspunt, zelfs als volgende fasen wijzigingen in het gegevensmodel implementeren.

Gefaseerde benadering met wijzigingen

Als een verouderd datawarehouse gedurende een lange periode is ontwikkeld, moet u het mogelijk opnieuw ontwikkelen om de vereiste prestatieniveaus te behouden. Mogelijk moet u ook opnieuw engineeren om nieuwe gegevens te ondersteunen, zoals IoT-stromen (Internet of Things). Als onderdeel van het her-engineeringproces migreert u naar Azure Synapse om de voordelen van een schaalbare cloudomgeving te krijgen. Migratie kan een wijziging in het onderliggende gegevensmodel bevatten, zoals een verplaatsing van een Inmon-model naar een gegevenskluis.

Microsoft raadt u aan uw bestaande gegevensmodel naar Azure te verplaatsen en de prestaties en flexibiliteit van de Azure-omgeving te gebruiken om de wijzigingen opnieuw te implementeren. Op die manier kunt u de mogelijkheden van Azure gebruiken om de wijzigingen aan te brengen zonder dat dit van invloed is op het bestaande bronsysteem.

Microsoft-faciliteiten gebruiken om een migratie op basis van metagegevens te implementeren

U kunt het migratieproces automatiseren en organiseren met behulp van de mogelijkheden van de Azure-omgeving. Deze aanpak minimaliseert de prestaties van de bestaande Oracle-omgeving, die mogelijk al dicht bij de capaciteit wordt uitgevoerd.

De SQL Server Migration Assistant (SSMA) voor Oracle kan veel onderdelen van het migratieproces automatiseren, waaronder in sommige gevallen functies en procedurele code. SSMA ondersteunt Azure Synapse als doelomgeving.

Schermopname die laat zien hoe SQL Server Migration Assistant voor Oracle veel onderdelen van het migratieproces kan automatiseren.

Met SSMA voor Oracle kunt u een Oracle-datawarehouse of datamart migreren naar Azure Synapse. SSMA is ontworpen om het proces van het migreren van tabellen, weergaven en gegevens uit een bestaande Oracle-omgeving te automatiseren.

Azure Data Factory is een cloudservice voor gegevensintegratie die ondersteuning biedt voor het maken van gegevensgestuurde werkstromen in de cloud waarmee gegevensverplaatsing en gegevenstransformatie worden georganiseerd en geautomatiseerd. U kunt Data Factory gebruiken om gegevensgestuurde werkstromen (pijplijnen) te maken en te plannen die gegevens uit verschillende gegevensarchieven opnemen. Data Factory kan gegevens verwerken en transformeren met behulp van rekenservices zoals Azure HDInsight Hadoop, Spark, Azure Data Lake Analytics en Azure Machine Learning.

Data Factory kan worden gebruikt voor het migreren van gegevens op de bron naar het Azure SQL-doel. Deze offlinegegevensverplaatsing helpt om de downtime van de migratie aanzienlijk te verminderen.

Azure Database Migration Services kan u helpen bij het plannen en uitvoeren van een migratie vanuit omgevingen zoals Oracle.

Wanneer u van plan bent om Azure-faciliteiten te gebruiken om het migratieproces te beheren, maakt u metagegevens waarin alle gegevenstabellen worden vermeld die moeten worden gemigreerd en hun locatie.

Ontwerpverschillen tussen Oracle en Azure Synapse

Zoals eerder vermeld, zijn er enkele basisverschillen in de benadering tussen Oracle- en Azure Synapse Analytics-databases. SSMA voor Oracle helpt niet alleen deze hiaten te overbruggen, maar automatiseert ook de migratie. Hoewel SSMA niet de meest efficiënte benadering is voor zeer grote hoeveelheden gegevens, is dit handig voor kleinere tabellen.

Meerdere databases versus individuele databases en schema's

De Oracle-omgeving bevat vaak meerdere afzonderlijke databases. Er kunnen bijvoorbeeld afzonderlijke databases zijn voor: gegevensopname- en faseringstabellen, kernwarehousetabellen en datamarts, ook wel de semantische laag genoemd. Verwerking in ETL- of ELT-pijplijnen kan cross-database-joins implementeren en gegevens verplaatsen tussen de afzonderlijke databases.

De Azure Synapse-omgeving bevat daarentegen één database en maakt gebruik van schema's om tabellen te scheiden in logisch gescheiden groepen. U wordt aangeraden een reeks schema's binnen de Azure Synapse-doeldatabase te gebruiken om de afzonderlijke databases na te bootsen die zijn gemigreerd vanuit de Oracle-omgeving. Als de Oracle-omgeving al schema's gebruikt, moet u mogelijk een nieuwe naamconventie gebruiken wanneer u de bestaande Oracle-tabellen en -weergaven naar de nieuwe omgeving verplaatst. U kunt bijvoorbeeld de bestaande Oracle-schema- en tabelnamen samenvoegen in de nieuwe Azure Synapse-tabelnaam en schemanamen in de nieuwe omgeving gebruiken om de oorspronkelijke afzonderlijke databasenamen te behouden. Hoewel u SQL-weergaven boven op de onderliggende tabellen kunt gebruiken om de logische structuren te onderhouden, zijn er potentiële nadelen voor deze aanpak:

  • Weergaven in Azure Synapse hebben het kenmerk Alleen-lezen, dus alle updates voor de gegevens moeten plaatsvinden op de onderliggende basistabellen.

  • Er bestaan mogelijk al een of meer weergavelagen en het toevoegen van een extra weergavelaag kan van invloed zijn op de prestaties.

Tip

Combineer meerdere databases in één database in Azure Synapse en gebruik schemanamen om de tabellen logisch te scheiden.

Overwegingen voor tabellen

Wanneer u tabellen migreert tussen verschillende omgevingen, worden doorgaans alleen de onbewerkte gegevens en de metagegevens beschreven waarmee deze fysiek worden gemigreerd. Andere database-elementen van het bronsysteem, zoals indexen, worden meestal niet gemigreerd omdat ze mogelijk onnodig zijn of anders worden geïmplementeerd in de nieuwe omgeving.

Prestatieoptimalisaties in de bronomgeving, zoals indexen, geven aan waar u prestatieoptimalisatie in de nieuwe omgeving kunt toevoegen. Als query's in de bronomgeving van Oracle bijvoorbeeld vaak bit-toegewezen indexen gebruiken, betekent dit dat er een niet-geclusterde index moet worden gemaakt in Azure Synapse. Andere systeemeigen technieken voor prestatieoptimalisatie, zoals tabelreplicatie, zijn mogelijk meer van toepassing dan het rechtstreeks maken van een dergelijke index. SSMA voor Oracle kan worden gebruikt om migratieaanbeveling te bieden voor tabeldistributie en indexering.

Tip

Bestaande indexen geven kandidaten aan voor indexering in het gemigreerde magazijn.

Niet-ondersteunde Oracle-databaseobjecttypen

Oracle-specifieke functies kunnen vaak worden vervangen door Azure Synapse-functies. Sommige Oracle-databaseobjecten worden echter niet rechtstreeks ondersteund in Azure Synapse. In de volgende lijst met niet-ondersteunde Oracle-databaseobjecten wordt beschreven hoe u een equivalente functionaliteit in Azure Synapse kunt bereiken.

  • Verschillende indexeringsopties: in Oracle hebben verschillende indexeringsopties, zoals bit-toegewezen indexen, op functies gebaseerde indexen en domeinindexen, geen direct equivalent in Azure Synapse.

    U kunt nagaan welke kolommen worden geïndexeerd en het indextype op:

    • Query's uitvoeren op systeemcatalogustabellen en -weergaven, zoals ALL_INDEXES, DBA_INDEXESen USER_INDEXESDBA_IND_COL. U kunt de ingebouwde query's in Oracle SQL Developer gebruiken, zoals wordt weergegeven in de volgende schermopname.

      Schermopname die laat zien hoe u query's uitvoert op tabellen en weergaven in de systeemcatalogus in Oracle SQL Developer.

      U kunt ook de volgende query uitvoeren om alle indexen van een bepaald type te vinden:

      SELECT * FROM dba_indexes WHERE index_type LIKE 'FUNCTION-BASED%';
      
    • Query's uitvoeren op de dba_index_usage of v$object_usage weergaven wanneer bewaking is ingeschakeld. U kunt query's uitvoeren op deze weergaven in Oracle SQL Developer, zoals wordt weergegeven in de volgende schermopname.

      Schermopname die laat zien welke indexen worden gebruikt in Oracle SQL Developer.

    Op functies gebaseerde indexen, waarbij de index het resultaat van een functie op de onderliggende gegevenskolommen bevat, hebben geen direct equivalent in Azure Synapse. U wordt aangeraden eerst de gegevens te migreren en vervolgens in Azure Synapse de Oracle-query's uit te voeren die gebruikmaken van op functies gebaseerde indexen om de prestaties te meten. Als de prestaties van deze query's in Azure Synapse niet acceptabel zijn, kunt u een kolom maken die de vooraf berekende waarde bevat en die kolom vervolgens indexeren.

    Wanneer u de Azure Synapse-omgeving configureert, is het zinvol om alleen indexen in gebruik te implementeren. Azure Synapse ondersteunt momenteel de indextypen die hier worden weergegeven:

    Schermopname van de indextypen die door Azure Synapse worden ondersteund.

    Azure Synapse-functies, zoals parallelle queryverwerking en in-memory caching van gegevens en resultaten, maken het waarschijnlijk dat er minder indexen nodig zijn voor datawarehouse-toepassingen om prestatiedoelen te bereiken. U wordt aangeraden de volgende indextypen te gebruiken in Azure Synapse:

    • Geclusterde columnstore-indexen: wanneer er geen indexopties zijn opgegeven voor een tabel, maakt Azure Synapse standaard een geclusterde columnstore-index. Geclusterde columnstore-tabellen bieden het hoogste niveau van gegevenscompressie, de beste algehele queryprestaties en over het algemeen betere prestaties dan geclusterde index- of heaptabellen. Een geclusterde columnstore-index is meestal de beste keuze voor grote tabellen. Wanneer u een tabel maakt, kiest u geclusterde columnstore als u niet zeker weet hoe u de tabel moet indexeren. Er zijn echter enkele scenario's waarbij geclusterde columnstore-indexen niet de beste optie zijn:

      • Tabellen met vooraf sorteren van gegevens op een sorteersleutel(s) kunnen profiteren van de segmentverwijdering die is ingeschakeld door geordende geclusterde columnstore-indexen.
      • Tabellen met varchar(max), nvarchar(max) of varbinary(max) gegevenstypen, omdat een geclusterde columnstore-index deze gegevenstypen niet ondersteunt. In plaats daarvan kunt u overwegen een heap- of geclusterde index te gebruiken.
      • Tabellen met tijdelijke gegevens, omdat columnstore-tabellen mogelijk minder efficiënt zijn dan heap- of tijdelijke tabellen.
      • Kleine tabellen met minder dan 100 miljoen rijen. Overweeg in plaats daarvan heap-tabellen te gebruiken.
    • Geordende geclusterde columnstore-indexen: Door efficiënte segmentverwijdering mogelijk te maken, bieden geordende geclusterde columnstore-indexen in toegewezen SQL-pools van Azure Synapse veel snellere prestaties door grote hoeveelheden geordende gegevens over te slaan die niet overeenkomen met het querypredicaat. Het laden van gegevens in een geordende CCI-tabel kan langer duren dan een niet-geordende CCI-tabel vanwege de sorteerbewerking voor gegevens, maar query's kunnen later sneller worden uitgevoerd met geordende CCI. Zie Prestaties afstemmen met geordende geclusterde columnstore-index voor meer informatie over geordende geclusterde columnstore-indexen.

    • Geclusterde en niet-geclusterde indexen: geclusterde indexen kunnen beter presteren dan geclusterde columnstore-indexen wanneer één rij snel moet worden opgehaald. Voor query's waarbij één rijzoekactie of slechts een paar rijzoekacties extreem snel moeten worden uitgevoerd, kunt u overwegen een clusterindex of niet-geclusterde secundaire index te gebruiken. Het nadeel van het gebruik van een geclusterde index is dat alleen query's met een zeer selectief filter op de geclusterde indexkolom profiteren. Als u het filteren op andere kolommen wilt verbeteren, kunt u een niet-geclusterde index toevoegen aan de andere kolommen. Elke index die u aan een tabel toevoegt, gebruikt echter meer ruimte en verhoogt de verwerkingstijd om te laden.

    • Heap-tabellen: wanneer u tijdelijk gegevens op Azure Synapse plaatst, is het mogelijk dat u met behulp van een heap-tabel het algehele proces sneller maakt. Dit komt doordat het laden van gegevens naar heap-tabellen sneller is dan het laden van gegevens om tabellen te indexeren, en in sommige gevallen kunnen volgende leesbewerkingen worden uitgevoerd vanuit de cache. Als u alleen gegevens laadt om deze te fasen voordat u meer transformaties uitvoert, is het veel sneller om deze te laden in een heap-tabel dan een geclusterde columnstore-tabel. Het laden van gegevens naar een tijdelijke tabel gaat ook sneller dan het laden van een tabel naar permanente opslag. Voor kleine opzoektabellen met minder dan 100 miljoen rijen zijn heaptabellen meestal de juiste keuze. Clusters columnstore-tabellen beginnen optimale compressie te bereiken wanneer ze meer dan 100 miljoen rijen bevatten.

  • Geclusterde tabellen: Oracle-tabellen kunnen worden geordend, zodat tabelrijen die vaak samen worden geopend (op basis van een gemeenschappelijke waarde) fysiek worden opgeslagen om de I/O van de schijf te verminderen wanneer gegevens worden opgehaald. Oracle biedt ook een hash-clusteroptie voor afzonderlijke tabellen, waarmee een hash-waarde wordt toegepast op de clustersleutel en rijen met dezelfde hash-waarde fysiek worden opgeslagen. Gebruik de SELECT * FROM DBA_CLUSTERS; query om clusters in een Oracle-database weer te geven. Als u wilt bepalen of een tabel zich in een cluster bevindt, gebruikt u de SELECT * FROM TAB; query, waarin de tabelnaam en cluster-id voor elke tabel worden weergegeven.

    In Azure Synapse kunt u vergelijkbare resultaten behalen met behulp van gerealiseerde en/of gerepliceerde tabellen, omdat deze tabeltypen de I/O minimaliseren die vereist zijn tijdens de uitvoering van query's.

  • Gerealiseerde weergaven: Oracle ondersteunt gerealiseerde weergaven en adviseert het gebruik van een of meer voor grote tabellen met veel kolommen, waarbij slechts een paar kolommen regelmatig worden gebruikt in query's. Gerealiseerde weergaven worden automatisch vernieuwd door het systeem wanneer gegevens in de basistabel worden bijgewerkt.

    In 2019 kondigde Microsoft aan dat Azure Synapse gerealiseerde weergaven ondersteunt met dezelfde functionaliteit als in Oracle. Gerealiseerde weergaven zijn nu een preview-functie in Azure Synapse.

  • In-databasetriggers: in Oracle kan een trigger zo worden geconfigureerd dat deze automatisch wordt uitgevoerd wanneer er een triggergebeurtenis optreedt. Het activeren van gebeurtenissen kan het volgende zijn:

    • Een DML-instructie (Data Manipulat Language), zoals INSERT, UPDATEof DELETE, wordt uitgevoerd op een tabel. Als u een trigger hebt gedefinieerd die wordt geactiveerd vóór een INSERT instructie in een klanttabel, wordt de trigger eenmaal geactiveerd voordat een nieuwe rij in de klanttabel wordt ingevoegd.

    • Een DDL-instructie, zoals CREATE of ALTER, wordt uitgevoerd. Deze trigger wordt vaak gebruikt voor controledoeleinden om schemawijzigingen vast te leggen.

    • Een systeem gebeurtenis, zoals opstarten of afsluiten van de Oracle-database.

    • Een gebruikersgebeurtenis, zoals aanmelden of afmelden.

    U kunt een lijst ophalen met de triggers die zijn gedefinieerd in een Oracle-database door een query uit te voeren op de ALL_TRIGGERS, DBA_TRIGGERSof USER_TRIGGERS weergaven. In de volgende schermopname ziet u een DBA_TRIGGERS query in Oracle SQL Developer.

    Schermopname die laat zien hoe u een query kunt uitvoeren op een lijst met triggers in Oracle SQL Developer.

    Azure Synapse biedt geen ondersteuning voor Oracle-databasetriggers. U kunt echter equivalente functionaliteit toevoegen met behulp van Data Factory, maar hiervoor moet u de processen die gebruikmaken van triggers herstructureren.

  • Synoniemen: Oracle ondersteunt het definiëren van synoniemen als alternatieve namen voor verschillende databaseobjecttypen. Deze objecttypen zijn onder andere: tabellen, weergaven, reeksen, procedures, opgeslagen functies, pakketten, gerealiseerde weergaven, Java-klasseschemaobjecten, door de gebruiker gedefinieerde objecten of een ander synoniem.

    Azure Synapse biedt momenteel geen ondersteuning voor het definiëren van synoniemen, maar als een synoniem in Oracle verwijst naar een tabel of weergave, kunt u een weergave in Azure Synapse definiëren die overeenkomt met de alternatieve naam. Als een synoniem in Oracle verwijst naar een functie of opgeslagen procedure, kunt u in Azure Synapse een andere functie of opgeslagen procedure maken, met een naam die overeenkomt met het synoniem, waarmee het doel wordt aangeroepen.

  • Door de gebruiker gedefinieerde typen: Oracle ondersteunt door de gebruiker gedefinieerde objecten die een reeks afzonderlijke velden kunnen bevatten, elk met hun eigen definitie en standaardwaarden. Deze objecten kunnen op dezelfde manier worden verwezen binnen een tabeldefinitie als ingebouwde gegevenstypen zoals NUMBER of VARCHAR. U kunt een lijst met door de gebruiker gedefinieerde typen in een Oracle-database ophalen door een query uit te voeren op de ALL_TYPES, DBA_TYPESof USER_TYPES weergaven.

    Azure Synapse biedt momenteel geen ondersteuning voor door de gebruiker gedefinieerde typen. Als de gegevens die u wilt migreren, door de gebruiker gedefinieerde gegevenstypen bevatten, 'platmaken' ze in een conventionele tabeldefinitie of als ze matrices van gegevens zijn, normaliseren ze in een afzonderlijke tabel.

Toewijzing van Oracle-gegevenstypen

De meeste Oracle-gegevenstypen hebben een direct equivalent in Azure Synapse. In de volgende tabel ziet u de aanbevolen benadering voor het toewijzen van Oracle-gegevenstypen aan Azure Synapse.

Oracle-gegevenstype Azure Synapse-gegevenstype
BFILE Wordt niet ondersteund. Wijs toe aan VARBINARY (MAX).
BINARY_FLOAT Wordt niet ondersteund. Toewijzen aan FLOAT.
BINARY_DOUBLE Wordt niet ondersteund. Wijs toe aan DOUBLE.
BLOB Niet rechtstreeks ondersteund. Vervang door VARBINARY(MAX).
VERKOLEN VERKOLEN
CLOB Niet rechtstreeks ondersteund. Vervang door VARCHAR(MAX).
DATUM DATE in Oracle kan ook tijdgegevens bevatten. Afhankelijk van de gebruikstoewijzing naar DATE of TIMESTAMP.
DECIMAL DECIMAL
DOUBLE PRECISIE DOUBLE
FLOAT FLOAT
GEHEEL GETAL INT
INTERVALJAAR TOT MAAND INTERVAL-gegevenstypen worden niet ondersteund. Gebruik datumvergelijkingsfuncties, zoals DATEDIFF of DATEADD, voor datumberekeningen.
INTERVALDAG TOT SECONDE INTERVAL-gegevenstypen worden niet ondersteund. Gebruik datumvergelijkingsfuncties, zoals DATEDIFF of DATEADD, voor datumberekeningen.
LANG Wordt niet ondersteund. Wijs toe aan VARCHAR(MAX).
LONG RAW Wordt niet ondersteund. Wijs toe aan VARBINARY(MAX).
NCHAR NCHAR
NVARCHAR2 NVARCHAR
NUMMER FLOAT
NCLOB Niet rechtstreeks ondersteund. Vervang door NVARCHAR(MAX).
NUMERIEK NUMERIEK
ORD-mediagegevenstypen Niet ondersteund
RAUW Wordt niet ondersteund. Wijs toe aan VARBINARY.
WERKELIJK WERKELIJK
ROWID Wordt niet ondersteund. Toewijzen aan GUID, wat vergelijkbaar is.
Georuimtelijke SDO-gegevenstypen Niet ondersteund
SMALLINT SMALLINT
TIMESTAMP DATETIME2 of de functie CURRENT_TIMESTAMP()
TIJDSTEMPEL MET LOKALE TIJDZONE Wordt niet ondersteund. Toewijzen aan DATETIMEOFFSET.
TIJDSTEMPEL MET TIJDZONE Niet ondersteund omdat TIME wordt opgeslagen met behulp van wandkloktijd zonder tijdzone-offset.
URIType Wordt niet ondersteund. Opslaan in een VARCHAR.
UROWID Wordt niet ondersteund. Toewijzen aan GUID, wat vergelijkbaar is.
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLType Wordt niet ondersteund. SLA XML-gegevens op in een VARCHAR.

Oracle biedt ook ondersteuning voor het definiëren van door de gebruiker gedefinieerde objecten die een reeks afzonderlijke velden kunnen bevatten, elk met hun eigen definitie en standaardwaarden. Deze objecten kunnen vervolgens op dezelfde manier worden verwezen binnen een tabeldefinitie als ingebouwde gegevenstypen, zoals NUMBER of VARCHAR. Azure Synapse biedt momenteel geen ondersteuning voor door de gebruiker gedefinieerde typen. Als de gegevens die u wilt migreren, door de gebruiker gedefinieerde gegevenstypen bevatten, 'platmaken' ze in een conventionele tabeldefinitie of als ze matrices van gegevens zijn, normaliseren ze in een afzonderlijke tabel.

Tip

Beoordeel het aantal en het type niet-ondersteunde gegevenstypen tijdens de migratievoorbereidingsfase.

Externe leveranciers bieden hulpprogramma's en services voor het automatiseren van migratie, met inbegrip van de toewijzing van gegevenstypen. Als een ETL-hulpprogramma van derden al in gebruik is in de Oracle-omgeving , gebruikt u dat hulpprogramma om vereiste gegevenstransformaties te implementeren.

Verschillen in SQL DML-syntaxis

Verschillen in SQL DML-syntaxis bestaan tussen Oracle SQL en Azure Synapse T-SQL. Deze verschillen worden uitgebreid besproken in SQL-problemen minimaliseren voor Oracle-migraties. In sommige gevallen kunt u DML-migratie automatiseren met behulp van Microsoft-hulpprogramma's zoals SSMA voor Oracle en Azure Database Migration Services of migratieproducten en -services van derden .

Functies, opgeslagen procedures en reeksen

Wanneer u een datawarehouse migreert vanuit een volwassen omgeving zoals Oracle, moet u waarschijnlijk andere elementen dan eenvoudige tabellen en weergaven migreren. Controleer of hulpprogramma's in de Azure-omgeving de functionaliteit van functies, opgeslagen procedures en reeksen kunnen vervangen, omdat het meestal efficiënter is om ingebouwde Azure-hulpprogramma's te gebruiken dan om ze opnieuw te coderen voor Azure Synapse.

Als onderdeel van de voorbereidingsfase maakt u een inventaris van objecten die moeten worden gemigreerd, definieert u een methode voor het afhandelen ervan en wijst u de juiste resources toe aan uw migratieplan.

Microsoft-hulpprogramma's zoals SSMA voor Oracle en Azure Database Migration Services of migratieproducten en -services van derden kunnen de migratie van functies, opgeslagen procedures en reeksen automatiseren.

In de volgende secties worden de migratie van functies, opgeslagen procedures en reeksen verder besproken.

Functions

Net als bij de meeste databaseproducten ondersteunt Oracle systeem- en door de gebruiker gedefinieerde functies binnen een SQL-implementatie. Wanneer u een verouderd databaseplatform migreert naar Azure Synapse, kunnen algemene systeemfuncties meestal zonder wijzigingen worden gemigreerd. Sommige systeemfuncties hebben mogelijk een iets andere syntaxis, maar alle vereiste wijzigingen kunnen worden geautomatiseerd. U kunt een lijst met functies in een Oracle-database ophalen door een query uit te voeren op de ALL_OBJECTS weergave met de juiste WHERE component. U kunt Oracle SQL Developer gebruiken om een lijst met functies op te halen, zoals wordt weergegeven in de volgende schermopname.

Schermopname die laat zien hoe u een query kunt uitvoeren op een lijst met functies in Oracle SQL Developer.

Voor Oracle-systeemfuncties of willekeurige door de gebruiker gedefinieerde functies die geen equivalent in Azure Synapse hebben, codeert u deze functies opnieuw met behulp van een doelomgevingstaal. Door de gebruiker gedefinieerde Oracle-functies worden gecodeerd in PL/SQL, Java of C. Azure Synapse maakt gebruik van de Transact-SQL-taal om door de gebruiker gedefinieerde functies te implementeren.

Opgeslagen procedures

De meeste moderne databaseproducten ondersteunen het opslaan van procedures in de database. Oracle biedt hiervoor de PL/SQL-taal. Een opgeslagen procedure bevat doorgaans zowel SQL-instructies als procedurelogica en retourneert gegevens of een status. U kunt een lijst met opgeslagen procedures in een Oracle-database ophalen door een query uit te voeren op de ALL_OBJECTS weergave met de juiste WHERE component. U kunt Oracle SQL Developer gebruiken om een lijst met opgeslagen procedures op te halen, zoals wordt weergegeven in de volgende schermopname.

Schermopname die laat zien hoe u een query kunt uitvoeren op een lijst met opgeslagen procedures in Oracle SQL Developer.

Azure Synapse ondersteunt opgeslagen procedures met behulp van T-SQL, dus u moet alle gemigreerde opgeslagen procedures in die taal opnieuw coderen.

Reeksen

In Oracle is een reeks een benoemd databaseobject, gemaakt met behulp van CREATE SEQUENCE. Een reeks biedt unieke numerieke waarden via de CURRVAL en NEXTVAL methoden. U kunt de gegenereerde unieke getallen gebruiken als surrogaatsleutelwaarden voor primaire sleutels.

Azure Synapse implementeert CREATE SEQUENCEniet, maar u kunt reeksen implementeren met behulp van IDENTITY-kolommen of SQL-code waarmee het volgende reeksnummer in een reeks wordt gegenereerd.

Metagegevens en gegevens extraheren uit een Oracle-omgeving

Gegevensdefinitietaal genereren

De ANSI SQL-standaard definieert de basissyntaxis voor DDL-opdrachten (Data Definition Language). Sommige DDL-opdrachten, zoals CREATE TABLE en CREATE VIEW, zijn gebruikelijk voor zowel Oracle als Azure Synapse, maar bieden ook implementatiespecifieke functies, zoals indexering, tabeldistributie en partitioneringsopties.

U kunt bestaande Oracle CREATE TABLE en CREATE VIEW scripts bewerken om gelijkwaardige definities te bereiken in Azure Synapse. Hiervoor moet u mogelijk gewijzigde gegevenstypen gebruiken en Oracle-specifieke componenten TABLESPACEzoals .

In de Oracle-omgeving geven systeemcatalogustabellen de huidige tabel en weergavedefinitie op. In tegenstelling tot door de gebruiker onderhouden documentatie is systeemcatalogusinformatie altijd volledig en synchroon met de huidige tabeldefinities. U hebt toegang tot informatie over de systeemcatalogus met behulp van hulpprogramma's zoals Oracle SQL Developer. Oracle SQL Developer kan DDL-instructies genereren CREATE TABLE die u kunt bewerken om gelijkwaardige tabellen te maken in Azure Synapse.

U kunt ook SSMA voor Oracle gebruiken om tabellen te migreren van een bestaande Oracle-omgeving naar Azure Synapse. SSMA voor Oracle past de juiste toewijzingen van gegevenstypen en aanbevolen tabel- en distributietypen toe, zoals wordt weergegeven in de volgende schermopname.

Schermopname die laat zien hoe u tabellen migreert van en een bestaande Oracle-omgeving naar Azure Synapse met behulp van SQL Server Migration Assistant voor Oracle.

U kunt ook migratieprogramma's van derden en ETL-hulpprogramma's gebruiken waarmee systeemcatalogusgegevens worden verwerkt om vergelijkbare resultaten te bereiken.

Gegevensextractie van Oracle

U kunt onbewerkte tabelgegevens uit Oracle-tabellen extraheren naar platte bestanden, zoals CSV-bestanden, met behulp van standaard Oracle-hulpprogramma's zoals Oracle SQL Developer, SQL*Plus en SCLcl. Vervolgens kunt u de plat gescheiden bestanden comprimeren met behulp van gzip en de gecomprimeerde bestanden uploaden naar Azure Blob Storage met behulp van AzCopy of Azure-hulpprogramma's voor gegevenstransport, zoals Azure Data Box.

Tabelgegevens zo efficiënt mogelijk extraheren, met name bij het migreren van grote feitentabellen. Voor Oracle-tabellen gebruikt u parallelle uitvoering om de extractiedoorvoer te maximaliseren. U kunt parallellisme bereiken door meerdere processen uit te voeren waarmee afzonderlijke segmenten van gegevens afzonderlijk worden geëxtraheerd of door hulpprogramma's te gebruiken waarmee parallelle extractie kan worden geautomatiseerd via partitionering.

Tip

Parallelle uitvoering gebruiken voor de meest efficiënte gegevensextractie.

Als er voldoende netwerkbandbreedte beschikbaar is, kunt u gegevens uit een on-premises Oracle-systeem rechtstreeks extraheren naar Azure Synapse-tabellen of Azure Blob Data Storage. Hiervoor gebruikt u Data Factory-processen, Azure Database Migration Service of gegevensmigratie van derden of ETL-producten.

Geëxtraheerde gegevensbestanden moeten tekstbestanden met scheidingstekens bevatten in CSV-, geoptimaliseerde rijkolommen (ORC) of Parquet-indeling.

Zie Gegevensmigratie, ETL en belasting voor Oracle-migraties voor Oracle-migraties voor meer informatie over het migreren van gegevens en ETL vanuit een Oracle-omgeving.

Prestatieaanvelingen voor Oracle-migraties

Het doel van prestatieoptimalisatie is dezelfde of betere prestaties van het datawarehouse na de migratie naar Azure Synapse.

Overeenkomsten in concepten voor het afstemmen van prestaties

Veel concepten voor het afstemmen van prestaties voor Oracle-databases zijn waar voor Azure Synapse-databases. Voorbeeld:

  • Gebruik gegevensdistributie om gegevens samen te vouwen op hetzelfde verwerkingsknooppunt.

  • Gebruik het kleinste gegevenstype voor een bepaalde kolom om opslagruimte te besparen en queryverwerking te versnellen.

  • Zorg ervoor dat kolommen die moeten worden samengevoegd hetzelfde gegevenstype hebben om de joinverwerking te optimaliseren en de noodzaak voor gegevenstransformaties te verminderen.

  • Zorg ervoor dat statistieken up-to-date zijn om de optimizer te helpen bij het produceren van het beste uitvoeringsplan.

  • Bewaak de prestaties met behulp van ingebouwde databasemogelijkheden om ervoor te zorgen dat resources efficiënt worden gebruikt.

Tip

Geef aan het begin van een migratie prioriteit aan bekendheid met azure Synapse-afstemmingsopties.

Verschillen in de benadering voor het afstemmen van prestaties

In deze sectie worden de verschillen tussen de implementatie van prestaties op laag niveau tussen Oracle en Azure Synapse gemarkeerd.

Opties voor gegevensdistributie

Voor prestaties is Azure Synapse ontworpen met architectuur met meerdere knooppunten en wordt parallelle verwerking gebruikt. Als u de tabelprestaties in Azure Synapse wilt optimaliseren, kunt u een optie voor gegevensdistributie definiëren in CREATE TABLE instructies met behulp van de DISTRIBUTION instructie. U kunt bijvoorbeeld een door hash gedistribueerde tabel opgeven, waarmee tabelrijen over rekenknooppunten worden verdeeld met behulp van een deterministische hash-functie. Veel Oracle-implementaties, met name oudere on-premises systemen, bieden geen ondersteuning voor deze functie.

In tegenstelling tot Oracle ondersteunt Azure Synapse lokale joins tussen een kleine tabel en een grote tabel via kleine tabelreplicatie. Denk bijvoorbeeld aan een kleine dimensietabel en een grote feitentabel binnen een stervormig schemamodel. Azure Synapse kan de kleinere dimensietabel repliceren op alle knooppunten om ervoor te zorgen dat de waarde van een joinsleutel voor de grote tabel een overeenkomende, lokaal beschikbare dimensierij heeft. De overhead van dimensietabelreplicatie is relatief laag voor een kleine dimensietabel. Voor grote dimensietabellen is een hashdistributiebenadering geschikter. Zie Ontwerprichtlijnen voor het gebruik van gerepliceerde tabellen en richtlijnen voor het ontwerpen van gedistribueerde tabellen voor meer informatie over opties voor gegevensdistributie.

Tip

Hash-distributie verbetert de queryprestaties voor grote feitentabellen. Round robin-distributie is handig voor het verbeteren van de laadsnelheid.

Hash-distributie kan worden toegepast op meerdere kolommen voor een meer gelijkmatige distributie van de basistabel. Met distributie met meerdere kolommen kunt u maximaal acht kolommen kiezen voor distributie. Dit vermindert niet alleen de scheeftrekken van gegevens in de loop van de tijd, maar verbetert ook de queryprestaties.

Notitie

Distributie met meerdere kolommen is momenteel in preview voor Azure Synapse Analytics. U kunt distributie met meerdere kolommen gebruiken met CREATE MATERIALIZED VIEW, CREATE TABLE en CREATE TABLE AS SELECT.

Distributieadviseur

In Azure Synapse SQL kan de manier waarop elke tabel wordt gedistribueerd, worden aangepast. De tabeldistributiestrategie is van invloed op queryprestaties aanzienlijk.

De distributieadviseur is een nieuwe functie in Synapse SQL die query's analyseert en de beste distributiestrategieën voor tabellen aanbeveelt om de queryprestaties te verbeteren. Query's die door de adviseur moeten worden overwogen, kunnen door u worden verstrekt of opgehaald uit uw historische query's die beschikbaar zijn in DMV.

Ga naar Distribution Advisor in Azure Synapse SQL voor meer informatie en voorbeelden over het gebruik van de distributieadviseur.

Gegevensindexering

Azure Synapse ondersteunt verschillende door de gebruiker gedefinieerde indexeringsopties die een andere bewerking en een ander gebruik hebben in vergelijking met door het systeem beheerde zonetoewijzingen in Oracle. Zie Indexen voor toegewezen SQL-pooltabellen voor meer informatie over de verschillende indexeringsopties in Azure Synapse.

Indexdefinities in een Oracle-bronomgeving bieden een nuttige indicatie van het gegevensgebruik en de kandidaatkolommen voor indexering in de Azure Synapse-omgeving. Normaal gesproken hoeft u niet elke index te migreren vanuit een verouderde Oracle-omgeving, omdat Azure Synapse niet te veel afhankelijk is van indexen en de volgende functies implementeert om uitstekende prestaties te bereiken:

  • Parallelle queryverwerking.

  • Cacheopslag van gegevens en resultatensets in het geheugen.

  • Gegevensdistributie, zoals replicatie van tabellen met kleine dimensies, om I/O te verminderen.

Gegevenspartitionering

In een datawarehouse voor ondernemingen kunnen feitentabellen miljarden rijen bevatten. Partitionering optimaliseert het onderhoud en het opvragen van deze tabellen door ze op te splitsen in afzonderlijke onderdelen om de hoeveelheid verwerkte gegevens te verminderen. In Azure Synapse definieert de CREATE TABLE instructie de partitioneringsspecificatie voor een tabel.

U kunt slechts één veld per tabel gebruiken voor partitionering. Dat veld is vaak een datumveld omdat veel query's worden gefilterd op datum of een datumbereik. Het is mogelijk om na de eerste belasting de partitionering van een tabel te wijzigen met behulp van de CREATE TABLE AS instructie (CTAS) om de tabel opnieuw te maken met een nieuwe distributie. Zie Partitioneringstabellen in een toegewezen SQL-pool voor een gedetailleerde bespreking van partitionering in Azure Synapse.

PolyBase of COPY INTO voor het laden van gegevens

PolyBase ondersteunt het efficiënt laden van grote hoeveelheden gegevens naar een datawarehouse met behulp van parallelle laadstromen. Zie De polybase-strategie voor het laden van gegevens voor meer informatie.

COPY INTO biedt ook ondersteuning voor gegevensopname met hoge doorvoer en:

  • Gegevens ophalen uit alle bestanden in een map en submappen.
  • Gegevens ophalen vanaf meerdere locaties in hetzelfde opslagaccount. U kunt meerdere locaties opgeven met door komma's gescheiden paden.
  • Azure Data Lake Storage (ADLS) en Azure Blob Storage.
  • CSV-, PARQUET- en ORC-bestandsindelingen.

Tip

De aanbevolen methode voor het laden van gegevens is om samen met de PARQUET-bestandsindeling te gebruiken COPY INTO .

Werklastbeheer

Het uitvoeren van gemengde workloads kan problemen met resources opleveren voor drukke systemen. Een succesvol workloadbeheerschema beheert resources effectief, zorgt voor een zeer efficiënt resourcegebruik en maximaliseert het rendement op investeringen (ROI). Workloadclassificatie, workloadbelang en isolatie van werkbelastingen geven meer controle over hoe werkbelasting systeembronnen gebruikt.

In de handleiding voor workloadbeheer worden de technieken beschreven voor het analyseren van de workload, het beheren en bewaken van het belang van de werkbelasting en de stappen voor het converteren van een resourceklasse naar een workloadgroep. Gebruik de Azure-portal en T-SQL-query's op DMV's om de workload te bewaken om ervoor te zorgen dat de toepasselijke resources efficiënt worden gebruikt.

Volgende stappen

Zie het volgende artikel in deze reeks: Gegevensmigratie, ETL en laden voor Oracle-migraties voor meer informatie over ETL en belasting voor Oracle-migraties.