Trasferimento di file tra Amazon RDS for Oracle e un bucket Amazon S3 - 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à.

Trasferimento di file tra Amazon RDS for Oracle e un bucket Amazon S3

Per trasferire file tra un'istanza DB RDS for Oracle e un bucket Amazon S3, puoi utilizzare il pacchetto Amazon. RDS rdsadmin_s3_tasks Puoi comprimere i file con GZIP quando li carichi e decomprimerli durante il download.

Requisiti e limitazioni per il trasferimento di file

Prima di trasferire file tra l'istanza DB e un bucket Amazon S3, tieni presente quanto segue:

  • Il rdsadmin_s3_tasks pacchetto trasferisce i file che si trovano in un'unica directory. Non è possibile includere sottodirectory in un trasferimento.

  • La dimensione massima dell'oggetto in un bucket Amazon S3 è di 5 TB.

  • Le attività create da vengono eseguite in modo rdsadmin_s3_tasks asincrono.

  • È possibile caricare file dalla directory Data Pump, ad esempioDATA_PUMP_DIR, o da qualsiasi directory creata dall'utente. Non è possibile caricare file da una directory utilizzata dai processi in background di Oracle, ad esempio le trace directory adumpbdump, o.

  • Il limite di download è di 2000 file per procedura richiesta. download_from_s3 Se devi scaricare più di 2000 file da Amazon S3, suddividi il processo di scaricamento in operazioni distinte contenenti non più di 2000 file per chiamata.

  • Se esiste un file nella cartella di scaricamento e si tenta di scaricare un file con lo stesso nome, download_from_s3 ignora lo scaricamento del file in questione. Per rimuovere un file dalla directory di download, utilizzare la SQL procedura PL/ UTL_FILE. FREMOVE.

Caricamento di file dalla tua istanza DB RDS per Oracle su un bucket Amazon S3

Per caricare i file da un'istanza database a un bucket Amazon S3, utilizza la procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3. Ad esempio, puoi caricare file di backup di Oracle Recovery Manager (RMAN) o file Oracle Data Pump. Per informazioni sull'utilizzo di oggetti, consulta Guida per l'utente di Amazon Simple Storage Service. Per ulteriori informazioni sull'esecuzione RMAN dei backup, vedereEsecuzione di RMAN attività comuni per le istanze di database Oracle.

La procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3 include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

p_bucket_name

VARCHAR2

obbligatorio

Il nome del bucket Amazon S3 in cui caricare i file.

p_directory_name

VARCHAR2

obbligatorio

Il nome dell'oggetto directory Oracle da cui caricare i file. La directory può essere un qualsiasi oggetto directory creato dall'utente o directory Data Pump, come DATA_PUMP_DIR. Non è possibile caricare file da una directory utilizzata dai processi in background, ad esempio adumpbdump, etrace.

Nota

È possibile solo caricare i file dalla directory specificata. NOn è possibile caricare i file nelle sottodirectory nella directory specificata.

p_s3_prefix

VARCHAR2

obbligatorio

Un prefisso del nome file Amazon S3 con cui vengono caricati i file. Un prefisso vuoto carica tutti i file al livello superiore nel bucket Amazon S3 specificato e non aggiunge un prefisso ai nomi file.

Ad esempio, se il prefisso è folder_1/oradb, i file vengono caricati su folder_1. In questo caso, il prefisso oradb viene aggiunto a ogni file.

p_prefix

VARCHAR2

obbligatorio

Un prefisso nome file con cui i nomi file devono corrispondere per essere caricati. Un prefisso vuoto carica tutti i file nella directory specificata.

p_compression_level

NUMBER

0

facoltativo

Il livello di GZIP compressione. I valori validi sono compresi tra 0 e 9.

  • 0: nessuna compressione

  • 1: compressione più veloce

  • 9: compressione massima

p_bucket_owner_full_control

VARCHAR2

facoltativo

