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 dei file tra Amazon RDS for Oracle e un bucket Amazon S3
Puoi utilizzare il package Amazon RDS rdsadmin_s3_tasks per trasferire file tra un'istanza database RDS per Oracle e un bucket Amazon S3. È possibile comprimere i file con GZIP al momento del caricamento e decomprimerli al momento del download.
Argomenti
Requisiti e limitazioni per i trasferimenti di file
Prima di trasferire i file tra un’istanza database e un bucket Amazon S3, tieni presente quanto segue:
-
Il pacchetto
rdsadmin_s3_taskstrasferisce i file presenti in una singola directory. Non puoi includere sottodirectory in un trasferimento. -
La dimensione massima dell'oggetto in un bucket Amazon S3 è di 5 TB.
-
Le attività create da
rdsadmin_s3_tasksvengono eseguite in modo asincrono. -
Puoi caricare i file dalla directory Data Pump, ad esempio
DATA_PUMP_DIR, o da qualsiasi directory creata dall’utente. Non puoi caricare file da una directory utilizzata dai processi in background di Oracle, ad esempio le directoryadump,bdumpotrace. -
Per
download_from_s3, il limite di scaricamento è pari a 2000 file per ogni chiamata della procedura. 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_s3ignora lo scaricamento del file in questione. Per rimuovere un file dalla directory di download, utilizza la procedura PL/SQL UTL_FILE.FREMOVE.
Caricamento di file da un'istanza database Oracle a 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, è possibile caricare i file di backup di Oracle Recovery Manager (RMAN) o i file di Oracle Data Pump. Per informazioni sull'utilizzo di oggetti, consulta Guida per l'utente di Amazon Simple Storage Service. Per ulteriori informazioni sull'esecuzione dei backup RMAN, consulta Esecuzione di attività RMAN comuni per le istanze 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 |
|---|---|---|---|---|
|
|
VARCHAR2 |
– |
obbligatorio |
Il nome del bucket Amazon S3 in cui caricare i file. |
|
|
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 NotaÈ possibile solo caricare i file dalla directory specificata. NOn è possibile caricare i file nelle sottodirectory nella directory specificata. |
|
|
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 è |
|
|
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. |
|
|
NUMBER |
|
facoltativo |
Il livello di compressione GZIP. I valori validi sono compresi tra
|
|
|
VARCHAR2 |
– |
facoltativo |
L'impostazione di controllo degli accessi per il bucket. Gli unici valori validi sono null o |
Il valore restituito per la procedura rdsadmin.rdsadmin_s3_tasks.upload_to_s3 è un ID attività.
L’esempio seguente carica tutti i file nella directory nel bucket Amazon S3 denominato DATA_PUMP_DIRamzn-s3-demo-bucket. I file non vengono 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 nella directory db nel bucket Amazon S3 denominato DATA_PUMP_DIR. Amazon RDS applica ai file il livello di compressione GZIP più alto.amzn-s3-demo-bucket
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 nel bucket Amazon S3 denominato DATA_PUMP_DIR. I file vengono caricati in una cartella amzn-s3-demo-bucketdbfiles. In questo esempio, il livello di compressione GZIP è 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 nel bucket Amazon S3 denominato DATA_PUMP_DIR. I file vengono caricati in una cartella amzn-s3-demo-bucketdbfiles 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 al bucket denominato DATA_PUMP_DIR. Il controllo degli accessi è impostato su s3bucketOwnedByAccountBFULL_CONTROL in modo che l'account B possa accedere ai file nel bucket. Il livello di compressione GZIP è 6, ovvero il giusto compromesso tra velocità e dimensioni dei 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'));
Sostituire con l'ID attività restituito dalla procedura.task-id
Nota
Le attività vengono eseguite in modo asincrono.
Download di file da un bucket Amazon S3 a un'istanza database Oracle
Per scaricare i file da un bucket Amazon S3 a un'istanza database RDS per 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 |
|---|---|---|---|---|
|
|
VARCHAR2 |
– |
Campo obbligatorio |
Il nome del bucket Amazon S3 da cui scaricare i file. |
|
|
VARCHAR2 |
– |
Campo obbligatorio |
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 |
|
|
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'attività stampa un messaggio che indica che non è stato trovato alcun oggetto, ma non genera un'eccezione o un errore. Se questo parametro è TRUE, l'attività genera un'eccezione e non riesce. Esempi di specifiche dei prefissi che possono non riuscire nei test di corrispondenza sono gli spazi nei prefissi, come in |
|
|
VARCHAR2 |
– |
Campo obbligatorio |
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 Se, invece, viene specificato il prefisso |
|
|
VARCHAR2 |
– |
Facoltativo |
Il formato di decompressione. I valori validi sono |
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 nella directory amzn-s3-demo-bucket. I file non sono compressi, quindi non viene applicata alcuna decompressione.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'esempio seguente scarica tutti i file con prefisso nel bucket Amazon S3 denominato db nella directory amzn-s3-demo-bucket. I file non sono compressi, quindi non viene applicata alcuna decompressione. Il parametro DATA_PUMP_DIRp_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 nel bucket Amazon S3 denominato myfolder/ nella directory amzn-s3-demo-bucket. Utilizzare il parametro DATA_PUMP_DIRp_s3_prefix per specificare la cartella Amazon S3. I file caricati vengono compressi con GZIP, 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 nel bucket Amazon S3 denominato mydumpfile.dmp nella directory amzn-s3-demo-bucket. Non viene applicata alcuna decompressione.DATA_PUMP_DIR
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'));
Sostituire con l'ID attività restituito dalla procedura.task-id
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, consulta la sezione relativa alla Procedura FREMOVE
Monitoraggio dello stato di un file transfer
Le attività di file transfer pubblicano gli eventi Amazon RDS al loro inizio e al completamento. Il messaggio dell'evento contiene l'ID dell'attività per il trasferimento file. Per informazioni sulla visualizzazione degli eventi, consultare Visualizzazione di eventi Amazon RDS.
È 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 con l'ID dell'attività da monitorare.task-id
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 nameamzn-s3-demo-bucketand key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket nameamzn-s3-demo-bucketand key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.