Importazione utilizzando Oracle Data Pump - Amazon Relational Database Service

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

Importazione utilizzando Oracle Data Pump

Oracle Data Pump è un'utilità che consente di esportare i dati Oracle in un file di dump e importarli in un altro database Oracle. È un sostituto a lungo termine per le utilità di esportazione/importazione di Oracle e Oracle Data Pump è il metodo consigliato per spostare grandi quantità di dati da un database Oracle a un'istanza Amazon RDS DB.

Gli esempi riportati in questa sezione mostrano un modo per importare i dati in un database Oracle, ma Oracle Data Pump supporta anche altre procedure. Per ulteriori informazioni, consulta la documentazione relativa a Oracle Database.

Gli esempi in questa sezione utilizzano il pacchetto DBMS_DATAPUMP. Puoi eseguire le stesse attività utilizzando le utilità della riga di comando di Oracle Data Pump impdp e expdp. È possibile installare queste utilità in un host remoto come parte di un'installazione Oracle Client, incluso Oracle Instant Client. Per ulteriori informazioni, consulta Come si usa Oracle Instant Client per eseguire l'importazione o l'esportazione di Data Pump per la mia istanza database Amazon RDS for Oracle?

Panoramica su Oracle Data Pump

Oracle Data Pump è composto dai seguenti componenti:

  • Client della riga di comando expdp e impdp

  • Il DBMS_DATAPUMP pacchetto PL/ SQL

  • Il pacchetto DBMS_METADATA PL/ SQL

Puoi utilizzare Oracle Data Pump per gli scenari seguenti:

  • Importa dati da un database Oracle, locale o su un'EC2istanza Amazon, in un'istanza database RDS per Oracle.

  • Importa dati da un'istanza DB RDS for Oracle a un database Oracle, in locale o su un'EC2istanza Amazon.

  • Importa dati tra RDS istanze Oracle DB, ad esempio, per migrare i dati da EC2 -Classic a. VPC

Per scaricare le utilità di Oracle Data Pump, consultare Download di software per database Oracle sul sito web di Oracle Technology Network. Per le considerazioni sulla compatibilità durante la migrazione tra versioni di Oracle Database, consulta la documentazione di Oracle Database.

Flusso di lavoro di Oracle Data Pump

In genere, si utilizza Oracle Data Pump nelle seguenti fasi:

  1. Esportazione dei dati in un file di dump nel database di origine.

  2. Carica il file di dump nella destinazione RDS per l'istanza Oracle DB. Puoi eseguire il trasferimento utilizzando un bucket Amazon S3 o un collegamento di database tra i due database.

  3. Importa i dati dal tuo file di dump nella tua istanza DB RDS for Oracle.

Best practice di Oracle Data Pump

Quando utilizzi Oracle Data Pump per importare dati in un'RDSistanza For Oracle, consigliamo le seguenti best practice:

  • Esegui le importazioni in modalità schema o table per importare schemi e oggetti specifici.

  • Limita gli schemi che importi a quelli richiesti dalla tua applicazione.

  • Non eseguire l'importazione in modalità full, né importare schemi per i componenti gestiti dal sistema.

    Poiché RDS Oracle non consente l'accesso agli utenti SYS o agli SYSDBA amministratori, queste azioni potrebbero danneggiare il dizionario dei dati Oracle e influire sulla stabilità del database.

  • Quando si caricano grandi quantità di dati, procedere nel seguente modo:

    1. Trasferisci il file di dump nella destinazione RDS per l'istanza di Oracle DB.

    2. Acquisire una snapshot DB dell'istanza.

    3. Verificare che l'importazione ha esito positivo.

    Se i componenti del database sono invalidati, puoi eliminare l'istanza database e ricrearla dallo snapshot del database. L'istanza database ripristinata include i file di dump archiviati sull'istanza database al momento della creazione dello snapshot del database.

  • Non importare file di dump creati utilizzando i parametri di esportazione di Oracle Data Pump TRANSPORT_TABLESPACES, TRANSPORTABLE oppure TRANSPORT_FULL_CHECK. RDSper le istanze di Oracle DB non supportano l'importazione di questi file di dump.

  • Non importare file di dump che contengono oggetti Oracle Scheduler in SYS, SYSTEM, RDSADMIN, RDSSEC e RDS_DATAGUARD, e che appartengono alle seguenti categorie:

    • Processi

    • Programmi

    • Piani

    • Chain

    • Regolamento

    • Contesti di valutazione

    • Set di regole

    RDSperché le istanze di Oracle DB non supportano l'importazione di questi file di dump.

  • Per escludere gli oggetti di Oracle Scheduler non supportati, utilizza direttive aggiuntive durante l'esportazione Data Pump. Se utilizzi DBMS_DATAPUMP, aggiungi un'altra direttiva METADATA_FILTER prima di DBMS_METADATA.START_JOB:

    DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' );

    Se utilizzi expdp, crea un file di parametri contenente la direttiva exclude illustrata nell'esempio seguente. Quindi usa PARFILE=parameter_file con il comando expdp.

    exclude=procobj:"IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) )"

