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.

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:

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.

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

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

  3. Eseguire la procedura DBMS_CLOUD.BULK_COPY per 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 privilegio EXECUTE su DBMS_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.

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

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

  3. Eseguire la procedura DBMS_CLOUD.BULK_MOVE per 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 privilegio EXECUTE su DBMS_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.

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

  2. Eseguire la procedura DBMS_CLOUD.BULK_DOWNLOAD per 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 privilegio EXECUTE su DBMS_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.

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

  2. Eseguire la procedura DBMS_CLOUD.BULK_UPLOAD per 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 privilegio EXECUTE su DBMS_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_name nell'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 READ sull'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.

  1. Creare una credenziale per accedere allo storage degli oggetti cloud.

    Il nome della credenziale viene specificato con il parametro credential_name.

    Il valore credential_name può essere NULL per l'URI bucket pubblico, preautenticato o prefirmato.

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL.

  2. Eseguire la procedura DBMS_CLOUD.BULK_DELETE per 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 privilegio EXECUTE su DBMS_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.

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.

Per informazioni sulla cancellazione della tabella user_load_operations, vedere Procedura DELETE_ALL_OPERATIONS.

Contenuto correlato

DBMS_CLOUD per la gestione dei file di massa