L'impostazione di controllo degli accessi per il bucket. Gli unici valori validi sono null o FULL_CONTROL. Questa impostazione è necessaria solo se si caricano file da un account (account A) in un bucket di proprietà di un account diverso (account B) e l'account B ha bisogno del pieno controllo dei file.

Il valore restituito per la procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3 è un ID attività.

L'esempio seguente carica tutti i file nella DATA_PUMP_DIR directory nel bucket Amazon S3 denominato amzn-s3-demo-bucket. I file non sono compressi.

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

L'esempio seguente carica tutti i file con prefisso db nella directory DATA_PUMP_DIR nel bucket Amazon S3 denominato amzn-s3-demo-bucket. Amazon RDS applica il massimo livello di GZIP compressione ai file.

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

L'esempio seguente carica tutti i file nella directory DATA_PUMP_DIR nel bucket Amazon S3 denominato amzn-s3-demo-bucket. I file vengono caricati in una cartella dbfiles. In questo esempio, il livello di GZIP compressione è 1, che è il livello di compressione più veloce.

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

L'esempio seguente carica tutti i file nella directory DATA_PUMP_DIR nel bucket Amazon S3 denominato amzn-s3-demo-bucket. I file vengono caricati in una cartella dbfiles e ora viene aggiunto all'inizio di ogni nome file. Non viene applicata alcuna compressione.

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

L'esempio seguente presuppone che il comando sia eseguito nell'account A, ma l'account B richiede il pieno controllo del contenuto del bucket. Il comando rdsadmin_s3_tasks.upload_to_s3 trasferisce tutti i file nella directory DATA_PUMP_DIR al bucket denominato s3bucketOwnedByAccountB. Il controllo degli accessi è impostato su FULL_CONTROL in modo che l'account B possa accedere ai file nel bucket. Il livello di GZIP compressione è 6, che bilancia velocità e dimensione del file.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 's3bucketOwnedByAccountB', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_bucket_owner_full_control => 'FULL_CONTROL', p_compression_level => 6) AS TASK_ID FROM DUAL;

In ogni esempio, l'istruzione SELECT restituisce l'ID dell'attività in un tipo di dati VARCHAR2.

È possibile visualizzare il risultato visualizzando il file di output dell'attività.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

Replace (Sostituisci) task-id con l'ID dell'attività restituito dalla procedura.

Nota

Le attività vengono eseguite in modo asincrono.

Download di file da un bucket Amazon S3 a un'istanza database Oracle

Per scaricare file da un bucket Amazon S3 su un'istanza RDS for Oracle, utilizza la procedura Amazon. RDS rdsadmin.rdsadmin_s3_tasks.download_from_s3

La procedura download_from_s3 include i seguenti parametri.

Nome del parametro Tipo di dati Default Campo obbligatorio Descrizione

p_bucket_name

VARCHAR2

Richiesto

Il nome del bucket Amazon S3 da cui scaricare i file.

p_directory_name

VARCHAR2

Richiesto

Il nome dell'oggetto directory Oracle su cui scaricare i file. La directory può essere un qualsiasi oggetto directory creato dall'utente o directory Data Pump, come DATA_PUMP_DIR.

p_error_on_zero_downloads

VARCHAR2

FALSE

Facoltativo

Un flag che determina se l'attività genera un errore quando nessun oggetto nel bucket Amazon S3 corrisponde al prefisso. Se questo parametro non è impostato o impostato su FALSE (impostazione predefinita), l'operazione stampa un messaggio indicante che non è stato trovato alcun oggetto, ma non genera alcuna eccezione o fallisce. Se questo parametro è impostatoTRUE, l'operazione genera un'eccezione e ha esito negativo.

Esempi di specifiche dei prefissi che possono non riuscire nei test di corrispondenza sono gli spazi nei prefissi, come in ' import/test9.log', e le mancate corrispondenze tra maiuscole e minuscole, come in test9.log e test9.LOG.

p_s3_prefix

VARCHAR2

Richiesto

