Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article récapitule les limitations connues, les objets non pris en charge et les considérations relatives à la migration lors de l’utilisation de la fonctionnalité de conversion de schéma d’Oracle vers Azure Database pour PostgreSQL dans Visual Studio Code.
Limitations de prise en charge de la plateforme
- ARM64 : non pris en charge sur Windows ou Linux.
Objets non pris en charge et partiellement pris en charge
Les sections suivantes répertorient les objets Oracle que l’outil ne convertit pas ou qu’il convertit avec une différence de comportement que vous devez gérer. Les objets qui se convertissent correctement ne sont pas répertoriés ici.
Ces tables décrivent le résultat classique de chaque classe d’objet. Un objet individuel peut toujours avoir besoin d'attention lorsqu'il utilise une construction qui ne se convertit pas, telle qu'une fonction qui appelle une routine de Java, de sorte que le rapport par objet de votre propre exécution de conversion fait autorité pour votre schéma.
Le système Oracle et les schémas intégrés ne sont pas extraits ou convertis. Cela inclut des schémas tels que SYS, , SYSTEM, XDBMDSYS, CTXSYS, et WMSYS.
Note
Les objets extraits par l’outil, mais qui ne peuvent pas être entièrement convertis, sont ajoutés au rapport de conversion de schéma en tant que tâches de révision. Vous pouvez résoudre ces tâches manuellement ou avec l’assistance en mode assistant Copilot GitHub.
Sortie de l’espace réservé
Lorsque l’outil ne peut pas produire de conversion opérationnelle pour un objet, il émet un DDL d’espace réservé ou d’effort optimal au lieu de supprimer l’objet. L’espace réservé conserve le nom et la signature de l’original afin que les objets qui dépendent de celui-ci puissent toujours convertir et déployer. Cette approche empêche un petit nombre d’objets problématiques de bloquer le reste du schéma.
Un espace réservé n’est pas fonctionnel. Le rapport de conversion de schéma signale chaque objet qui en reçoit un tel qu’il est nécessaire de passer en revue avant de déployer. Les objets qui dépendent d’un espace réservé peuvent également être conservés à partir du script de déploiement généré, de sorte qu’une seule routine non convertie peut affecter plusieurs autres objets.
Les causes les plus courantes sont :
- Transactions autonomes. Les routines qui utilisent
PRAGMA AUTONOMOUS_TRANSACTIONsont la cause la plus importante. La conversion route le travail autonome viadblink, donc sidblinkelle n’est pas installée sur la cible lorsque vous convertissez, ces routines reviennent à la sortie de l’espace réservé. Les routines dont le corps n’est pas un simpleINSERTsuiviCOMMIT, ou qui contiennent un gestionnaire d’exceptions ou une instruction, ont également besoin d’uneMERGErévision manuelle. - Une référence que l’outil n’a pas pu résoudre. Un objet qui fait référence à un autre objet que l’outil n’a pas converti, ou qu’il a été converti dans une autre unité de travail, ne peut pas être vérifié par compilation.
- Instructions de contrôle des transactions. Les constructions telles que
ROLLBACK TO SAVEPOINTne sont pas toujours converties correctement. - PL/SQL encapsulé. Ils produisent toujours un espace réservé. Pour plus d’informations, consultez PL/SQL encapsulé.
Objets programmables
| Type d’objet | Limite | Procédure à suivre |
|---|---|---|
| Corps du package | L’état du package est mappé aux variables de session PostgreSQL, de sorte que l’état persistant entre les appels ne se comporte pas comme une instance de package Oracle. | Testez que l’état partagé se comporte comme prévu pour votre application. |
Routine qui utilise PRAGMA AUTONOMOUS_TRANSACTION |
Le travail autonome s’exécute sur une connexion distincte via dblink, de sorte qu’il valide indépendamment de l’appelant et n’est pas restauré en cas d’échec de l’appelant. Plusieurs formes de corps ont besoin d’une révision manuelle. |
Installez avant de convertir, puis passez dblink en revue chaque routine pour vérifier que cette différence est acceptable. |
| Déclencheur (événement système) | L’outil reconnaît uniquement LOGON et LOGOFF en tant que sous-types d’événements système.
STARTUP, SHUTDOWNet SERVERERROR les déclencheurs ne sont pas classés comme des déclencheurs d’événement système. Ils peuvent donc passer en conversion et produire une sortie qui ne fonctionne pas sur PostgreSQL. |
Passez en revue la source de ces déclencheurs et réexédez la logique en dehors de la base de données. |
| Déclencheur (édition croisée) | La redéfinition basée sur l’édition n’est pas détectée. Un déclencheur d’édition croisée se convertit en déclencheur ordinaire, de sorte qu’il se déclenche pour chaque session plutôt que pour la manipulation des données qui croise les éditions. | Convertissez une seule édition et gérez le déploiement de version dans votre processus de mise en production. |
| Corps du type | Non extrait. | Méthodes de type objet Reimplement en tant que fonctions PostgreSQL. |
| Java source, Java procédure stockée et classe Java | Non extrait. Azure Database pour PostgreSQL serveur flexible ne peut pas exécuter Java dans la base de données. | Réécrire la logique dans PL/pgSQL ou la déplacer vers la couche Application. |
Bibliothèque C externe (CREATE LIBRARY) |
Non extrait. | Réécrire la logique dans PL/pgSQL ou la déplacer vers la couche Application. |
| PL/SQL encapsulé | Le corps ne peut pas être lu. Seul un espace réservé est produit. Pour plus d’informations, consultez PL/SQL encapsulé. | Fournissez la source décompressée d’origine et convertissez à nouveau. |
PL/SQL encapsulé
L’outil ne peut pas lire la source d’unités PL/SQL stockées dans un formulaire encapsulé (obfuscated) à l’aide de l’utilitaire Oracle wrap ou DBMS_DDL.WRAP. L’outil détecte ces unités, lit leurs métadonnées de signature à partir du dictionnaire de données Oracle et génère une routine PostgreSQL portant le même nom et la même signature et un corps qui déclenchent une erreur lorsqu’elle est appelée.
Cet espace réservé permet aux objets qui dépendent de l’unité encapsulée de convertir et de déployer. La routine générée ne contient aucune logique et le rapport de conversion de schéma répertorie chaque objet encapsulé sous forme de tâche de révision que vous devez résoudre avant de passer en ligne.
Pour convertir correctement une unité encapsulée, fournissez la source décompressée d’origine et réexécutez la conversion.
Objets de données et de stockage
| Type d’objet | Limite | Procédure à suivre |
|---|---|---|
Opérateur défini par l’utilisateur (CREATE OPERATOR) |
La conversion n’est pas garantie et peut produire une sortie d’espace réservé. | Passez en revue l’opérateur généré et testez-le. |
| Index (bitmap, jointure bitmap, partitionné global ou domaine) | Non extrait. PostgreSQL n’utilise pas d’index de bitmap ou de domaine Oracle. | Il n’y a généralement aucune action fonctionnelle. Paramétrez les requêtes sensibles aux performances sur la cible. |
Journal d’affichage matérialisé (MLOG$) |
Non extrait. | Rien. Il s’agit d’objets de prise en charge de l’actualisation Oracle dont PostgreSQL n’a pas besoin. |
| Table externe | Non extrait. Azure Database pour PostgreSQL serveur flexible n'a pas d'accès au système de fichiers serveur. file_fdw Il n'est donc pas disponible. |
Chargez le fichier dans une table avec un côté \copy client ou COPY ... FROM STDIN, avec l’extension azure_storage ou via votre application. |
| Table De mise en file d’attente avancée (AQ) | Non extrait. Oracle Advanced Queuing porte la logique d’application. | Redéfinissez-le avec une file d’attente d’applications, une extension PostgreSQL ou un service de messagerie Azure. |
| Table de blockchain | Non extrait. | Réexémentez l’exigence d’intégrité dans la couche Application. |
| Cluster et cluster de hachage | Non extrait. | Recréez en tant que table simple ou partitionnée. |
Objet Directory (CREATE DIRECTORY) |
Non extrait. | Gérez l’accès aux fichiers dans la couche Application. |
Type d’index défini par l’utilisateur (CREATE INDEXTYPE) |
Non extrait. | Recréez la méthode d’accès avec un index d’extension PostgreSQL où il en existe un. |
| Lien de base de données | Non converti. Pour plus d’informations, consultez les liens de base de données. | Recréez avec un wrapper de données étrangère. |
Contexte d’application (CREATE CONTEXT, DBMS_SESSION.SET_CONTEXT) |
Non extrait. | Mappez le contexte aux paramètres de session PostgreSQL et lisez-les avec current_setting(). |
| Vue analytique, dimension d’attribut, hiérarchie, dimension OLAP, modèle d’exploration de données et mappage de zone matérialisée | Non extrait. Celles-ci n’ont pas de cible PostgreSQL. | Régénérez la sortie requise en tant que vues ou fonctions, ou supprimez-les. |
Clause de stockage métier, schéma XML inscrit (DBMS_XMLSCHEMA.REGISTERSCHEMA) et index lié au schéma XML |
Non extrait. | Remodelez l’exigence de stockage ou de validation sur la cible. |
| Resource Manager plan et groupe de consommateurs, profil SQL, base de référence du plan SQL, édition, profil de traduction SQL, stratégie de gestion du cycle de vie des informations, profil de verrouillage et objet Workspace Manager | Non extrait. Il s’agit d’artefacts d’instance, d’optimiseur ou de cycle de vie Oracle qui sont hors de portée. | Recréez-les au niveau de la couche application ou de l’infrastructure, ou supprimez-les sur Azure Database pour PostgreSQL. |
Liens de base de données
L’outil ne convertit pas automatiquement les liens de base de données privée et publique (CREATE DATABASE LINK, CREATE PUBLIC DATABASE LINK). Les liens de base de données stockent les informations d’identification et les informations de point de terminaison distantes qui ne se traduisent pas directement en PostgreSQL.
Recréez ces liens sur la cible à l’aide d’un wrapper de données étrangère PostgreSQL tel que postgres_fdw ou oracle_fdw, ou refactoriser les connexions au niveau de l’application. Recherchez dans votre source @link Oracle des références afin que vous trouviez chaque dépendance, y compris les références à l’intérieur des synonymes et des vues.
Objets de sécurité et d’identité
Les utilisateurs, les rôles, les privilèges et les stratégies de protection des données constituent le plus grand écart dans la conversion. L’outil convertit les objets de schéma, et non la couche de sécurité qui les entoure. Traitez cette zone comme un flux de travail manuel distinct et planifiez-le à partir de votre inventaire source Oracle plutôt que du rapport de conversion de schéma.
| Type d’objet | Limite | Procédure à suivre |
|---|---|---|
| Utilisateur | Non extrait. | Provisionnez des connexions séparément sur Azure. Recréez chaque utilisateur en tant que rôle PostgreSQL et validez l’accès obtenu avant de passer en ligne. |
| Role | Non extrait. | Recréez chaque rôle sur la cible. |
| Privilège système | Non extrait. | Recréez en tant qu’instructions PostgreSQL GRANT . |
| Appartenance au rôle | Non extrait. | Recréez en tant qu’instructions GRANT <role> TO <role> . |
| Privilèges d’objet et octroi | L’extraction d’octroi est désactivée par défaut et couvre uniquement les allocations d’objets. | Recréez des subventions à partir de votre inventaire source, puis validez-les. |
Sécurité au niveau des lignes et base de données privée virtuelle (DBMS_RLS) |
Non converti. | Recréez les stratégies en tant que stratégies de sécurité au niveau des lignes PostgreSQL. |
| Sécurité des étiquettes Oracle | Non converti. | Redéfinissez les limites d’accès aux données sur la cible. |
Réaction des données (DBMS_REDACT) |
Non converti. | Masquage réapplique sur la cible, dans la couche application ou avec un équivalent PostgreSQL. |
Profil, stratégie de mot de passe et stratégie d’audit unifiée ou affinée (DBMS_FGA, AUDIT POLICY) |
Non extrait. | Configurez les paramètres et l’audit de serveur Azure équivalents, puis gérez-les en tant que code en tant qu’infrastructure. |
Important
L’outil ne porte pas sur la sécurité au niveau des lignes, la base de données privée virtuelle, Oracle Label Security et les stratégies de réaction des données. Un schéma converti déploie et retourne des données sans eux, de sorte que les lignes filtrées par Oracle sont visibles et les colonnes masquées par Oracle sont retournées en texte clair. Recréez ces stratégies et vérifiez-les avant de router le trafic de production vers la cible.
Objets du planificateur
L’outil ne convertit pas les métadonnées du planificateur Oracle en planifications PostgreSQL de travail.
| Type d’objet | Limite | Procédure à suivre |
|---|---|---|
DBMS_SCHEDULER travail et planification |
Non converti. | Recréez la planification sur la cible avec pg_cron, ou utilisez un planificateur externe tel que Azure Logic Apps ou Azure Functions. |
Travail hérité DBMS_JOB |
Non détecté. | Recréez la planification avec pg_cron ou un planificateur d’application. |
| Programme, chaîne, informations d’identification, observateur de fichiers, classe de travail, groupe, fenêtre et travail basé sur les événements | Non converti. | Régénérez l’orchestration dans un planificateur externe. |
Lacunes au niveau des fonctionnalités
Les éléments suivants sont des fonctionnalités Oracle plutôt que des types d’objets. L’outil ne détecte pas ces fonctionnalités ou les convertit d’une manière qui perd une partie du comportement d’origine, de sorte qu’ils n’apparaissent pas toujours comme une tâche de révision.
| Fonctionnalité | Limite | Procédure à suivre |
|---|---|---|
| Table partitionnée hybride (Oracle 19.3 et versions ultérieures) | Convertit en tant que table ordinaire et les partitions externes sont perdues. | Identifiez les tables partitionnée hybrides dans la source et chargez les données externes séparément. |
| Affichage édition et déclencheur cross-edition | La redéfinition basée sur l’édition n’est pas détectée. Une vue d’édition est convertie en mode simple. | Convertissez une édition, puis gérez manuellement le déploiement de version. |
| Table immuable (Oracle 19.11 et versions ultérieures) | Non détecté et il n’y a pas d’équivalent PostgreSQL. | Appliquez l’exigence dans la couche application ou avec des déclencheurs. |
| Archive des données Flashback | L’historique temporel n’est pas modélisé. | Utilisez un modèle de table d’historique ou une extension temporelle sur la cible. |
Requête Flashback (AS OF TIMESTAMP, AS OF SCN) |
Non converti. | Réécrire des requêtes qui lisent les versions historiques d’une ligne. |
| Partitionnement Oracle | Non modélisé et il n’existe pas d’équivalent PostgreSQL à base de données unique. | Redéfinissez la stratégie de distribution. |
BFILE et spécificités métier SecureFile |
Géré uniquement comme une note générique sur les types exotiques. | Passez en revue le modèle de stockage et d’accès pour chaque colonne. |
Les colonnes d’identité, les colonnes virtuelles et générées, les colonnes invisibles et les tables temporaires globales sont gérées par le convertisseur et ne sont pas des limitations. Les tables temporaires privées existent uniquement au moment de l’exécution. Elles n’apparaissent donc pas dans l’inventaire source.
Obtenir de l’aide
Lorsque vous rencontrez des limitations :
- Utilisez le mode assistant Copilot GitHub pour obtenir une aide guidée sur les tâches de révision.
- Consultez la documentation PostgreSQL pour obtenir d’autres implémentations.
- Consultez les meilleures pratiques pour les modèles de migration d’Oracle vers Azure Database pour PostgreSQL.
- Testez dans un environnement de test avant de déployer en production.