Importazione di dati con Oracle Data Pump e un bucket Amazon S3

Il seguente processo di importazione utilizza Oracle Data Pump e un bucket Amazon S3. I passaggi sono i seguenti:

  1. Esporta i dati sul database di origine utilizzando il pacchetto DBMS Oracle _. DATAPUMP

  2. Inserisci il file di dump in un bucket Amazon S3.

  3. Scarica il file di dump dal bucket Amazon S3 nella directory sull'istanza database DATA_PUMP_DIR di RDS destinazione per Oracle.

  4. Importa i dati dal file di dump copiato nell'istanza DB RDS per Oracle utilizzando il pacchetto. DBMS_DATAPUMP

Requisiti di importazione dei dati con Oracle Data Pump e un bucket Amazon S3

Il processo ha i requisiti seguenti:

  • Assicurati che sia disponibile un bucket Amazon S3 per i trasferimenti di file e che il bucket Amazon S3 sia nella stessa istanza DB. Regione AWS Per istruzioni, consultare Creazione di un bucket nella Guida introduttiva di Amazon Simple Storage Service.

  • L'oggetto caricato nel bucket Amazon S3 deve essere pari o inferiore a 5 TB. Per ulteriori informazioni sull'utilizzo di oggetti nel Amazon S3, consulta Guida per l'utente di Amazon Simple Storage Service.

    Nota

    Se il file di dump supera i 5 TB, è possibile eseguire l'esportazione Oracle Data Pump con l'opzione parallela. Questa operazione diffonde i dati in più file di dump in modo da non superare il limite di 5 TB per i singoli file.

  • È necessario preparare il bucket Amazon S3 per RDS l'integrazione con Amazon seguendo le istruzioni riportate in. Configurazione delle IAM autorizzazioni RDS per l'integrazione di Oracle con Amazon S3

  • È necessario disporre di spazio di storage sufficiente per archiviare il file dump nell'istanza di origine e nell'istanza database di destinazione.

Nota

Questo processo importa un file dump nella directory DATA_PUMP_DIR, una directory preconfigurata in tutte le istanze database Oracle. La directory si trova nello stesso volume di storage dei file di dati. Quando importi il file di dump, i file di dati di Oracle esistenti occupano più spazio. Pertanto, devi assicurarti che l'istanza database possa accomodare tale utilizzo dello spazio aggiuntivo. Il file dump importato non viene eliminato o ripulito automaticamente dalla directory DATA_PUMP_DIR. Per rimuovere il file di dump importato, usa _. UTL FILE FREMOVE, disponibile sul sito Web di Oracle.

Passaggio 1: concedere i privilegi all'utente del database sull'istanza DB di destinazione RDS per Oracle

In questa fase, si creano gli schemi in cui si intende importare i dati e si concedono agli utenti i privilegi necessari.

