Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive le limitazioni note, gli oggetti non supportati e le considerazioni sulla migrazione quando si usa la funzionalità di conversione dello schema da Oracle ad Database di Azure per PostgreSQL in Visual Studio Code.
Limitazioni del supporto della piattaforma
- ARM64: non supportato in Windows o Linux.
La conversione dello schema richiede PostgreSQL 15 o versione successiva. Per i sistemi operativi supportati, inclusi macOS 13 o versioni successive, vedere i prerequisiti dell'esercitazione.
Oggetti non supportati e parzialmente supportati
Le sezioni seguenti descrivono oggetti non supportati, conversione parziale e funzionalità che richiedono una revisione manuale. Il risultato di un singolo oggetto dipende dalla definizione di origine, dalle dipendenze e dai prerequisiti di destinazione.
L'individuazione, l'estrazione, la conversione e l'implementazione descrivono fasi diverse. Un oggetto può essere individuato ma escluso dall'estrazione o estratto ma non convertito. Esaminare i risultati dell'individuazione per l'ambito di origine, il report di conversione HTML ed Esplora oggetti di conversione per i risultati della conversione e le note, e i report di Esperienza di installazione per i risultati della distribuzione.
Il sistema Oracle e gli schemi predefiniti non vengono estratti o convertiti. Sono inclusi schemi come SYS, SYSTEM, XDB, MDSYS, CTXSYSe WMSYS.
Importante
Un risultato convertito non stabilisce per sé l'esito positivo della compilazione, un'implementazione completa, l'inclusione della distribuzione o un comportamento di runtime equivalente. La compilazione controlla la sintassi e la struttura, non i dati o il comportamento dell'applicazione. Esaminare gli oggetti convertiti e non convertiti e completare test di runtime separati prima dell'uso in produzione.
Output del segnaposto
Quando lo strumento non è in grado di convertire completamente un oggetto, potrebbe generare un DDL segnaposto al meglio delle possibilità. Alcuni oggetti non hanno una definizione PostgreSQL utilizzabile.
Un segnaposto non implementa la logica di business originale. Ad esempio, una routine generata il cui corpo genera un errore può comunque essere visualizzato come Convertito. Esaminare la definizione generata e tutte le note di conversione anziché basarsi solo sullo stato.
Gli oggetti che dipendono da un segnaposto possono richiedere modifiche manuali o essere omessi dallo script di distribuzione generato. Esaminare queste dipendenze in Conversion Esplora oggetti prima della distribuzione.
I casi che possono richiedere il completamento manuale includono:
- Transazioni autonome. La conversione di routine che usano
PRAGMA AUTONOMOUS_TRANSACTIONpuò dipendere dadblink. Le estensioni necessarie mancanti o la logica delle transazioni non supportata possono impedire una conversione completa. - Riferimenti non risolti. Le dipendenze mancanti o non risolte possono impedire la conversione o la compilazione completa.
- Istruzioni di controllo delle transazioni. I costrutti,
ROLLBACK TO SAVEPOINTad esempio, non vengono sempre convertiti in modo pulito. - PL/SQL di cui è stato eseguito il wrapping. Il corpo di origine non è disponibile per la conversione. Per altre informazioni, vedere Wrapped PL/SQL.
Oggetti programmabili
| Tipo di oggetto | Limitation | Cosa fare |
|---|---|---|
| Corpo pacchetto | Le definizioni dei pacchetti convertite non stabiliscono un'inizializzazione dello stato equivalente o la relativa persistenza tra una chiamata e l'altra. | Testare lo stato condiviso tra chiamate, transazioni e sessioni in base alle aspettative dell'applicazione. |
Routine che usa PRAGMA AUTONOMOUS_TRANSACTION |
La conversione può usare una connessione separata tramite dblink. La gestione delle connessioni generate e la logica delle transazioni devono essere esaminate. |
Installare le estensioni necessarie prima della conversione. Testare la connessione e il contesto della sessione, la visibilità dei dati, i commit, i rollback e la gestione degli errori. |
| Trigger (evento di sistema) | La compilazione di un trigger generato non stabilisce una gestione equivalente degli eventi di database Oracle o di sessione. | Rivedere esplicitamente i trigger LOGON, LOGOFF, STARTUP, SHUTDOWN e SERVERERROR. Convalidare l'evento di destinazione, l'ambito e le autorizzazioni e implementare nuovamente la logica che la destinazione non supporta. |
| Trigger (cross-edition) | La conversione in un trigger PostgreSQL ordinario richiede una revisione per la perdita dell'ambito dell'edizione Oracle. | Convertire una singola edizione, verificare quando il trigger di destinazione viene attivato e gestire l'implementazione della versione nel processo di rilascio. |
| Corpo del tipo | I corpi dei tipi possono essere estratti, ma l'estrazione non garantisce una completa implementazione in PostgreSQL dei relativi metodi. | Esaminare le definizioni generate per i metodi del tipo e le relative dipendenze. Implementare manualmente qualsiasi logica mancante. |
| Codice sorgente Java, stored procedure Java e classe Java | Non estratto. Il server flessibile di Azure Database per PostgreSQL non può eseguire Java nel database. | Riscrivere la logica in PL/pgSQL o spostarla nel livello applicazione. |
Libreria C esterna (CREATE LIBRARY) |
Non estratto. | Riscrivere la logica in PL/pgSQL o spostarla nel livello applicazione. |
| PL/SQL di cui è stato eseguito il wrapping | Il corpo non può essere letto. L'output generato può contenere segnaposto anziché l'implementazione originale. Per altre informazioni, vedere Wrapped PL/SQL. | Ottenere la sorgente originale non incapsulata prima di avviare la conversione o implementare manualmente la logica PostgreSQL mancante. |
PL/SQL di cui è stato eseguito il wrapping
Lo strumento non riesce a leggere l'implementazione di unità PL/SQL archiviate in formato wrapped (offuscato) usando l'utilità Oracle wrap o DBMS_DDL.WRAP. Potrebbe usare i metadati disponibili per generare un segnaposto, ad esempio una routine che solleva un errore quando viene chiamata. Questo output non ricostruisce la logica di business originale.
Esaminare le unità di cui è stato eseguito il wrapping in Conversion Esplora oggetti anche se il relativo stato è Convertito. Esaminare le definizioni generate, le note di conversione e le dipendenze per identificare le implementazioni mancanti. Un segnaposto non garantisce che gli oggetti dipendenti vengano convertiti o distribuiti.
Ottenere l'origine iniziale senza wrapping prima di avviare la conversione. Se la conversione è già stata completata, implementare e convalidare manualmente la logica PostgreSQL non presente. Non è possibile rieseguire una conversione completata.
Oggetti dati e di archiviazione
| Tipo di oggetto | Limitation | Cosa fare |
|---|---|---|
Operatore definito dall'utente (CREATE OPERATOR) |
La conversione non è garantita e può produrre output segnaposto. | Esaminare l'operatore generato e testarlo. |
| Indice (bitmap, join bitmap, partizionato globalmente o di dominio) | Non estratto. PostgreSQL non usa gli indici bitmap o gli indici di dominio di Oracle. | Esaminare le dipendenze dell'applicazione dalle funzionalità specifiche dell'indice, scegliere gli indici di destinazione appropriati e testare il comportamento e le prestazioni delle query. |
Log delle viste materializzate (MLOG$) |
Non estratto. | Definire e testare la strategia di aggiornamento della vista materializzata di destinazione, incluse le pianificazioni degli aggiornamenti e i requisiti di aggiornamento tempestivo dei dati. |
| Tabella esterna | Non estratto. Il server flessibile di Azure Database per PostgreSQL non ha accesso al file system del server, pertanto file_fdw non è disponibile. |
Carica il file in una tabella con un \copy o COPY ... FROM STDIN lato client, con l'estensione azure_storage, oppure tramite l'applicazione. |
| Tabella di accodamento avanzato (AQ) | Non estratto. Oracle Advanced Queuing veicola la logica applicativa. | Riprogettarla con una coda applicativa, un'estensione PostgreSQL o un servizio di messaggistica di Azure. |
| Tabella blockchain | Non estratto. | Implementare nuovamente il requisito di integrità nel livello dell'applicazione. |
| Cluster e hash cluster | Non estratto. | Ricreare come tabella normale o partizionata. |
Oggetto Directory (CREATE DIRECTORY) |
Non estratto. | Gestire l'accesso ai file nel livello applicazione. |
Tipo di indice definito dall'utente (CREATE INDEXTYPE) |
Non estratto. | Ricreare il metodo di accesso con un indice di estensione PostgreSQL se presente. |
| Collegamento al database | Non convertito. Per altre informazioni, vedere Collegamenti di database. | Ricreare con un wrapper di dati esterni. |
| Synonym | Alcuni sinonimi, inclusi quelli che fanno riferimento a pacchetti, routine o sequenze, potrebbero non essere convertiti. | Esaminare i mapping di destinazione e aggiornare il codice SQL dipendente per fare riferimento agli oggetti PostgreSQL appropriati. |
Contesto dell'applicazione (CREATE CONTEXT, DBMS_SESSION.SET_CONTEXT) |
Non estratto. | Eseguire il mapping del contesto alle impostazioni della sessione postgreSQL e leggerle con current_setting(). |
| Visualizzazione analitica, dimensione degli attributi, gerarchia, dimensione OLAP, modello di data mining e mappa di zona materializzata | Non estratto. Non hanno una destinazione PostgreSQL. | Ricompilare l'output necessario come visualizzazioni o funzioni oppure eliminarlo. |
Clausola di archiviazione LOB, XML Schema registrato (DBMS_XMLSCHEMA.REGISTERSCHEMA) e indice associato a XML Schema |
Non estratto. | Modellare nuovamente il requisito di archiviazione o convalida nella destinazione. |
| Piano di Resource Manager e gruppo di consumer, profilo SQL, baseline del piano SQL, edizione, profilo di traduzione SQL, criteri di gestione del ciclo di vita delle informazioni, profilo di blocco e oggetto Workspace Manager | Non estratto. Si tratta di un'istanza Oracle, un ottimizzatore o artefatti del ciclo di vita che non rientrano nell'ambito. | Ricrearli a livello di applicazione o infrastruttura o rilasciarli in Database di Azure per PostgreSQL. |
Collegamenti al database
Lo strumento non converte automaticamente i collegamenti di database privati e pubblici (CREATE DATABASE LINK, CREATE PUBLIC DATABASE LINK). I collegamenti di database archiviano le credenziali e le informazioni sull'endpoint remoto che non vengono convertite direttamente in PostgreSQL.
Ricreare i collegamenti sul sistema di destinazione usando un wrapper di dati esterni di PostgreSQL, come postgres_fdw o oracle_fdw, oppure eseguire il refactoring come connessioni a livello di applicazione. Cercare riferimenti di @link nell'origine Oracle in modo da trovare tutte le dipendenze, inclusi i riferimenti all'interno di sinonimi e viste.
Oggetti di sicurezza e identità
La conversione automatica degli oggetti identity e sicurezza non è supportata. Pianificare e convalidare utenti, ruoli, privilegi e criteri di protezione dei dati separatamente da DDL dello schema convertito. Usare l'inventario di origine Oracle per identificare i controlli di accesso necessari. Gli elenchi di individuazione o i metadati estratti non stabiliscono il supporto della conversione o confermano che i controlli di accesso sono configurati nella destinazione.
| Tipo di oggetto | Limitation | Cosa fare |
|---|---|---|
| User | La conversione automatica non è supportata. | Effettuare il provisioning degli accessi separatamente in Azure. Ricreare ogni utente come ruolo PostgreSQL e convalidare l'accesso risultante prima di passare in tempo reale. |
| Ruolo | La conversione automatica non è supportata. | Ricreare ogni ruolo nella destinazione. |
| Privilegio di sistema | La conversione automatica non è supportata. | Eseguire il mapping dell'accesso necessario ai privilegi PostgreSQL, quindi applicare le istruzioni appropriate GRANT . |
| Appartenenza al ruolo | La conversione automatica non è supportata. | Ricreare come istruzioni GRANT <role> TO <role>. |
| Privilegio e concessione di oggetti | I metadati delle autorizzazioni di origine non configurano autorizzazioni di destinazione equivalenti. | Ricreare le autorizzazioni dall'inventario di origine, quindi convalidarle. |
Sicurezza a livello di riga e database privato virtuale (DBMS_RLS) |
Non convertito. | Ricreare i criteri come criteri di sicurezza a livello di riga postgreSQL. |
| Oracle Label Security | Non convertito. | Riprogettare i limiti di accesso ai dati nella destinazione. |
Oscuramento dei dati (DBMS_REDACT) |
Non è stato convertito. | Riapplicare la maschera sulla destinazione, nel livello dell'applicazione o con un equivalente PostgreSQL. |
Profilo, criteri password e criteri di audit unificati o con granularità fine (DBMS_FGA, AUDIT POLICY) |
La conversione automatica non è supportata. | Configurare i parametri equivalenti del server Azure e l'audit, e gestirli come Infrastructure as Code. |
Importante
La mancanza della sicurezza a livello di riga, di Virtual Private Database, di Oracle Label Security o delle protezioni di mascheramento dei dati può esporre righe o valori che Oracle aveva filtrato o mascherato. Implementa protezioni equivalenti e verifica l'accesso effettivo prima di instradare il traffico di produzione alla destinazione.
Oggetti dell'utilità di pianificazione
La conversione automatica degli oggetti dello scheduler Oracle non è supportata. Pianificare separatamente la pianificazione e l'orchestrazione. Un oggetto visualizzato in Individuazione non garantisce il supporto alla conversione.
| Tipo di oggetto | Limitation | Cosa fare |
|---|---|---|
Processo DBMS_SCHEDULER e pianificazione |
La conversione automatica non è supportata. | Ricreare la pianificazione nella destinazione con pg_crono usare un'utilità di pianificazione esterna, ad esempio App per la logica di Azure o Funzioni di Azure. |
Job legacy DBMS_JOB |
La conversione automatica non è supportata. | Ricreare la pianificazione con pg_cron o un'utilità di pianificazione dell'applicazione. |
| Programma, catena, credenziali, file watcher, classe di processo, gruppo, finestra e processo basato su eventi | La conversione automatica non è supportata. | Ricreare l'orchestrazione in un'utilità di pianificazione esterna. |
Gap a livello di funzionalità
Gli elementi seguenti sono funzionalità Oracle anziché tipi di oggetto. Possono richiedere modifiche oltre alla creazione di DDL PostgreSQL validi. Esaminare l'inventario di origine e le definizioni convertite, perché le differenze a livello di funzionalità potrebbero non essere visualizzate come oggetti separati nei risultati della conversione.
| Feature | Limitation | Cosa fare |
|---|---|---|
| Tabella partizionata ibrida (Oracle 19.3 e versioni successive) | Converte come tabella normale e le partizioni esterne andranno perse. | Identificare le tabelle partizionate ibride nell'origine e caricare i dati esterni separatamente. |
| Creare viste e trigger tra edizioni | Una sola definizione di trigger o vista PostgreSQL non stabilisce un comportamento equivalente basato su edizione. | Convertire un'edizione, quindi convalidare la visibilità degli oggetti e il comportamento dei trigger durante l'implementazione della versione. |
| Tabella non modificabile (Oracle 19.11 e versioni successive) | Non rilevato, e non esiste alcun equivalente PostgreSQL. | Applicare il requisito nel livello dell'applicazione o con i trigger. |
| Archivio dati flashback | La cronologia temporale non è modellata. | Usare un modello di tabella della cronologia o un'estensione temporale nella destinazione. |
Query flashback (AS OF TIMESTAMP, AS OF SCN) |
Non convertito. | Riscrivere le query che leggono versioni storiche di una riga. |
| Oracle Sharding | Non modellato e non esiste un equivalente di PostgreSQL a database singolo. | Riprogettare la strategia di distribuzione. |
BFILE e specifiche LOB di SecureFile |
Il contenuto dei file esterni e il comportamento di archiviazione LOB richiedono una pianificazione separata della migrazione. | Esaminare i riferimenti ai file esterni e le dipendenze dalle funzionalità LOB specifiche di Oracle. Pianificare e testare l'archiviazione di destinazione e il modello di accesso. |
Anche quando le colonne Identity, le colonne virtuali e generate, le colonne invisibili e le tabelle temporanee globali vengono convertite, convalida le definizioni e il comportamento con l'applicazione. Controllare la generazione di valori, la visibilità delle colonne, la durata temporanea dei dati e il comportamento delle transazioni. Le tabelle temporanee private esistono solo in fase di esecuzione, quindi non vengono visualizzate nell'inventario di origine.
Limiti operativi
Tenere presenti questi limiti durante la pianificazione della migrazione:
- La conversione dello schema non migra i dati delle righe. Pianificare la migrazione dei dati e la convalida dei dati separatamente dalla conversione dello schema.
- Le riesecuzioni di conversione non sono supportate. Esaminare e correggere le definizioni di PostgreSQL generate tramite Conversion Esplora oggetti. Compilare manualmente le definizioni modificate e verificare che sql di distribuzione includa le correzioni che si intende distribuire.
- Gli schemi scratch vengono ricreati. Gli schemi scratch esistenti che corrispondono agli schemi Oracle selezionati vengono eliminati
DROP SCHEMA ... CASCADEe ricreati. Usare un database scratch vuoto o dedicato senza oggetti o dati da conservare. Vedere Preparazione del database creato da zero. - La distribuzione è un'operazione separata. La generazione di file di installazione non li esegue sul server di destinazione Database di Azure per PostgreSQL. Rivedere le istruzioni, eseguire gli script generati ed esaminare i risultati della distribuzione e della verifica degli oggetti, come descritto in Esperienza di installazione.
Come ottenere assistenza
Quando si riscontrano limitazioni:
- Consultare Esplora oggetti di conversione per le definizioni degli oggetti e le note di conversione. Usare Domanda per comprendere la conversione o Correzione di un oggetto per le modifiche assistite da Copilot al file PostgreSQL.
- Per le implementazioni alternative, vedere la documentazione di PostgreSQL.
- Esaminare le procedure consigliate per Oracle dei modelli di migrazione Database di Azure per PostgreSQL.
- Eseguire il test in un ambiente non di produzione prima della distribuzione nell'ambiente di produzione.
Contenuti correlati
- Cos'è la conversione dello schema da Oracle al server flessibile di Database di Azure per PostgreSQL?
- Visualizzare il report di conversione HTML
- Esaminare e modificare gli oggetti in Conversion Esplora oggetti
- Distribuire schemi convertiti con Esperienza di installazione
- Procedure consigliate per la conversione dello schema da Oracle ad Database di Azure per PostgreSQL - Server flessibile