Operazioni di massa per i file nel cloud
Il package PL/SQL DBMS_CLOUD offre il supporto dell'esecuzione parallela per le attività di caricamento, download, copia e trasferimento di file in blocco, il che semplifica l'esperienza utente e offre prestazioni ottimali per le operazioni di file in blocco.
Il pacchetto DBMS_CLOUD supporta il caricamento e lo scaricamento dei file nei servizi cloud riportati di seguito.
-
Oracle Cloud Infrastructure Object Storage
-
Storage Blob Azure
-
Amazon S3
-
Archiviazione Google Cloud
Per ulteriori informazioni, vedere Formati URI file package DBMS_CLOUD.
Informazioni sulle operazioni dei file bulk
Le operazioni di file bulk DBMS_CLOUD supportano il download e il caricamento di file su Autonomous AI Database, incluso il supporto per la copia, lo spostamento e l'eliminazione di file negli storage degli oggetti cloud, nello stesso provider dell'area di memorizzazione degli oggetti o tra provider dell'area di memorizzazione degli oggetti.
Le operazioni di file di massa supportano il parallelismo e forniscono prestazioni ottimali per il caricamento, il download, la copia e lo spostamento dei file. Il parallelismo per le operazioni dei file di massa viene gestito specificando una priorità per un'operazione. Le priorità sostenute sono:
-
HIGH: utilizzare il conteggio di computazione CPU dell'istanza di Autonomous AI Database per determinare il numero di file paralleli elaborati. -
MEDIUM: utilizzare il limite di concorrenza per il servizio Medium per determinare il parallelismo. -
LOW: Elabora i file in ordine seriale (nessuna concorrenza).
L'esecuzione di operazioni di massa con priorità più elevata utilizza più risorse del database e il completamento delle operazioni più rapido quando il parallelismo può accelerare l'operazione. Una priorità inferiore consuma meno risorse del database e il completamento delle operazioni richiede più tempo quando il parallelismo può accelerare l'operazione. Quando le operazioni di massa comportano un numero limitato di file che contengono pochi dati, l'impostazione di una priorità più alta potrebbe non modificare le prestazioni.
Per aumentare il parallelismo per le operazioni in blocco dei file, utilizzare la priorità HIGH e aumentare il numero di CPU assegnate all'istanza di Autonomous AI Database. Il numero massimo di operazioni di file concorrenti supportate è limitato a 64 per le operazioni di file bulk.
La priorità predefinita è MEDIUM, che specifica che le operazioni di file bulk utilizzano il limite di concorrenza definito per il gruppo di consumer MEDIUM.
Vedere DBMS_CLOUD for Bulk File Management per informazioni dettagliate sull'uso del parametro format per specificare il file priority con le operazioni bulk.
Nei sottoprogrammi DBMS_CLOUD descritti di seguito, credential_name, source_credential_name o target_credential_name può essere NULL per l'URI bucket pubblico, preautenticato o prefirmato.
Copia di massa dei file nello storage degli oggetti cloud
Utilizzare la procedura DBMS_CLOUD.BULK_COPY per copiare in blocco i file da un bucket o una cartella dell'area di memorizzazione degli oggetti in un altro bucket o cartella.
-
Creare un oggetto credenziale per accedere alla posizione di origine.
Il nome della credenziale di origine, specificato con il parametro
source_credential_name, viene utilizzato per impostazione predefinita anche come credenziale per la posizione di destinazione.Per ulteriori informazioni, vedere CREATE_CREDENTIAL.
-
Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, creare una credenziale per accedere alla posizione di destinazione e includere il parametro
target_credential_name. -
Eseguire la procedura
DBMS_CLOUD.BULK_COPYper copiare i file in parallelo da un bucket o una cartella dell'area di memorizzazione degli oggetti a un altro bucket o cartella che può trovarsi tra provider, account e bucket cloud. Per eseguire la procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegioEXECUTEsuDBMS_CLOUD.BEGIN DBMS_CLOUD.BULK_COPY ( source_credential_name => 'OCI_CRED', source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o', target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o', format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP') ); END; /
In questo esempio vengono copiati in blocco i file da un bucket di Oracle Cloud Infrastructure Object Storage a un altro.
Per ulteriori informazioni, vedere Procedura BULK_COPY.
Per ulteriori informazioni, vedere Formati URI di storage degli oggetti di DBMS_CLOUD Package File Cloud.
Ad esempio, utilizzare DBMS_CLOUD.BULK_COPY per copiare i file da Amazon S3 a Oracle Cloud Infrastructure Object Storage.
BEGIN
DBMS_CLOUD.BULK_COPY(
source_credential_name => 'AWS_CRED',
source_location_uri => 'https://bucketname.s3-us-west-2.amazonaws.com/',
target_credential_name => 'OCI_CRED',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
Spostamento di massa dei file nello storage degli oggetti cloud
Utilizzare la procedura DBMS_CLOUD.BULK_MOVE per spostare in blocco i file da una posizione di storage degli oggetti cloud a un'altra.
Il primo passo per spostare i file consiste nel copiarli nella posizione di destinazione. Una volta copiati, i file vengono eliminati dalla posizione di origine.
I file vengono rinominati anziché copiati se l'area di memorizzazione degli oggetti consente di rinominare le operazioni tra le posizioni di origine e di destinazione.
-
Creare un oggetto credenziale per accedere alla posizione di origine.
Il nome della credenziale di origine, specificato con il parametro
source_credential_name, viene utilizzato per impostazione predefinita anche come credenziale per la posizione di destinazione.Per ulteriori informazioni, vedere CREATE_CREDENTIAL.
-
Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, creare una credenziale per accedere alla posizione di destinazione e includere il parametro
target_credential_name. -
Eseguire la procedura
DBMS_CLOUD.BULK_MOVEper spostare in blocco i file da una posizione di storage degli oggetti cloud a un'altra. Per eseguire la procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegioEXECUTEsuDBMS_CLOUD.
BEGIN
DBMS_CLOUD.BULK_MOVE (
source_credential_name => 'OCI_CRED',
source_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/
In questo esempio vengono spostati in blocco i file da una posizione di Oracle Cloud Infrastructure Object Storage a un'altra.
Per ulteriori informazioni, vedere Procedura BULK_MOVE.
Per ulteriori informazioni, vedere Formati URI di storage degli oggetti di DBMS_CLOUD Package File Cloud.
Ad esempio, utilizzare DBMS_CLOUD.BULK_MOVE per spostare i file da Amazon S3 a Oracle Cloud Infrastructure Object Storage.
BEGIN
DBMS_CLOUD.BULK_MOVE(
source_credential_name => 'AWS_CRED',
source_location_uri => 'https://bucketname.s3-us-west-2.amazonaws.com/',
target_credential_name => 'OCI_CRED',
target_location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
Download di massa dei file dallo storage degli oggetti cloud
Utilizzare la procedura DBMS_CLOUD.BULK_DOWNLOAD per eseguire il download di massa dei file dalla posizione dell'area di memorizzazione degli oggetti cloud all'oggetto directory in un Autonomous AI Database.
-
Creare una credenziale per accedere allo storage degli oggetti cloud.
Il nome della credenziale viene specificato con il parametro
credential_name.Per ulteriori informazioni, vedere CREATE_CREDENTIAL.
-
Eseguire la procedura
DBMS_CLOUD.BULK_DOWNLOADper scaricare i file in una directory di Autonomous AI Database dallo storage degli oggetti cloud. Per eseguire la procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegioEXECUTEsuDBMS_CLOUD.
BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (
credential_name => 'OCI_CRED',
location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
directory_name => 'BULK_TEST',
format => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/
Questo esempio scarica in blocco i file dall'URI della posizione dell'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure nell'oggetto directory in un Autonomous AI Database.
Nota: per scrivere i file nell'oggetto directory di destinazione, è necessario disporre del privilegio WRITE sull'oggetto directory.
Per ulteriori informazioni, vedere Procedura BULK_DOWNLOAD.
Per ulteriori informazioni, vedere Formati URI di storage degli oggetti di DBMS_CLOUD Package File Cloud.
Caricamento di massa dei file nello storage degli oggetti cloud
Utilizzare la procedura DBMS_CLOUD.BULK_UPLOAD per caricare in blocco i file da un oggetto directory nel database in una posizione dell'area di memorizzazione degli oggetti cloud.
-
Creare una credenziale per accedere allo storage degli oggetti cloud.
Il nome della credenziale viene specificato con il parametro
credential_name.Per ulteriori informazioni, vedere CREATE_CREDENTIAL.
-
Eseguire la procedura
DBMS_CLOUD.BULK_UPLOADper copiare i file nello storage degli oggetti cloud da una directory di database nell'istanza di Autonomous AI Database. Per eseguire la procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegioEXECUTEsuDBMS_CLOUD.BEGIN DBMS_CLOUD.BULK_UPLOAD ( credential_name => 'OCI_CRED', location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', directory_name => 'BULK_TEST', format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD') ); END; /Questo esempio carica in blocco i file da un oggetto directory, come specificato con il parametro
directory_namenell'URI della posizione dell'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure.Nota: per leggere i file di origine nell'oggetto directory, è necessario disporre del privilegio
READsull'oggetto directory.Per ulteriori informazioni, vedere Procedura BULK_UPLOAD.
Eliminazione di massa dei file dallo storage degli oggetti cloud
Utilizzare la procedura DBMS_CLOUD.BULK_DELETE per eliminare in blocco i file dallo storage degli oggetti cloud.
-
Creare una credenziale per accedere allo storage degli oggetti cloud.
Il nome della credenziale viene specificato con il parametro
credential_name.Il valore
credential_namepuò essereNULLper l'URI bucket pubblico, preautenticato o prefirmato.Per ulteriori informazioni, vedere CREATE_CREDENTIAL.
-
Eseguire la procedura
DBMS_CLOUD.BULK_DELETEper eliminare i file dall'area di memorizzazione degli oggetti cloud. Per eseguire la procedura, è necessario aver eseguito il login come utente ADMIN o disporre del privilegioEXECUTEsuDBMS_CLOUD.BEGIN DBMS_CLOUD.BULK_DELETE ( credential_name => 'OCI_CRED', location_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', format => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL') ); END; /Questo esempio elimina in blocco i file dall'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure.
Per ulteriori informazioni, vedere Procedura BULK_DELETE.
Per ulteriori informazioni, vedere Formati URI di storage degli oggetti di DBMS_CLOUD Package File Cloud.
Monitorare e risolvere i problemi relativi ai caricamenti di file di massa
Tutte le operazioni di caricamento dati DBMS_CLOUD vengono registrate nelle viste dba_load_operations e user_load_operations.
È possibile utilizzare le viste riportate di seguito per monitorare e risolvere i problemi relativi ai caricamenti di file in blocco.
-
dba_load_operations: mostra tutte le operazioni di caricamento. -
user_load_operations: mostra le operazioni di caricamento nello schema.
Eseguire una query su queste viste per visualizzare informazioni sulle operazioni di file di massa in corso e completate. Ad esempio, l'istruzione SELECT seguente con un predicato clausola WHERE in TYPE mostra le operazioni DOWNLOAD:
SELECT owner_name, type, status, start_time, update_time, status_table, rows_loaded
FROM user_load_operations WHERE type = 'DOWNLOAD';
OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME STATUS_TABLE ROWS_LOADED
---------- -------- --------- ------------------------ ------------------------ ------------ -----------
"ADMIN" DOWNLOAD COMPLETED 2022-10-17T20:42:19.498Z 2022-10-17T20:42:21.054Z DWN$2_STATUS 4
"ADMIN" DOWNLOAD FAILED 2022-10-17T20:40:54.348Z 2022-10-17T20:40:55.679Z DWN$1_STATUS
La colonna STATUS_TABLE mostra il nome della tabella su cui è possibile eseguire una query per esaminare le informazioni di log dettagliate per l'operazione di scaricamento di massa. Ad esempio:
DESCRIBE DWN$2_STATUS
Name Null? Type
------------- -------- ---------------------------
ID NOT NULL NUMBER
NAME VARCHAR2(4000)
BYTES NUMBER
CHECKSUM VARCHAR2(128)
LAST_MODIFIED TIMESTAMP(6) WITH TIME ZONE
STATUS VARCHAR2(30)
ERROR_CODE NUMBER
ERROR_MESSAGE VARCHAR2(4000)
START_TIME TIMESTAMP(6) WITH TIME ZONE
END_TIME TIMESTAMP(6) WITH TIME ZONE
SID NUMBER
SERIAL# NUMBER
ROWS_LOADED NUMBER
SELECT id, name, bytes, status, error_message, start_time, end_time FROM DWN$2_STATUS;
ID NAME BYTES STATUS ERROR_MESSAGE START_TIME END_TIME
-- ---------- ----- --------- ------------- ------------------------ ------------------------
1 trees.txt 58 COMPLETED 2022-10-17T20:42:19.998Z 2022-10-17T20:42:20.421Z
2 trees1.txt 58 COMPLETED 2022-10-17T20:42:20.425Z 2022-10-17T20:42:20.533Z
3 trees2.txt 58 COMPLETED 2022-10-17T20:42:20.535Z 2022-10-17T20:42:20.894Z
4 trees3.txt 58 COMPLETED 2022-10-17T20:42:20.896Z 2022-10-17T20:42:21.043Z
La tabella di stato mostra ogni nome file e il relativo stato per l'operazione in blocco.
Il numero di errore e il messaggio rilevanti vengono registrati nella tabella di stato se un'operazione su un file specifico non riesce.
Per le operazioni completate, il tempo necessario per ciascuna operazione può essere calcolato utilizzando l'ora riportata START_TIME e END_TIME.
La colonna STATUS dell'operazione file può avere uno dei seguenti valori:
| Stato file | Descrizione |
|---|---|
COMPLETED |
Operazione file completata e riuscita. |
FAILED |
Operazione file non riuscita. È possibile tentare un nuovo tentativo per due volte. |
PENDING |
L'operazione file non è stata ancora avviata. |
RUNNING |
L'operazione sul file è attualmente in corso. |
SKIPPED |
Operazione file saltata. |
Se un'operazione di file non riesce dopo due nuovi tentativi, l'operazione di massa viene contrassegnata come non riuscita e viene generato un errore. Ad esempio:
ORA-20003: Operation failed, please query table DOWNLOAD$2_STATUS for error details
Quando si utilizza un'operazione di file bulk DBMS_CLOUD, sono disponibili opzioni di parametro format che controllano le tabelle di stato.
-
logretention: specifica un valore intero che determina la durata in giorni di conservazione della tabella di stato. Il valore predefinito è 2 giorni. -
logprefix: specifica un valore stringa che determina il prefisso del nome della tabella dello stato dell'operazione in blocco.Ogni operazione bulk ha il proprio valore predefinito per l'opzione
logprefix:Procedura Valore predefinito per logprefixDBMS_CLOUD.BULK_COPYCOPYOBJDBMS_CLOUD.BULK_DELETEDELETEDBMS_CLOUD.BULK_DOWNLOADDOWNLOADDBMS_CLOUD.BULK_MOVEMOVEDBMS_CLOUD.BULK_UPLOADUPLOAD
Per informazioni sulla cancellazione della tabella user_load_operations, vedere Procedura DELETE_ALL_OPERATIONS.