Per creare utenti e concedere i privilegi necessari sull'istanza di destinazione RDS for Oracle
  1. SQLUtilizzare*Plus o Oracle SQL Developer per accedere come utente principale all'istanza DB RDS for Oracle in cui verranno importati i dati. Per informazioni sulla connessione a un'istanza database, consulta Connessione all'istanza database RDS per Oracle.

  2. Prima di importare i dati, crea gli spazi di tabella necessari. Per ulteriori informazioni, consulta Creazione e dimensionamento di spazi tabelle.

  3. Se l'account utente in cui vengono importati i dati non esiste, crealo e concedigli le autorizzazioni e i ruoli necessari. Se intendi importare i dati su più schemi utente, crea tutti gli account utente e concedi loro i privilegi e i ruoli necessari.

    Ad esempio, le seguenti SQL istruzioni creano un nuovo utente e concedono le autorizzazioni e i ruoli necessari per importare i dati nello schema di proprietà di tale utente. In questo passaggio e in quelli successivi, sostituisci schema_1 con il nome del tuo schema.

    CREATE USER schema_1 IDENTIFIED BY my_password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    Nota

    Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

    Le istruzioni precedenti concedono al nuovo utente il privilegio CREATE SESSION e il ruolo RESOURCE. Potrebbero essere necessari privilegi e ruoli aggiuntivi, a seconda degli oggetti del database da importare.

Passaggio 2: Esportazione dei dati in un file di dump utilizzando _ DBMS DATAPUMP

Per creare un file di dump, utilizza il pacchetto DBMS_DATAPUMP.

Per esportare i dati Oracle in un file di dump
  1. Usa SQL Plus o Oracle SQL Developer per connetterti all'istanza database di origine RDS di Oracle con un utente amministrativo. Se il database di origine è un'istanza RDS per Oracle DB, connettiti con l'utente RDS master Amazon.

  2. Esporta i dati richiamando le procedure DBMS_DATAPUMP.

    Il seguente script esporta lo schema SCHEMA_1 in un file di dump denominato sample.dmpnella directory DATA_PUMP_DIR. Sostituisci SCHEMA_1 con il nome dello schema che si desidera esportare.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_exp.log', directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM SYS.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Nota

    Data Pump avvia i processi in modo asincrono. Per informazioni sul monitoraggio di un processo di Data Pump, consulta la pagina relativa al monitoraggio dello stato dei processi nella documentazione di Oracle.

  3. (Facoltativo) Visualizza il contenuto del log di esportazione utilizzando la procedura rdsadmin.rds_file_util.read_text_file. Per ulteriori informazioni, consulta Lettura dei file in una directory di istanze database.

Passaggio 3: Caricamento del file di dump sul bucket Amazon S3

Utilizza la RDS procedura Amazon rdsadmin.rdsadmin_s3_tasks.upload_to_s3 per copiare il file di dump nel bucket Amazon S3. L'esempio seguente carica tutti i file dalla directory DATA_PUMP_DIR su un bucket Amazon S3 denominato amzn-s3-demo-bucket.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

L'istruzione SELECT restituisce l'ID dell'attività in un tipo di dati VARCHAR2. Per ulteriori informazioni, consulta Caricamento di file dalla tua istanza DB RDS per Oracle su un bucket Amazon S3.

Fase 4: scaricamento del file di dump dal bucket Amazon S3 all'istanza database di destinazione

Esegui questo passaggio utilizzando la RDS procedura Amazonrdsadmin.rdsadmin_s3_tasks.download_from_s3. Quando si scarica un file in una directory, la procedura download_from_s3 salta il processo di scaricamento se nella directory esiste già un file con lo stesso nome. Per rimuovere un file dalla directory di download, usa UTL_FILE. FREMOVE, disponibile sul sito Web di Oracle.

