Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esegui la migrazione di un database Oracle locale ad Amazon RDS for Oracle utilizzando l'importazione diretta di Oracle Data Pump tramite un collegamento al database
Creato da Rizwan Wangde (AWS)
Ambiente: produzione | Fonte: database Oracle locale | Target: Amazon RDS per Oracle |
Tipo R: Replatform | Carico di lavoro: Oracle | Tecnologie: migrazione; database |
Servizi AWS: AWS DMS; AWS Direct Connect; Amazon RDS |
Riepilogo
Numerosi modelli riguardano la migrazione di database Oracle locali ad Amazon RDS for Oracle utilizzando Oracle Data Pump, un'utilità Oracle nativa che rappresenta il modo preferito per migrare carichi di lavoro Oracle di grandi dimensioni. Questi modelli prevedono in genere l'esportazione di schemi o tabelle di applicazioni in file di dump, il trasferimento dei file di dump in una directory di database su Amazon RDS for Oracle e quindi l'importazione degli schemi applicativi e dei dati dai file di dump.
Utilizzando questo approccio, una migrazione può richiedere più tempo a seconda della dimensione dei dati e del tempo necessario per trasferire i file di dump sull'istanza Amazon RDS. Inoltre, i file di dump risiedono nel volume Amazon Elastic Block Store (Amazon EBS) dell'istanza Amazon RDS, che deve essere sufficientemente grande per il database e i file di dump. Quando i file di dump vengono eliminati dopo l'importazione, lo spazio vuoto non può essere recuperato, quindi continui a pagare per lo spazio inutilizzato.
Questo modello mitiga questi problemi eseguendo un'importazione diretta sull'istanza Amazon RDS utilizzando l'API Oracle Data Pump (DBMS_DATAPUMP
) su un collegamento al database. Il pattern avvia una pipeline di esportazione e importazione simultanea tra i database di origine e di destinazione. Questo modello non richiede il dimensionamento di un volume EBS per i file di dump perché nessun file di dump viene creato o memorizzato nel volume. Questo approccio consente di risparmiare il costo mensile dello spazio su disco inutilizzato.
Prerequisiti e limitazioni
Prerequisiti
Un account Amazon Web Services (AWS) attivo.
Un cloud privato virtuale (VPC) configurato con sottoreti private su almeno due zone di disponibilità, per fornire l'infrastruttura di rete per l'istanza Amazon RDS.
Un database Oracle in un data center locale.
Un'istanza Oracle Amazon RDS
esistente in un'unica zona di disponibilità. L'utilizzo di una singola zona di disponibilità migliora le prestazioni di scrittura durante la migrazione. Un'implementazione Multi-AZ può essere abilitata 24-48 ore prima del cutover. AWS Direct Connect
(consigliato per database di grandi dimensioni). Connettività di rete e regole firewall in locale configurate per consentire una connessione in entrata dall'istanza Amazon RDS al database Oracle locale.
Limitazioni
Il limite di dimensione del database su Amazon RDS for Oracle è di 64 TiB (a dicembre 2022).
Versioni del prodotto
Database di origine: Oracle Database versione 10g Release 1 e successive.
Database di destinazione: per l'elenco più recente delle versioni ed edizioni supportate su Amazon RDS, consulta Amazon RDS for Oracle nella documentazione AWS.
Architettura
Stack tecnologico di origine
Database Oracle autogestito in locale o nel cloud
Stack tecnologico Target
Amazon RDS per Oracle
Architettura di destinazione
Il diagramma seguente mostra l'architettura per la migrazione da un database Oracle locale ad Amazon RDS for Oracle in un ambiente Single-AZ. Le direzioni delle frecce illustrano il flusso di dati nell'architettura. Il diagramma non mostra quale componente sta avviando la connessione.
![""](images/pattern-img/d54e7777-dcd2-4039-9b76-97e1019ef112/images/78429a29-e110-485a-a501-9764decd7e92.png)
L'istanza Amazon RDS for Oracle si connette al database Oracle di origine locale per eseguire una migrazione a pieno carico tramite il collegamento al database.
AWS DMS si connette al database Oracle di origine locale per eseguire la replica continua utilizzando Change Data Capture (CDC).
Le modifiche CDC vengono applicate al database Amazon RDS for Oracle.
Strumenti
Servizi AWS
AWS Database Migration Service (AWS DMS) ti aiuta a migrare gli archivi di dati nel cloud AWS o tra combinazioni di configurazioni cloud e locali. Questo modello utilizza CDC e l'impostazione Replicate data changes only.
AWS Direct Connect collega la rete interna a una posizione Direct Connect tramite un cavo Ethernet standard in fibra ottica. Con questa connessione, puoi creare interfacce virtuali direttamente ai servizi AWS pubblici bypassando i provider di servizi Internet nel tuo percorso di rete.
Amazon Relational Database Service (Amazon RDS) per Oracle ti aiuta a configurare, gestire e scalare un database relazionale Oracle nel cloud AWS.
Altri strumenti
Oracle Data Pump
ti aiuta a spostare dati e metadati da un database all'altro a velocità elevate. Strumenti client come Oracle Instant Client
o SQL Developer vengono utilizzati per connettere ed eseguire query SQL sul database.
Best practice
Sebbene AWS Direct Connect
Una rete privata virtuale (VPN) che utilizza Amazon Site-to-Site VPN o una connessione VPN IPSec dalla rete locale alla rete AWS
Oracle Database Native Network Encryption
configurata sul database Oracle locale
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura la connettività di rete dal database di destinazione al database di origine. | Configura la rete e il firewall locali per consentire la connessione in entrata dall'istanza Amazon RDS di destinazione al database Oracle di origine locale. | Amministratore di rete, tecnico della sicurezza |
Crea un utente del database con i privilegi appropriati. | Crea un utente del database nel database Oracle di origine locale con i privilegi per migrare i dati tra l'origine e la destinazione utilizzando Oracle Data Pump.
| DBA |
Prepara il database di origine locale per la migrazione di AWS DMS CDC. | (Facoltativo) Preparare il database Oracle di origine locale per la migrazione CDC di AWS DMS dopo il completamento di Oracle Data Pump Full Load:
| DBA |
Installa e configura SQL Developer. | Installa e configura SQL Developer | DBA, ingegnere addetto alla migrazione |
Genera uno script per creare i tablespace. | Usa la seguente query SQL di esempio per generare lo script sul database di origine.
Lo script verrà applicato al database di destinazione. | DBA |
Genera uno script per creare utenti, profili, ruoli e privilegi. | Per generare uno script per creare gli utenti, i profili, i ruoli e i privilegi del database, utilizzare gli script del documento di Oracle Support How to Extract DDL for User, inclusi privilegi e ruoli utilizzando dbms_metadata.get_ddl Lo script verrà applicato al database di destinazione. | DBA |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un collegamento al database di origine e verifica la connettività. | Per creare un collegamento al database di origine locale, è possibile utilizzare il seguente comando di esempio.
Per verificare la connettività, esegui il seguente comando SQL.
La connettività ha esito positivo se la risposta è | DBA |
Esegui gli script per preparare l'istanza di destinazione. | Esegui gli script generati in precedenza per preparare l'istanza Amazon RDS for Oracle di destinazione:
Questo aiuta a garantire che la migrazione di Oracle Data Pump possa creare gli schemi e i relativi oggetti. | DBA, ingegnere addetto alla migrazione |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui la migrazione degli schemi richiesti. | Per migrare gli schemi richiesti dal database locale di origine all'istanza Amazon RDS di destinazione, usa il codice nella sezione Informazioni aggiuntive:
Per ottimizzare le prestazioni della migrazione, puoi regolare il numero di processi paralleli eseguendo il comando seguente.
| DBA |
Raccogli le statistiche dello schema per migliorare le prestazioni. | Il comando Gather Schema Statistics restituisce le statistiche di Oracle Query Optimizer raccolte per gli oggetti del database. Utilizzando queste informazioni, l'ottimizzatore può selezionare il piano di esecuzione migliore per qualsiasi query su questi oggetti.
| DBA |
Attività | Descrizione | Competenze richieste |
---|---|---|
Acquisisci l'SCN sul database Oracle locale di origine. | Acquisisci il numero di modifica del sistema (SCN) sul database Per generare l'SCN corrente sul database di origine, esegui la seguente istruzione SQL.
| DBA |
Esegui la migrazione a pieno carico degli schemi. | Per migrare gli schemi richiesti (
Nel codice, sostituiscilo
Per ottimizzare le prestazioni della migrazione, puoi regolare il numero di processi paralleli.
| DBA |
Disabilita i trigger negli schemi migrati. | Prima di iniziare l'attività dedicata esclusivamente ai CDC di AWS DMS, disabilita gli schemi inclusi negli schemi | DBA |
Raccogli le statistiche dello schema per migliorare le prestazioni. | Il comando Gather Schema Statistics restituisce le statistiche di Oracle Query Optimizer raccolte per gli oggetti del database. Utilizzando queste informazioni, l'ottimizzatore può selezionare il piano di esecuzione migliore per qualsiasi query su questi oggetti.
| DBA |
Usa AWS DMS per eseguire una replica continua dall'origine alla destinazione. | Utilizza AWS DMS per eseguire una replica continua dal database Oracle di origine all'istanza Amazon RDS for Oracle di destinazione. Per ulteriori informazioni, consulta Creazione di attività per la replica continua utilizzando AWS DMS e il post del blog How to work with native CDC support in AWS | DBA, ingegnere addetto alla migrazione |
Attività | Descrizione | Competenze richieste |
---|---|---|
Abilita Multi-AZ sull'istanza 48 ore prima del cutover. | Se si tratta di un'istanza di produzione, consigliamo di abilitare la distribuzione Multi-AZ sull'istanza Amazon RDS per offrire i vantaggi dell'alta disponibilità (HA) e del disaster recovery (DR). | DBA, ingegnere addetto alla migrazione |
Interrompi l'attività solo su AWS DMS CDC (se CDC era attiva). |
| DBA |
Abilita i trigger. | Abilita i TRIGGERS che hai disabilitato prima della creazione dell'attività CDC. | DBA |
Risorse correlate
AWS
documentazione Oracle
Informazioni aggiuntive
Codice 1: solo migrazione a pieno carico, schema di applicazione singolo
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Codice 2: solo migrazione a pieno carico, schemi di applicazioni multiple
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Codice 3: migrazione a pieno carico prima dell'operazione solo CDC, schema a singola applicazione
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Codice 4: migrazione a pieno carico prima dell'operazione solo CDC, schemi applicativi multipli
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN (operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE (handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Scenario in cui un approccio misto alla migrazione può funzionare meglio
In rari scenari in cui il database di origine contiene tabelle con milioni di righe e colonne LOBSEGMENT di dimensioni molto grandi, questo modello rallenterà la migrazione. Oracle migra LOBSegments tramite il collegamento di rete uno alla volta. Estrae una singola riga (insieme ai dati della colonna LOB) dalla tabella di origine e inserisce la riga nella tabella di destinazione, ripetendo il processo fino alla migrazione di tutte le righe. Oracle Data Pump tramite il collegamento al database non supporta i meccanismi di caricamento in blocco o tramite percorso diretto per LOBSegments.
In questa situazione, consigliamo quanto segue:
Salta le tabelle identificate durante la migrazione di Oracle Data Pump aggiungendo il seguente filtro di metadati.
dbms_datapump.metadata_filter(handle =>h1, name=>'NAME_EXPR', value => 'NOT IN (''TABLE_1'',''TABLE_2'')');
Utilizza un'attività AWS DMS (migrazione a pieno carico, con replica CDC se richiesta) per migrare le tabelle identificate. AWS DMS estrarrà più righe dal database Oracle di origine e le inserirà in un batch nell'istanza Amazon RDS di destinazione, migliorando le prestazioni.