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 - Prontuario AWS

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

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

  • 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.

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.

""
  1. 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.

  2. AWS DMS si connette al database Oracle di origine locale per eseguire la replica continua utilizzando Change Data Capture (CDC).

  3. Le modifiche CDC vengono applicate al database Amazon RDS for Oracle.

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

Sebbene AWS Direct Connect utilizzi connessioni di rete private dedicate tra la rete locale e AWS, considera le seguenti opzioni per una maggiore sicurezza e crittografia dei dati per i dati in transito:

AttivitàDescrizioneCompetenze 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.

GRANT CONNECT to <migration_user>; GRANT DATAPUMP_EXP_FULL_DATABASE to <migration_user>; GRANT SELECT ANY TABLE to <migration_user>;
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:

  1. Configura i privilegi aggiuntivi necessari per gestire FLASHBACK durante la migrazione di Oracle Data Pump.

    GRANT FLASHBACK ANY TABLE to <migration_user>; GRANT FLASHBACK ARCHIVE ADMINISTER to <migration_user>;
  2. Per configurare i privilegi di account utente richiesti su una fonte Oracle autogestita per AWS DMS, consulta la documentazione di AWS DMS.

  3. Per preparare un database di origine Oracle autogestito per CDC utilizzando AWS DMS, consulta la documentazione di AWS DMS.

DBA

Installa e configura SQL Developer.

Installa e configura SQL Developer per connettere ed eseguire query SQL sui database di origine e di destinazione.

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.

SELECT 'CREATE TABLESPACE ' tablespace_name ' DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE UNLIMITED;' from dba_tablespaces where tablespace_name not in ('SYSTEM', 'SYSAUX','TEMP','UNDOTBS1') order by 1;

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 (Doc ID 2739952.1) (è richiesto un account Oracle).

Lo script verrà applicato al database di destinazione.

DBA
AttivitàDescrizioneCompetenze 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.

CREATE DATABASE LINK link2src CONNECT TO <migration_user_account> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>) (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';

Per verificare la connettività, esegui il seguente comando SQL.

select * from dual@link2src;

La connettività ha esito positivo se la risposta èX.

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:

  1. Spazi tabelle

  2. Profili

  3. Roles

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àDescrizioneCompetenze 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 migrare un singolo schema, esegui Code 1 dalla sezione Informazioni aggiuntive.

  • Per migrare più schemi, esegui Code 2 dalla sezione Informazioni aggiuntive.

Per ottimizzare le prestazioni della migrazione, puoi regolare il numero di processi paralleli eseguendo il comando seguente.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
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.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA
AttivitàDescrizioneCompetenze richieste

Acquisisci l'SCN sul database Oracle locale di origine.

Acquisisci il numero di modifica del sistema (SCN) sul database Oracle locale di origine. Utilizzerai l'SCN per l'importazione a pieno carico e come punto di partenza per la replica CDC.

Per generare l'SCN corrente sul database di origine, esegui la seguente istruzione SQL.

SELECT current_scn FROM V$DATABASE;
DBA

Esegui la migrazione a pieno carico degli schemi.

Per migrare gli schemi richiesti (FULL LOAD) dal database locale di origine all'istanza Amazon RDS di destinazione, procedi come segue:

  • Per migrare un singolo schema, esegui Code 3 dalla sezione Informazioni aggiuntive.

  • Per migrare più schemi, esegui Code 4 dalla sezione Informazioni aggiuntive.

Nel codice, sostituiscilo <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE> con l'SCN acquisito dal database di origine.

DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>);

Per ottimizzare le prestazioni della migrazione, puoi regolare il numero di processi paralleli.

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
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 TRIGGERS migrati.

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.

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
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 DMS.

DBA, ingegnere addetto alla migrazione
AttivitàDescrizioneCompetenze 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).

  1. Assicurati che la latenza di origine e la latenza di destinazione sulle CloudWatch metriche Amazon del task AWS DMS mostrino 0 secondi.

  2. Interrompi l'attività solo su AWS DMS CDC.

DBA

Abilita i trigger.

Abilita i TRIGGERS che hai disabilitato prima della creazione dell'attività CDC.

DBA

AWS

documentazione Oracle

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.