Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel biedt een overzicht van de bekende beperkingen, niet-ondersteunde objecten en migratieoverwegingen wanneer u in Visual Studio Code de functie voor schemaconversie van Oracle naar Azure Database for PostgreSQL gebruikt.
Beperkingen voor platformondersteuning
- ARM64: niet ondersteund op Windows of Linux.
Niet-ondersteunde en gedeeltelijk ondersteunde objecten
De volgende secties bevatten Oracle-objecten die het hulpprogramma niet converteert of die worden geconverteerd met een gedragsverschil dat u moet verwerken. Objecten die op schone wijze worden geconverteerd, worden hier niet vermeld.
Deze tabellen beschrijven het typische resultaat voor elke objectklasse. Een afzonderlijk object kan nog steeds aandacht vereisen wanneer er een constructie wordt gebruikt die niet wordt geconverteerd, zoals een functie die een Java routine aanroept, zodat het rapport per object van uw eigen conversieuitvoering gezaghebbend is voor uw schema.
Oracle-systeem en ingebouwde schema's worden niet geëxtraheerd of geconverteerd. Dit omvat schema's zoals SYS, SYSTEM, XDB, MDSYS, , en CTXSYSWMSYS.
Note
Objecten die door het hulpprogramma worden geëxtraheerd, maar niet volledig kunnen worden geconverteerd, worden als controletaken toegevoegd aan het schemaconversierapport. U kunt deze taken handmatig of met hulp bij de Copilot-agent modus van GitHub oplossen.
Uitvoer van tijdelijke aanduiding
Wanneer het hulpprogramma geen werkende conversie voor een object kan produceren, wordt er best effort of tijdelijke aanduiding voor DDL verzonden in plaats van het object te verwijderen. De tijdelijke aanduiding behoudt de naam en handtekening van het origineel, zodat objecten die afhankelijk zijn van het nog steeds converteren en implementeren. Met deze methode voorkomt u dat een klein aantal probleemobjecten de rest van het schema blokkeert.
Een tijdelijke aanduiding is niet functioneel. Het schemaconversierapport markeert elk object dat er een ontvangt als nodig is voordat u implementeert. Objecten die afhankelijk zijn van een tijdelijke aanduiding, kunnen ook worden teruggehouden vanuit het gegenereerde implementatiescript, zodat één niet-aangepaste routine van invloed kan zijn op verschillende andere objecten.
De meest voorkomende oorzaken zijn:
- Autonome transacties. Routines die worden gebruikt
PRAGMA AUTONOMOUS_TRANSACTION, zijn de grootste enkele oorzaak. De conversie routeert het autonome werk doordblink, dus alsdblinkdeze routines niet op het doel zijn geïnstalleerd wanneer u converteert, vallen deze routines terug op de uitvoer van tijdelijke aanduidingen. Routines waarvan de hoofdtekst niet eenvoudigINSERTis gevolgd doorCOMMIT, of die een uitzonderingshandler of eenMERGEinstructie bevatten, moeten ook handmatig worden gecontroleerd. - Een verwijzing naar het hulpprogramma kan niet worden omgezet. Een object dat verwijst naar een ander object dat het hulpprogramma niet heeft geconverteerd of die in een andere werkeenheid is geconverteerd, kan niet worden gecompileerd.
- Instructies voor transactiebeheer. Constructies zoals
ROLLBACK TO SAVEPOINTniet altijd schoon converteren. - Verpakte PL/SQL. Deze produceren altijd een tijdelijke aanduiding. Zie Wrapped PL/SQL voor meer informatie.
Programmeerbare objecten
| Objectsoort | Beperking | Wat moet u doen? |
|---|---|---|
| Hoofdtekst van pakket | Pakketstatus wordt toegewezen aan PostgreSQL-sessievariabelen, zodat de status die zich blijft voordoen bij aanroepen, zich niet hetzelfde gedraagt als een Oracle-pakketexemplaren. | Test of de gedeelde status zich gedraagt zoals uw toepassing verwacht. |
Routine die gebruikmaakt van PRAGMA AUTONOMOUS_TRANSACTION |
Het autonome werk wordt uitgevoerd op een afzonderlijke verbinding via dblink, zodat het onafhankelijk van de beller wordt doorgevoerd en niet wordt teruggedraaid als de beller mislukt. Verschillende vormen voor hoofdteksten moeten handmatig worden beoordeeld. |
Installeer dblink deze voordat u converteert en controleer vervolgens elke routine om te bevestigen dat dit verschil acceptabel is. |
| Trigger (systeem gebeurtenis) | Het hulpprogramma herkent alleen LOGON en LOGOFF als subtypen voor systeemgebeurtenissen.
STARTUP, SHUTDOWNen SERVERERROR triggers worden niet geclassificeerd als systeemgebeurtenistriggers, zodat ze kunnen worden doorgegeven aan conversie en uitvoer kunnen produceren die niet werkt op PostgreSQL. |
Controleer de bron voor deze triggers en stel de logica buiten de database opnieuw in. |
| Trigger (cross-edition) | Redefinition op basis van edities wordt niet gedetecteerd. Een trigger voor meerdere edities wordt geconverteerd naar een gewone trigger, zodat deze voor elke sessie wordt geactiveerd in plaats van alleen voor gegevensmanipulatie die door edities wordt gekruist. | Converteer één editie en verwerkt de versie-implementatie in uw releaseproces. |
| Hoofdtekst typen | Niet geëxtraheerd. | Objecttypemethoden opnieuw invoeren als PostgreSQL-functies. |
| Java bron, Java opgeslagen procedure en Java klasse | Niet geëxtraheerd. Azure Database for PostgreSQL flexibele server kan geen Java uitvoeren in de database. | Herschrijf de logica in PL/pgSQL of verplaats deze naar de toepassingslaag. |
Externe C-bibliotheek (CREATE LIBRARY) |
Niet geëxtraheerd. | Herschrijf de logica in PL/pgSQL of verplaats deze naar de toepassingslaag. |
| Verpakte PL/SQL | De hoofdtekst kan niet worden gelezen, dus er wordt alleen een tijdelijke aanduiding geproduceerd. Zie Wrapped PL/SQL voor meer informatie. | Geef de oorspronkelijke uitgepakte bron op en converteer opnieuw. |
Verpakte PL/SQL
Het hulpprogramma kan de bron van PL/SQL-eenheden die zijn opgeslagen in verpakte (verborgen) vorm niet lezen met behulp van het Oracle-hulpprogramma wrap of DBMS_DDL.WRAP. Het hulpprogramma detecteert deze eenheden, leest de handtekeningmetagegevens uit de Oracle-gegevenswoordenlijst en genereert een PostgreSQL-routine met dezelfde naam en handtekening en een hoofdtekst die een fout genereert wanneer deze wordt aangeroepen.
Met deze tijdelijke aanduiding kunnen objecten die afhankelijk zijn van de verpakte eenheid converteren en implementeren. De gegenereerde routine bevat geen logica en het schemaconversierapport bevat elk verpakt object als een beoordelingstaak die u moet oplossen voordat u live gaat.
Als u een verpakte eenheid correct wilt converteren, geeft u de oorspronkelijke uitgepakte bron op en voert u de conversie opnieuw uit.
Gegevens- en opslagobjecten
| Objectsoort | Beperking | Wat moet u doen? |
|---|---|---|
Door de gebruiker gedefinieerde operator (CREATE OPERATOR) |
Conversie is niet gegarandeerd en kan tijdelijke aanduidingen produceren. | Controleer de gegenereerde operator en test deze. |
| Index (bitmap, bitmapdeelname, globaal gepartitioneerd of domein) | Niet geëxtraheerd. PostgreSQL gebruikt geen Oracle-bitmap- of domeinindexen. | Er is meestal geen functionele actie. Prestatiegevoelige query's afstemmen op het doel. |
Gerealiseerd weergavelogboek (MLOG$) |
Niet geëxtraheerd. | Niets. Dit zijn Oracle-vernieuwingsobjecten die PostgreSQL niet nodig heeft. |
| Externe tabel | Niet geëxtraheerd. Azure Database for PostgreSQL flexibele server geen toegang heeft tot het bestandssysteem van de server, dus file_fdw is niet beschikbaar. |
Laad het bestand in een tabel met een clientzijde \copy of COPY ... FROM STDIN, met de azure_storage extensie of via uw toepassing. |
| AQ-tabel (Advanced Queuing) | Niet geëxtraheerd. Oracle Advanced Queuing bevat toepassingslogica. | Ontwerp het opnieuw met een toepassingswachtrij, een PostgreSQL-extensie of een Azure messaging-service. |
| Blockchain-tabel | Niet geëxtraheerd. | De integriteitsvereiste in de toepassingslaag opnieuw instellen. |
| Cluster- en hashcluster | Niet geëxtraheerd. | Maak opnieuw als een gewone of gepartitioneerde tabel. |
Mapobject (CREATE DIRECTORY) |
Niet geëxtraheerd. | Bestandstoegang verwerken in de toepassingslaag. |
Door de gebruiker gedefinieerd indextype (CREATE INDEXTYPE) |
Niet geëxtraheerd. | Maak de toegangsmethode opnieuw met een PostgreSQL-extensieindex waar deze bestaat. |
| Databasekoppeling | Niet geconverteerd. Zie Databasekoppelingen voor meer informatie. | Maak opnieuw met een refererende gegevenswikkelaar. |
Toepassingscontext (CREATE CONTEXT, DBMS_SESSION.SET_CONTEXT) |
Niet geëxtraheerd. | Wijs de context toe aan PostgreSQL-sessie-instellingen en lees ze met current_setting(). |
| Analytische weergave, kenmerkdimensie, hiërarchie, OLAP-dimensie, gegevensanalysemodel en gerealiseerde zonekaart | Niet geëxtraheerd. Deze hebben geen PostgreSQL-doel. | Bouw de vereiste uitvoer opnieuw als weergaven of functies of zet ze neer. |
LOB-opslagcomponent, geregistreerd XML-schema (DBMS_XMLSCHEMA.REGISTERSCHEMA) en xml-schemagebonden index |
Niet geëxtraheerd. | De opslag- of validatievereiste voor het doel opnieuw modelleren. |
| Resource Manager plan en consumentengroep, SQL-profiel, SQL-planbasislijn, editie, SQL-vertaalprofiel, beleid voor informatielevenscyclusbeheer, vergrendelingsprofiel en Workspace Manager-object | Niet geëxtraheerd. Dit zijn Oracle-exemplaren, optimizer- of levenscyclusartefacten die buiten het bereik vallen. | Maak ze opnieuw op de toepassings- of infrastructuurlaag of zet ze neer op Azure Database for PostgreSQL. |
Databasekoppelingen
Het hulpprogramma converteert niet automatisch privé- en openbare databasekoppelingen (CREATE DATABASE LINK, CREATE PUBLIC DATABASE LINK). Databasekoppelingen slaan referenties en externe eindpuntgegevens op die niet rechtstreeks naar PostgreSQL worden vertaald.
Maak deze koppelingen opnieuw op het doel met behulp van een postgreSQL-wrapper voor refererende gegevens, zoals postgres_fdw of oracle_fdw, of herstructureer deze naar verbindingen op toepassingsniveau. Zoek in uw Oracle-bron naar @link verwijzingen, zodat u elke afhankelijkheid vindt, inclusief verwijzingen in synoniemen en weergaven.
Beveiligings- en identiteitsobjecten
Gebruikers, rollen, bevoegdheden en beleidsregels voor gegevensbescherming zijn de grootste kloof in de conversie. Het hulpprogramma converteert schemaobjecten, niet de beveiligingslaag eromheen. Behandel dit gebied als een afzonderlijke handmatige werkstroom en plan het vanuit uw Oracle-broninventaris in plaats van uit het schemaconversierapport.
| Objectsoort | Beperking | Wat moet u doen? |
|---|---|---|
| User | Niet geëxtraheerd. | Richt aanmeldingen afzonderlijk in op Azure. Maak elke gebruiker opnieuw als postgreSQL-rol en valideer de resulterende toegang voordat u live gaat. |
| Rol | Niet geëxtraheerd. | Maak elke rol opnieuw op het doel. |
| Systeembevoegdheden | Niet geëxtraheerd. | Maak opnieuw als PostgreSQL-instructies GRANT . |
| Rollidmaatschap | Niet geëxtraheerd. | Opnieuw maken als GRANT <role> TO <role> instructies. |
| Objectprivilegiatie en toekenning | Toekenningsextractie is standaard uitgeschakeld en dekt alleen objecttoekennden. | Maak verleent opnieuw op basis van uw broninventaris en valideer deze. |
Beveiliging op rijniveau en virtuele privédatabase (DBMS_RLS) |
Niet geconverteerd. | Maak het beleid opnieuw als PostgreSQL-beveiligingsbeleid op rijniveau. |
| Oracle-labelbeveiliging | Niet geconverteerd. | Ontwerp de grenzen voor gegevenstoegang op het doel opnieuw. |
Gegevens redaction (DBMS_REDACT) |
Niet geconverteerd. | Maskering opnieuw toepassen op het doel, in de toepassingslaag of met een PostgreSQL-equivalent. |
Profiel, wachtwoordbeleid en geïntegreerd of fijnmazig controlebeleid (DBMS_FGA, AUDIT POLICY) |
Niet geëxtraheerd. | Configureer de equivalente Azure serverparameters en -controle en beheer ze als infrastructuur als code. |
Important
Het hulpprogramma draagt geen beveiliging op rijniveau, virtuele privédatabase, Oracle Label Security en beleid voor het redaction van gegevens over. Een geconverteerd schema implementeert en retourneert gegevens zonder deze, zodat rijen die door Oracle zijn gefilterd zichtbaar zijn en kolommen die Door Oracle worden gemaskeerd, worden geretourneerd in duidelijke tekst. Maak deze beleidsregels opnieuw en controleer deze voordat u productieverkeer naar het doel routeert.
Scheduler-objecten
Het hulpprogramma converteert geen Oracle Scheduler-metagegevens naar werkende PostgreSQL-schema's.
| Objectsoort | Beperking | Wat moet u doen? |
|---|---|---|
DBMS_SCHEDULER job en planning |
Niet geconverteerd. | Maak het schema opnieuw op het doel met pg_cronof gebruik een externe planner, zoals Azure Logic Apps of Azure Functions. |
Verouderde DBMS_JOB taak |
Niet gedetecteerd. | Maak de planning opnieuw met pg_cron of een toepassingsplanner. |
| Programma, keten, referentie, file watcher, jobklasse, groep, venster en op gebeurtenissen gebaseerde taak | Niet geconverteerd. | Bouw de indeling opnieuw op in een externe planner. |
Hiaten op functieniveau
De volgende items zijn Oracle-functies in plaats van objecttypen. Het hulpprogramma detecteert deze functies niet of converteert ze op een manier die een deel van het oorspronkelijke gedrag verliest, zodat ze niet altijd worden weergegeven als een beoordelingstaak.
| Feature | Beperking | Wat moet u doen? |
|---|---|---|
| Hybride gepartitioneerde tabel (Oracle 19.3 en hoger) | Converteert als een gewone tabel en de externe partities gaan verloren. | Identificeer hybride gepartitioneerde tabellen in de bron en laad de externe gegevens afzonderlijk. |
| Editieweergave en trigger voor meerdere edities | Redefinition op basis van edities wordt niet gedetecteerd. Een editieweergave wordt geconverteerd als een gewone weergave. | Eén editie converteren en vervolgens de implementatie van de versie handmatig verwerken. |
| Onveranderbare tabel (Oracle 19.11 en hoger) | Niet gedetecteerd en er is geen PostgreSQL-equivalent. | Dwing de vereiste in de toepassingslaag of met triggers af. |
| Flashback-gegevensarchief | Tijdelijke geschiedenis is niet gemodelleerd. | Gebruik een geschiedenistabelpatroon of een tijdelijke extensie op het doel. |
Flashback-query (AS OF TIMESTAMP, AS OF SCN) |
Niet geconverteerd. | Herschrijf query's die historische versies van een rij lezen. |
| Oracle Sharding | Niet gemodelleerd en er is geen PostgreSQL-equivalent met één database. | Ontwerp de distributiestrategie opnieuw. |
BFILE en SecureFile LOB-specifieke gegevens |
Alleen verwerkt als een algemene opmerking over exotische typen. | Controleer het opslag- en toegangspatroon voor elke kolom. |
Identiteitskolommen, virtuele en gegenereerde kolommen, onzichtbare kolommen en globale tijdelijke tabellen worden verwerkt door het conversieprogramma en zijn geen beperkingen. Privé tijdelijke tabellen bestaan alleen tijdens runtime, zodat ze niet worden weergegeven in de broninventaris.
Hulp krijgen
Wanneer u beperkingen ondervindt:
- Use GitHub Copilot-agent mode voor begeleide hulp bij het controleren van taken.
- Raadpleeg de PostgreSQL-documentatie voor alternatieve implementaties.
- Bekijk aanbevolen procedures voor migratiepatronen van Oracle naar Azure Database for PostgreSQL.
- Test in een testomgeving voordat u naar productie implementeert.