Per scaricare il file di dump
  1. Avvia SQL *Plus o Oracle SQL Developer e accedi come master sulla tua istanza database Oracle di RDS destinazione Amazon

  2. Scarica il file di dump utilizzando la RDS procedura rdsadmin.rdsadmin_s3_tasks.download_from_s3 Amazon.

    L'esempio seguente illustra come scaricare tutti i file da un bucket Amazon S3 denominato amzn-s3-demo-bucket nella directory DATA_PUMP_DIR.

    SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'amzn-s3-demo-bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

    L'istruzione SELECT restituisce l'ID dell'attività in un tipo di dati VARCHAR2. Per ulteriori informazioni, consulta Download di file da un bucket Amazon S3 a un'istanza database Oracle.

Passaggio 5: importa il file di dump nell'istanza DB di destinazione utilizzando _ DBMS DATAPUMP

Utilizzalo DBMS_DATAPUMP per importare lo schema nella tua istanza DB RDS per Oracle. Potrebbero essere necessarie opzioni aggiuntive, come METADATA_REMAP.

Per importare dati nell'istanza database di destinazione
  1. Avvia SQL *Plus o SQL Developer e accedi come utente principale alla tua istanza database RDS for Oracle.

  2. Importa i dati chiamando DBMS_DATAPUMP le procedure.

    L'esempio seguente importa SCHEMA_1 dati dall'sample_copied.dmpistanza DB di destinazione.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Nota

    I processi di Data Pump vengono avviati in modo asincrono. Per informazioni sul monitoraggio di un processo di Data Pump, consulta la pagina relativa al monitoraggio dello stato dei processi nella documentazione di Oracle. È possibile visualizzare il contenuto del log di importazione utilizzando la procedura rdsadmin.rds_file_util.read_text_file. Per ulteriori informazioni, consulta Lettura dei file in una directory di istanze database.

  3. Verifica l'importazione dei dati elencando le tabelle dello schema nell'istanza database di destinazione.

    Ad esempio, la query seguente restituisce il numero di tabelle per SCHEMA_1.

    SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Fase 6: eseguire la pulizia

Dopo che i dati sono stati importati, puoi eliminare i file che non intendi conservare.

Per rimuovere i file non necessari
  1. Avvia SQL *Plus o SQL Developer e accedi come utente principale alla tua istanza database RDS for Oracle.

  2. Elenca i file contenuti in DATA_PUMP_DIR utilizzando il seguente comando.

    SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
  3. Elimina i file non più necessari da DATA_PUMP_DIR utilizzando il seguente comando.

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');

    Ad esempio, il comando seguente elimina il file denominato sample_copied.dmp.

    EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');

Il seguente processo di importazione utilizza Oracle Data Pump e il TRANSFER pacchetto Oracle DBMS_ FILE _. I passaggi sono i seguenti:

  1. Connettiti a un database Oracle di origine, che può essere un database locale, un'EC2istanza Amazon o un'istanza DB RDS per Oracle.

  2. Esporta i dati utilizzando il DATAPUMP pacchetto DBMS_.

  3. Utilizzare DBMS_FILE_TRANSFER.PUT_FILE per copiare il file di dump dal database Oracle alla DATA_PUMP_DIR directory sulla destinazione dell'istanza RDS Oracle DB connessa tramite un database link.

  4. Importa i dati dal file di dump copiato nell'istanza di Oracle DB RDS for Oracle utilizzando il pacchetto. DBMS_DATAPUMP

Il processo di importazione che utilizza Oracle Data Pump e il pacchetto DBMS_FILE_TRANSFER è costituito dalle seguenti fasi.

Requisiti di importazione dei dati con Oracle Data Pump e un collegamento di database

Il processo ha i requisiti seguenti:

  • Sono necessari i privilegi di esecuzione per i pacchetti DBMS_FILE_TRANSFER e DBMS_DATAPUMP.

  • Sono necessari i privilegi di scrittura nella directory DATA_PUMP_DIR nell'istanza database di origine.

  • È necessario disporre di spazio di storage sufficiente per archiviare il file dump nell'istanza di origine e nell'istanza database di destinazione.

Nota