Un prefisso nome file con cui i nomi file devono corrispondere per essere scaricati. Un prefisso vuoto scarica tutti i file di livello superiore nel bucket Amazon S3 specificato, ma non i file nelle cartelle nel bucket.

La procedura scarica gli oggetti Amazon S3 solo dalla cartella di primo livello che corrisponde al prefisso. Le strutture directory nidificate corrispondenti al prefisso specificato non vengono scaricate.

Ad esempio, si supponga che un bucket Amazon S3 abbia la struttura della cartella folder_1/folder_2/folder_3. Specifica il prefisso 'folder_1/folder_2/'. In questo caso, vengono scaricati solo i file in folder_2, non i file in folder_1 o folder_3.

Se, invece, viene specificato il prefisso 'folder_1/folder_2', tutti i file in folder_1 che corrispondono al prefisso 'folder_2' vengono scaricati, mentre i file in folder_2 non vengono scaricati.

p_decompression_format

VARCHAR2

Facoltativo

Il formato di decompressione. I valori validi sono NONE per non eseguire la decompressione e GZIP per eseguire la decompressione.

Il valore restituito per la procedura rdsadmin.rdsadmin_s3_tasks.download_from_s3 è un ID attività.

L'esempio seguente scarica tutti i file nel bucket Amazon S3 denominato amzn-s3-demo-bucket nella directory DATA_PUMP_DIR. I file non sono compressi, quindi non viene applicata alcuna decompressione.

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'esempio seguente scarica tutti i file con prefisso db nel bucket Amazon S3 denominato amzn-s3-demo-bucket nella directory DATA_PUMP_DIR. I file vengono compressi conGZIP, quindi viene applicata la decompressione. Il parametro p_error_on_zero_downloads attiva il controllo degli errori dei prefissi, quindi se il prefisso non corrisponde a nessun file nel bucket, l'attività genera un'eccezione e non riesce.

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

L'esempio seguente scarica tutti i file nella cartella myfolder/ nel bucket Amazon S3 denominato amzn-s3-demo-bucket nella directory DATA_PUMP_DIR. Utilizzare il parametro p_s3_prefix per specificare la cartella Amazon S3. I file caricati vengono compressi conGZIP, ma non vengono decompressi durante il download.

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

L'esempio seguente scarica il file mydumpfile.dmp nel bucket Amazon S3 denominato amzn-s3-demo-bucket nella directory DATA_PUMP_DIR. Non viene applicata alcuna decompressione.

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

In ogni esempio, l'istruzione SELECT restituisce l'ID dell'attività in un tipo di dati VARCHAR2.

È possibile visualizzare il risultato visualizzando il file di output dell'attività.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

Replace (Sostituisci) task-id con l'ID dell'attività restituito dalla procedura.

Nota

Le attività vengono eseguite in modo asincrono.

Per rimuovere i file da una directory, è possibile utilizzare la procedura Oracle UTL_FILE.FREMOVE. Per ulteriori informazioni, vedere FREMOVEla procedura nella documentazione di Oracle.

Monitoraggio dello stato di un file transfer

Le attività di trasferimento di file pubblicano RDS gli eventi Amazon all'inizio e al termine. Il messaggio dell'evento contiene l'ID dell'attività per il trasferimento file. Per informazioni sulla visualizzazione degli eventi, consultare Visualizzazione degli RDS eventi Amazon.

È possibile visualizzare lo stato di un'attività in corso in un file bdump. I file bdump si trovano nella directory /rdsdbdata/log/trace. Il nome del file bdump ha il formato che segue.

dbtask-task-id.log

Sostituire task-id con l'ID dell'attività da monitorare.

Nota

Le attività vengono eseguite in modo asincrono.

Puoi usare la procedura memorizzata in rdsadmin.rds_file_util.read_text_file per visualizzare i contenuti dei file bdump. Ad esempio, la query seguente restituisce i contenuti del file bdump dbtask-1234567890123-1234.log.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));

L'esempio seguente mostra il file di log di un trasferimento non riuscito.

TASK_ID -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234567890123-1234 TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name amzn-s3-demo-bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.