Questo processo importa un file dump nella directory DATA_PUMP_DIR, una directory preconfigurata in tutte le istanze database Oracle. La directory si trova nello stesso volume di storage dei file di dati. Quando importi il file di dump, i file di dati di Oracle esistenti occupano più spazio. Pertanto, devi assicurarti che l'istanza database possa accomodare tale utilizzo dello spazio aggiuntivo. Il file dump importato non viene eliminato o ripulito automaticamente dalla directory DATA_PUMP_DIR. Per rimuovere il file di dump importato, utilizzare _. UTL FILE FREMOVE, disponibile sul sito Web di Oracle.

Passaggio 1: concedere i privilegi all'utente sull'istanza DB di destinazione RDS per Oracle

Per concedere i privilegi all'utente sull'istanza DB RDS di destinazione Oracle, procedi nel seguente modo:

  1. Utilizza SQL Plus o Oracle SQL Developer per connetterti all'istanza DB RDS per Oracle in cui intendi importare i dati. Connect come utente RDS principale di Amazon. Per informazioni sulla connessione all'istanza database, consulta Connessione all'istanza database RDS per Oracle.

  2. Prima di importare i dati, crea gli spazi di tabella necessari. Per ulteriori informazioni, consulta Creazione e dimensionamento di spazi tabelle.

  3. Se l'account utente in cui vengono importati i dati non esiste, crealo e concedigli le autorizzazioni e i ruoli necessari. Se intendi importare i dati su più schemi utente, crea tutti gli account utente e concedi loro i privilegi e i ruoli necessari.

    Ad esempio, i seguenti comandi creano un nuovo utente denominato schema_1 e concedi le autorizzazioni e i ruoli necessari per importare i dati nello schema per questo utente.

    CREATE USER schema_1 IDENTIFIED BY my-password; GRANT CREATE SESSION, RESOURCE TO schema_1; ALTER USER schema_1 QUOTA 100M ON users;
    Nota

    Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

    L'esempio precedente concede al nuovo utente il privilegio CREATE SESSION e il ruolo RESOURCE. Potrebbero essere necessari privilegi e ruoli aggiuntivi, a seconda degli oggetti del database da importare.

    Nota

    In questo passaggio e in quelli successivi, sostituisci schema_1 con il nome del tuo schema.

Passaggio 2: Concessione dei privilegi all'utente nel database di origine

SQLUtilizzare*Plus o Oracle SQL Developer per connettersi all'istanza di database RDS for Oracle che contiene i dati da importare. Se necessario, crea un account utente e concedi le autorizzazioni necessarie.

Nota

Se il database di origine è un'RDSistanza Amazon, puoi saltare questo passaggio. Utilizzi il tuo account utente RDS principale Amazon per eseguire l'esportazione.

I comandi seguenti creano un nuovo utente e gli concedono le autorizzazioni necessarie.

CREATE USER export_user IDENTIFIED BY my-password; GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user; ALTER USER export_user QUOTA 100M ON users; GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user; GRANT SELECT_CATALOG_ROLE TO export_user; GRANT EXECUTE ON DBMS_DATAPUMP TO export_user; GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
Nota

Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

Passaggio 3: crea un file di dump usando _ DBMS DATAPUMP

Per creare il file batch, procedi come segue:

  1. SQLUtilizzate*Plus o Oracle SQL Developer per connettervi all'istanza Oracle di origine con un utente amministrativo o con l'utente creato nel passaggio 2. Se il database di origine è un'istanza database Amazon RDS for Oracle, connettiti con l'utente RDS master Amazon.

  2. Crea un file di dump utilizzando l'utilità Oracle Data Pump.

    Lo script seguente crea un file dump denominato sample.dmp nella directory DATA_PUMP_DIR.

    DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT' , job_mode => 'SCHEMA' , job_name => null ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample.dmp' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl , filename => 'sample_exp.log' , directory => 'DATA_PUMP_DIR' , filetype => dbms_datapump.ku$_file_type_log_file ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl , 'SCHEMA_EXPR' , 'IN (''SCHEMA_1'')' ); DBMS_DATAPUMP.METADATA_FILTER( v_hdnl, 'EXCLUDE_NAME_EXPR', q'[IN (SELECT NAME FROM sys.OBJ$ WHERE TYPE# IN (66,67,74,79,59,62,46) AND OWNER# IN (SELECT USER# FROM SYS.USER$ WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC') ) ) ]', 'PROCOBJ' ); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
    Nota

    I processi di Data Pump vengono avviati in modo asincrono. Per informazioni sul monitoraggio di un processo di Data Pump, consulta la pagina relativa al monitoraggio dello stato dei processi nella documentazione di Oracle. È possibile visualizzare il contenuto del log di esportazione utilizzando la procedura rdsadmin.rds_file_util.read_text_file. Per ulteriori informazioni, consulta Lettura dei file in una directory di istanze database.

Fase 4: Creazione di un collegamento di database all'istanza database di destinazione

Crea un collegamento di database tra le istanze database di origine e destinazione. Tieni presente che, per creare un collegamento di database e trasferire il file dump esportato, l'istanza Oracle locale deve disporre di connettività di rete verso l'istanza database di destinazione.

Esegui questa fase connettendoti con lo stesso account utente utilizzato nella fase precedente.

Se stai creando un collegamento di database tra due istanze DB all'interno della stessa istanza VPC o collegate tramite peeringVPCs, le due istanze DB devono avere un percorso valido tra di loro. Il gruppo di sicurezza di ogni istanza database deve permettere l'ingresso e l'uscita dall'altra istanza database. Le regole in entrata e in uscita del gruppo di sicurezza possono fare riferimento a gruppi di sicurezza dello stesso gruppo o di un gruppo peer. VPC VPC Per ulteriori informazioni, consulta Regolazione dei collegamenti al database per l'uso con le istanze DB in un VPC.

Il comando seguente crea un collegamento al database denominato to_rds che si connette all'utente RDS master Amazon nell'istanza DB di destinazione.

CREATE DATABASE LINK to_rds CONNECT TO <master_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>)))';

Passaggio 5: copia il file di dump esportato nell'istanza DB di destinazione utilizzando _ _ DBMS FILE TRANSFER

Utilizza DBMS_FILE_TRANSFER per copiare il file dump dall'istanza database di origine all'istanza database di destinazione. Il seguente script copia un file di dump denominato sample.dmp dall'istanza di origine su un collegamento di database di destinazione denominato to_rds (creato nel passaggio precedente).

BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object => 'DATA_PUMP_DIR', source_file_name => 'sample.dmp', destination_directory_object => 'DATA_PUMP_DIR', destination_file_name => 'sample_copied.dmp', destination_database => 'to_rds' ); END; /

Passaggio 6: importare il file di dati nell'istanza DB di destinazione utilizzando _ DBMS DATAPUMP

Utilizza Oracle Data Pump per importare lo schema nell'istanza database. REMAPPotrebbero essere necessarie opzioni aggiuntive come METADATA _.

Connect all'istanza DB con l'account utente RDS master Amazon per eseguire l'importazione.

DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_copied.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file ); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'sample_imp.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')'); DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Nota

I processi di Data Pump vengono avviati in modo asincrono. Per informazioni sul monitoraggio di un processo di Data Pump, consulta la pagina relativa al monitoraggio dello stato dei processi nella documentazione di Oracle. È possibile visualizzare il contenuto del log di importazione utilizzando la procedura rdsadmin.rds_file_util.read_text_file. Per ulteriori informazioni, consulta Lettura dei file in una directory di istanze database.

Puoi verificare l'importazione dei dati visualizzando le tabelle dell'utente nell'istanza database. Ad esempio, la query seguente restituisce il numero di tabelle per schema_1.

SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';

Fase 7: pulizia

Dopo che i dati sono stati importati, puoi eliminare i file che non intendi conservare. Puoi elencare i file contenuti in DATA_PUMP_DIR utilizzando il seguente comando.

SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;

Per eliminare i file non più necessari da DATA_PUMP_DIR, utilizza il seguente comando.

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');

Ad esempio, il comando seguente elimina il file denominato "sample_copied.dmp".

EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp');