DBMS_CLOUD Subprogrammi e API REST

In questa sezione vengono descritti i programmi secondari DBMS_CLOUD e le API REST forniti con Autonomous Database.

Nota

Per eseguire i sottoprogrammi DBMS_CLOUD con un utente diverso da ADMIN, è necessario concedere i privilegi EXECUTE a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere privilegi a adb_user:
GRANT EXECUTE ON DBMS_CLOUD TO adb_user;

Il pacchetto DBMS_CLOUD è costituito dai seguenti elementi:

DBMS_CLOUD per Access Management

Sottoprogrammi per la gestione delle credenziali all'interno del pacchetto DBMS_CLOUD, inclusi la creazione, l'eliminazione e l'aggiornamento delle credenziali.

Sottoprogramma Descrizione

Procedura CREATE_CREDENTIAL

Questa procedura memorizza le credenziali del servizio cloud in Autonomous Database.

Procedura DROP_CREDENTIAL

Questa procedura rimuove una credenziale esistente da Autonomous Database.

Procedura REFRESH_VAULT_CREDENTIAL

Questa procedura aggiorna immediatamente il segreto vault di una credenziale segreta del vault per ottenere la versione più recente del segreto vault per l'indirizzo credential_name specificato in Autonomous Database.

Procedura UPDATE_CREDENTIAL

Questa procedura aggiorna gli attributi delle credenziali del servizio cloud in Autonomous Database.

Procedura CREATE_CREDENTIAL

Questa procedura memorizza le credenziali del servizio cloud in Autonomous Database.

Utilizzare le credenziali del servizio cloud memorizzate per accedere al servizio cloud per il caricamento dei dati, per eseguire query sui dati esterni residenti nel cloud o per altri casi quando si utilizzano procedure DBMS_CLOUD con un parametro credential_name. Questa procedura è sovraccaricata:

  • Utilizzare i parametri correlati a Oracle Cloud Infrastructure, tra cui: user_ocid, tenancy_ocid, private_key e fingerprint solo quando si utilizza l'autenticazione Oracle Cloud Infrastructure Signing Keys.

  • Utilizzare il parametro params per uno dei seguenti elementi:

    • Credenziali dei nomi delle risorse Amazon (ARN)

    • Credenziali Google Analytics o Google BigQuery

    • Credenziali segrete del vault da utilizzare con un vault supportato:

      • Oracle Cloud Infrastructure Vault
      • Vault di chiavi Azure
      • AWS Secrets Manager
      • GCP Secret Manager

Sintassi

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      user_ocid         IN VARCHAR2,
      tenancy_ocid      IN VARCHAR2,
      private_key       IN VARCHAR2,
      fingerprint       IN VARCHAR2,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name  IN VARCHAR2,
      params           IN CLOB DEFAULT);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da memorizzare. Il parametro credential_name deve essere conforme alle convenzioni di denominazione degli oggetti Oracle. Il parametro credential_name può essere definito come identificativo non racchiuso tra virgolette o come identificativo tra virgolette. Per ulteriori informazioni, vedere Regole di denominazione degli oggetti database.

username

Gli argomenti username e password insieme specificano le credenziali del servizio cloud. Vedere le note di utilizzo per informazioni su cosa specificare per username e password per i diversi servizi cloud.

password

Gli argomenti username e password insieme specificano le credenziali del servizio cloud.

comments

Specifica il testo del commento per la credenziale. Questo campo può essere utile per descrivere e distinguere le credenziali.

La lunghezza massima del commento è 3800 caratteri.

user_ocid

Specifica l'OCID dell'utente. Vedere Dove recuperare l'OCID della tenancy e l'OCID dell'utente per dettagli su come ottenere l'OCID dell'utente.

tenancy_ocid

Specifica l'OCID della tenancy. Per informazioni dettagliate su come ottenere l'OCID della tenancy e l'OCID dell'utente, vedere Dove recuperare l'OCID della tenancy.

private_key

Specifica la chiave privata generata. Le chiavi private generate con una passphrase non sono supportate. È necessario generare la chiave privata senza una passphrase. Per informazioni dettagliate sulla generazione di una coppia di chiavi in formato PEM, vedere Come generare una chiave di firma API.

fingerprint

Specifica un'impronta digitale. Dopo che una chiave pubblica generata è stata caricata nell'account dell'utente, l'impronta digitale viene visualizzata nella console. Utilizzare l'impronta visualizzata per questo argomento. Per ulteriori dettagli, vedere Come ottenere l'impronta digitale della chiave e Come generare una chiave di firma API.

params

Specifica i parametri delle credenziali per uno dei seguenti elementi:

  • Credenziali dei nomi delle risorse Amazon (ARN)

  • Credenziali Google Analytics o Google BigQuery

  • Credenziali segrete del vault da utilizzare con credenziali di tipo nome utente/password in cui memorizzare la password in un vault supportato:

    • Oracle Cloud Infrastructure Vault

    • Vault di chiavi Azure

    • AWS Secrets Manager

    • GCP Secret Manager

    Per creare una credenziale segreta del vault, è necessario disporre del privilegio EXECUTE sul pacchetto DBMS_CLOUD.

Note sull'uso

  • Questa operazione memorizza le credenziali nel database in un formato cifrato.

  • È possibile visualizzare le credenziali nello schema eseguendo una query sulla tabella user_credentials.

  • È possibile visualizzare i commenti delle credenziali nello schema eseguendo una query sulla tabella user_credentials. Ad esempio:

    SELECT comments FROM user_credentials
            WHERE credential_name = 'MY_CRED';
  • L'utente ADMIN può visualizzare tutte le credenziali eseguendo una query sulla tabella dba_credentials.

  • È necessario creare le credenziali solo una volta, a meno che le credenziali del servizio cloud non vengano modificate. Una volta memorizzate le credenziali, è possibile utilizzare lo stesso nome credenziale per le procedure DBMS_CLOUD che richiedono un parametro credential_name.

  • Questa procedura è sovraccaricata. Se si fornisce uno degli attributi di autenticazione basati su chiave, user_ocid, tenancy_ocid, private_key o fingerprint, la chiamata viene considerata una credenziale basata sulla chiave di firma di Oracle Cloud Infrastructure.

  • È possibile elencare le credenziali dalla vista ALL_CREDENTIALS. Ad esempio, eseguire il comando seguente per elencare le credenziali:

    SELECT credential_name, username, comments FROM all_credentials;

Credenziali di Oracle Cloud Infrastructure (token di autenticazione)

Per Oracle Cloud Infrastructure, username è il tuo nome utente Oracle Cloud Infrastructure. password è il token di autenticazione di Oracle Cloud Infrastructure. Vedere Utilizzo dei token di autenticazione.

Ad esempio:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

Utilizzare le credenziali basate su token di autenticazione durante l'autenticazione delle chiamate allo storage degli oggetti OCI. Per le chiamate a qualsiasi altro tipo di servizio cloud Oracle Cloud Infrastructure, utilizza le credenziali basate su chiave di firma di Oracle Cloud Infrastructure.

Per lo storage degli oggetti OCI, il valore del parametro username deve includere il dominio di Identity e il nome utente del profilo. È possibile trovare il dominio di Identity associato a un utente nella console di Oracle Cloud Infrastructure.

Ad esempio:

oracleidentitycloudservice/adb_user@example.com

Con il dominio di Identity predefinito non è necessario includere il nome di dominio Default. Ad esempio:

adb_user@example.com

Credenziali basate su chiave di firma di Oracle Cloud Infrastructure

Utilizza i parametri correlati alle chiavi di firma di Oracle Cloud Infrastructure, tra cui: user_ocid, tenancy_ocid, private_key e fingerprint con l'autenticazione Oracle Cloud Infrastructure Signing Keys.

Ad esempio:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

Le chiavi private generate con una passphrase non sono supportate. È necessario generare la chiave privata senza una passphrase. Per ulteriori informazioni, vedere Come generare una chiave di firma API.

Credenziali di Oracle Cloud Infrastructure Object Storage Classic

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage Classic, username è il nome utente di Oracle Cloud Infrastructure Classic e password è la password di Oracle Cloud Infrastructure Classic.

Credenziali Amazon Web Services (AWS)

Se i file di origine risiedono in Amazon S3 o si sta chiamando un'API AWS, username è l'ID della chiave di accesso AWS e password è la chiave di accesso segreta AWS. Vedere AWS Identity and Access Management.

Credenziali Microsoft Azure

Se i file di origine risiedono in Azure Blob Storage o Azure Data Lake Storage o si sta chiamando un'API di Azure, username è il nome dell'account di storage di Azure e password è una chiave di accesso dell'account di storage di Azure. Vedere Informazioni sugli account di storage di Azure.

Credenziali compatibili con Amazon S3

Servizio Informazioni sulle credenziale

Oracle Cloud Infrastructure (chiavi segrete del cliente)

Se i file di origine risiedono in Oracle Cloud Infrastructure, è necessario utilizzare chiavi segrete cliente con URL compatibili con S3. Per ulteriori informazioni, vedere Utilizzo delle chiavi segrete del cliente.

Archiviazione Google Cloud

Se i file di origine risiedono in Google Cloud Storage o si stanno chiamando API di Google Cloud Storage, è necessario impostare un progetto Google predefinito e ottenere una chiave HMAC per creare credenziali per fornire URL compatibili con Google Cloud Storage S3. Utilizzare l'ID chiave HMAC come nome utente e il segreto HMAC come password.

Per ulteriori informazioni, vedere Projects e HMAC Keys.

Storage Hot Cloud Wasabi

Se i file di origine risiedono in Wasabi Hot Cloud Storage o si sta chiamando Wasabi Hot Cloud Storage API, è necessario utilizzare le chiavi di accesso per creare le credenziali per fornire URL compatibili con S3. Utilizzare la chiave di accesso allo storage cloud hot wasabi come nome utente e la chiave segreta dello storage cloud hot wasabi come password.

Per ulteriori informazioni, vedere Creazione di un set di chiavi di accesso API Wasabi.

Credenziali dei nomi delle risorse AWS Amazon (ARN)

Se i file di origine risiedono in Amazon S3 o si sta chiamando un'API AWS, utilizzare params per specificare i parametri per i nomi delle risorse Amazon (ARN).

Parametro Value
aws_role_arn

Specifica il nome della risorsa Amazon (ARN) che identifica il ruolo AWS.

Se questo parametro non viene fornito durante la creazione della credenziale, viene generato ORA-20041.

external_id_type

Se si desidera, impostare external_id_type in modo che utilizzi l'OCID del compartimento di Autonomous Database, l'OCID del database o l'OCID della tenancy fornendo uno dei seguenti valori: compartment_ocid, database_ocid o tenant_ocid.

Se questo parametro non viene specificato durante la creazione della credenziale, il valore predefinito è database_ocid.

Ad esempio:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name      => 'MY_CRED',
        params               => JSON_OBJECT(
               'aws_role_arn'      value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
               'external_id_type'  value 'database_ocid'));
END;
/

Token di accesso personale GitHub

Se i file di origine risiedono in un repository GitHub o si sta chiamando un'API GitHub, username è l'e-mail GitHub e password è il token di accesso personale GitHub. Per ulteriori informazioni, vedere Creazione di un token di accesso personale.

Ad esempio:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'MY_GITHUB_CRED',
    username => 'user@example.com',
    password => 'your_personal_access_token' );
END;
/

Credenziali Google Analytics o Google BigQuery

Se si accede a Google Analytics o Google BigQuery, utilizzare il parametro params per specificare i parametri delle credenziali di Google OAuth 2.0.

Parametro Value
gcp_oauth2

Specifica l'accesso OAuth 2.0 per Google Analytics o Google BigQuery con un oggetto JSON che include i seguenti parametri e i relativi valori:

  • client_id: per ottenere l'ID client, vedere Google API Console.

  • client_secret: per ottenere il segreto client, vedere Google API Console.

  • refresh_token: un token di aggiornamento consente all'applicazione di ottenere nuovi token di accesso.

Per ulteriori informazioni sulle credenziali di Google OAuth, vedere Utilizzo di OAuth 2.0 per accedere alle API di Google.

Ad esempio:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
      credential_name => 'GOOGLE_BIGQUERY_CRED',
      params => JSON_OBJECT('gcp_oauth2' value 
                                  JSON_OBJECT(
                                       'client_id'     value 'client_id',
                                       'client_secret' value 'client_secret',
                                       'refresh_token' value 'refresh_token' )));
END;
/

Credenziali segrete vault con Oracle Cloud Infrastructure Vault

Per creare le credenziali segrete del vault con Oracle Cloud Infrastructure Vault, utilizzare il parametro params per specificare i parametri richiesti:

  • username: specifica il nome utente di qualsiasi tipo di credenziale nome utente/password, ad esempio il nome utente della password Swift OCI. Ad esempio, se si dispone di una credenziale Swift con nome utente "scott" e password "password", fornire "scott" come parametro username.

  • secret_id: è l'ID segreto del vault. Specificare il valore secret_id come OCID segreto vault. Per ulteriori informazioni, vedere Panoramica del vault.

  • region: parametro facoltativo che specifica l'identificativo dell'area cloud oracle. L'area, se specificata, indica la posizione in cui si trova il segreto di Oracle Cloud Infrastructure Vault.

    Per impostazione predefinita, CREATE_CREDENTIAL utilizza region mappato dalla chiave area in secret_id. Un esempio di area è us-ashburn-1.

    Per un elenco completo delle aree, vedere Aree e domini di disponibilità.

Ad esempio:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OCI_SECRET_CRED',
    params => JSON_OBJECT( 
                'username'   value 'scott',
                'region'     value 'us-ashburn-1',
                'secret_id'  value 'ocid1.vaultsecret.co1.ap-mumbai-1.example..aaaaaaaauq5ok5nq3bf2vwetkpqsoa'));
END;
/

Note per l'uso di un segreto di Oracle Cloud Infrastructure Vault per memorizzare i segreti del vault:

  • Quando utilizzi un Oracle Cloud Infrastructure Vault, nell'istanza di Autonomous Database è necessario abilitare l'autenticazione del principal con DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL.
  • In Oracle Cloud Infrastructure è necessario specificare un criterio per il principal risorsa per accedere al segreto.

Per creare una credenziale segreta del vault, è necessario disporre del privilegio EXECUTE sul pacchetto DBMS_CLOUD.

Credenziali segrete vault con Azure Key Vault

Per creare le credenziali di Azure Key Vault, utilizzare il parametro params per specificare i parametri richiesti:

  • username: specifica il nome utente associato alla chiave.

  • secret_id: specifica il nome del segreto.

  • azure_vault_name: specifica il nome del vault in cui si trova il segreto.

Per ulteriori informazioni, vedere Creare un vault di chiavi.

Per creare una credenziale segreta del vault, è necessario disporre del privilegio EXECUTE sul pacchetto DBMS_CLOUD.

Credenziali segrete vault con AWS Secrets Manager

Per creare le credenziali segrete del vault con AWS Secrets Manager, utilizzare il parametro params per specificare i parametri richiesti:

  • username: specifica la chiave di accesso di AWS Secrets Manager.

  • secret_id: AWS Secrets Manager AWS ARN.

  • region: (facoltativo) specifica la regione di servizio AWS in cui si trovano il vault e il segreto. Un esempio dell'area AWS è "us-east-2". Il valore predefinito region è l'area specificata con l'ARN nel parametro secret_id.

    Per ulteriori informazioni, vedere Gestione delle aree AWS.

    Per creare una credenziale segreta del vault, è necessario disporre del privilegio EXECUTE sul pacchetto DBMS_CLOUD.

Credenziali segrete vault con GCP Secret Manager

Per creare le credenziali di GCP Secret Manager, utilizzare il parametro params per specificare i parametri richiesti:

  • username: specifica il nome utente associato al segreto.

  • secret_id: è il nome segreto.

  • gcp_project_id: specifica l'ID del progetto in cui si trova il segreto.

Per ulteriori informazioni, vedere Secret Manager.

Per creare una credenziale segreta del vault, è necessario disporre del privilegio EXECUTE sul pacchetto DBMS_CLOUD.

Procedura DROP_CREDENTIAL

Questa procedura rimuove una credenziale esistente da Autonomous Database.

Sintassi

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da rimuovere.

Procedura REFRESH_VAULT_CREDENTIAL

Questa procedura aggiorna il segreto vault di una credenziale segreta del vault.

Questa procedura consente di aggiornare immediatamente il segreto vault di una credenziale segreta del vault per ottenere la versione più recente del segreto vault per il file credential_name specificato.

Sintassi

DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL (
    credential_name   IN VARCHAR2);

Parametri

Parametro Descrizione

credential_name

Il nome della credenziale da aggiornare.

Note sull'uso

  • L'utente ADMIN può visualizzare tutte le credenziali eseguendo una query sulla tabella dba_credentials.

  • È possibile elencare le credenziali dalla vista ALL_CREDENTIALS. Ad esempio, eseguire il comando seguente per elencare le credenziali:

    SELECT credential_name, username, comments FROM all_credentials;

Esempio

BEGIN
  DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL(
     credential_name => 'AZURE_SECRET_CRED'); 
END;
/

Procedura UPDATE_CREDENTIAL

Questa procedura aggiorna un attributo con un nuovo valore per un valore credential_name specificato.

Utilizzare le credenziali memorizzate per il caricamento dei dati, per eseguire query sui dati esterni che risiedono nel cloud o ovunque si utilizzino procedure DBMS_CLOUD con un parametro credential_name.

Sintassi

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale da aggiornare.

attribute

Nome dell'attributo da aggiornare.

Per una credenziale di tipo nome utente/password, i valori attribute validi sono: USERNAME e PASSWORD.

Per una credenziale per un ARN Amazon, i valori validi di attribute sono: aws_role_arn e external_id_type.

Per una credenziale per Google BigQuery o Google Analytics, i valori validi di attribute sono: client_id, client_secret e refresh_token.

A seconda del vault in uso, per le credenziali segrete del vault i valori attribute validi sono:
  • Oracle Cloud Infrastructure Vault: secret_id, region

  • Key Vault di Azure: secret_id, azure_vault_name

  • AWS Secrets Manager: secret_id, region

  • GCP Secret Manager: secret_id, gcp_project_id

Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

value

Il nuovo valore dell'attributo specificato.

Note sull'uso

  • Il valore del nome utente fa distinzione tra maiuscole e minuscole. Non può contenere virgolette doppie o spazi.

  • L'utente ADMIN può visualizzare tutte le credenziali eseguendo una query su dba_credentials.

  • È necessario creare le credenziali solo una volta, a meno che le credenziali del servizio cloud non vengano modificate. Una volta memorizzate le credenziali, è possibile utilizzare lo stesso nome credenziale per le procedure DBMS_CLOUD che richiedono un parametro credential_name.

  • È possibile elencare le credenziali dalla vista ALL_CREDENTIALS. Ad esempio, eseguire il comando seguente per elencare le credenziali:

    SELECT credential_name, username, comments FROM all_credentials;

Esempi

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/

DBMS_CLOUD per oggetti e file

Sottoprogrammi per la gestione di oggetti e file all'interno del pacchetto DBMS_CLOUD.

Sottoprogramma Descrizione

Procedura COPY_COLLECTION

Questa procedura carica i dati nella raccolta SODA esistente dallo storage degli oggetti cloud o dai file in una directory.

Procedura COPY_DATA

Questa procedura carica i dati nelle tabelle Autonomous Database esistenti dallo storage degli oggetti cloud o dai file in una directory.

COPY_DATA Procedura per file Avro, ORC o Parquet

This procedure with the format parameter type set to the value orc, parquet, or avro loads data into existing Autonomous Database tables from ORC, Parquet, or Avro files in the Cloud or from ORC, Parquet, or Avro files in a directory.

Analogamente ai file di testo, i dati vengono copiati dal file ORC, Parquet o Avro di origine nella tabella interna preesistente.

Procedura COPY_OBJECT

Questa procedura copia i file da un bucket di storage degli oggetti cloud a un altro.
Procedura CREATE_CLOUD_TABLE

Questa procedura crea una tabella cloud in cui tutti i dati persistenti vengono memorizzati nello storage degli oggetti gestito da Oracle.

Procedura CREATE_EXTERNAL_TABLE

Questa procedura crea una tabella esterna sui file nel cloud o sui file in una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.
CREATE_EXTERNAL_TABLE Procedura per Apache Iceberg

Questa procedura crea tabelle esterne per le tabelle Apache Iceberg nelle configurazioni supportate.

CREATE_EXTERNAL_TABLE Procedura per file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore parquet, orc o avro crea una tabella esterna con file in formato Parquet, ORC o Avro nel cloud o in una directory.

Ciò consente di eseguire query su dati esterni da Autonomous Database.

Procedura CREATE_EXTERNAL_PART_TABLE

Questa procedura crea una tabella partizionata esterna nei file nel cloud. Ciò consente di eseguire query su dati esterni da Autonomous Database.

Procedura CREATE_EXTERNAL_TEXT_INDEX

Questa procedura crea un indice di testo nei file dell'area di memorizzazione degli oggetti.

Procedura CREATE_HYBRID_PART_TABLE

Questa procedura crea una tabella con partizionamento ibrido. Ciò consente di eseguire query su dati con partizionamento ibrido da Autonomous Database.

Procedura DELETE_ALL_OPERATIONS

Questa procedura cancella tutte le operazioni di caricamento dati registrate nella tabella user_load_operations nello schema oppure cancella tutte le operazioni di caricamento dati del tipo specificato, come indicato con il parametro type.

Procedura DELETE_FILE

Questa procedura rimuove il file specificato dalla directory specificata in Autonomous Database

Procedura DELETE_OBJECT

Questa procedura elimina l'oggetto specificato nell'area di memorizzazione degli oggetti.

Procedura DELETE_OPERATION

Questa procedura accetta un valore operation_id come input ed elimina i log associati al valore operation_id specificato.

Procedura DROP_EXTERNAL_TEXT_INDEX

Questa procedura elimina l'indice di testo nei file dell'area di memorizzazione degli oggetti.

Procedura EXPORT_DATA

Questa procedura esporta i dati da Autonomous Database in file nel cloud in base al risultato di una query. Il form sovraccarico consente di utilizzare il parametro operation_id. A seconda dell'opzione type del parametro format specificata, la procedura esporta le righe nell'area di memorizzazione degli oggetti cloud come testo con opzioni CSV, JSON, Parquet o XML oppure utilizzando il driver di accesso ORACLE_DATAPUMP per scrivere i dati in un file di dump.

GET_OBJECT Procedura e funzione

Questa procedura è sovraccaricata. Il form di procedura legge un oggetto dallo storage degli oggetti cloud e lo copia in Autonomous Database. Il form funzione legge un oggetto dallo storage degli oggetti cloud e restituisce un valore BLOB ad Autonomous Database.

Funzione LIST_FILES

Questa funzione elenca i file nella directory specificata. I risultati includono i nomi dei file e i metadati aggiuntivi relativi ai file, ad esempio la dimensione del file in byte, l'indicatore orario di creazione e l'indicatore orario dell'ultima modifica.

Funzione LIST_OBJECTS

Questa funzione elenca gli oggetti nella posizione specificata nell'area di memorizzazione degli oggetti. I risultati includono i nomi degli oggetti e i metadati aggiuntivi relativi agli oggetti, ad esempio dimensione, checksum, indicatore orario di creazione e indicatore orario dell'ultima modifica.

Procedura MOVE_OBJECT

Questa procedura sposta un oggetto da un bucket di storage degli oggetti cloud a un altro.

Procedura PUT_OBJECT

Questa procedura è sovraccaricata. In un modulo, la procedura copia un file da Autonomous Database allo storage degli oggetti cloud. In un altro formato, la procedura copia un elemento BLOB da Autonomous Database nello storage degli oggetti cloud.

Procedura SYNC_EXTERNAL_PART_TABLE

Questa procedura semplifica l'aggiornamento di una tabella partizionata esterna dai file nel cloud. Eseguire questa procedura ogni volta che vengono aggiunte nuove partizioni o quando le partizioni vengono rimosse dall'origine dell'area di memorizzazione degli oggetti per la tabella partizionata esterna.

Procedura VALIDATE_EXTERNAL_TABLE

Questa procedura convalida i file di origine per una tabella esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database.

Procedura VALIDATE_EXTERNAL_PART_TABLE

Questa procedura convalida i file di origine per una tabella partizionata esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database.

Procedura VALIDATE_HYBRID_PART_TABLE

Questa procedura convalida i file di origine per una tabella con partizionamento ibrido, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella ibrida in una tabella badfile in Autonomous Database.

Procedura COPY_COLLECTION

Questa procedura carica i dati in una raccolta SODA dallo storage degli oggetti cloud o da una directory. Se la raccolta SODA specificata non esiste, la procedura la crea. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

Parametri

Parametro Descrizione

collection_name

Il nome della raccolta SODA in cui verranno caricati i dati. Se esiste già una raccolta con questo nome, i dati specificati verranno caricati, altrimenti verrà creata una nuova raccolta.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole di URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

Directory

È possibile specificare una directory e uno o più nomi di file oppure utilizzare un elenco separato da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome della directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Nel nome del file viene fatta distinzione tra maiuscole e minuscole.

Le espressioni regolari non sono supportate quando si specificano i nomi dei file in una directory. È possibile utilizzare solo caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, mentre il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare un elenco separato da virgole: ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Usare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con un' virgoletta (').

format

Le opzioni che descrivono il formato dei file di origine. Queste opzioni sono specificate come stringa JSON.

I formati supportati sono: characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays, keyassignment e keypath.

Oltre ai formati menzionati per i dati JSON, Autonomous Database supporta anche altri formati. Per la lista degli argomenti di formato supportati da Autonomous Database, vedere DBMS_CLOUD Opzioni di formato del package.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'  
            );
END;
/

Procedura COPY_DATA

Questa procedura carica i dati nelle tabelle Autonomous Database esistenti dai file nel cloud o dai file in una directory. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

Parametri

Parametro Descrizione

table_name

Il nome della tabella di destinazione nel database. La tabella di destinazione deve essere creata prima di eseguire COPY_DATA.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Questo parametro non viene utilizzato quando si specifica una directory o un URL collegamento ipertestuale tabella con file_uri_list.

file_uri_list

Questo parametro specifica uno dei seguenti elementi:

  • Lista delimitata da virgole degli URI del file di origine

  • Lista delimitata da virgole di URL collegamento ipertestuale tabella

  • Una o più directory e file sorgente

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

URI file di origine cloud

Questo parametro specifica una lista delimitata da virgole di URI dei file di origine oppure una o più directory e file di origine.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

URL collegamento ipertestuale tabella

È possibile utilizzare un collegamento ipertestuale tabella nei modi riportati di seguito.
  • Specificare un singolo URL collegamento ipertestuale tabella.

    Ad esempio:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Specificare una lista delimitata da virgole di URL collegamento ipertestuale tabella, è necessario assicurarsi che tutti i collegamenti ipertestuali tabella inclusi abbiano gli stessi nomi colonna, ordine colonna e tipi di dati colonna.

    Ad esempio:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Per ulteriori informazioni, vedere Informazioni sui collegamenti ipertestuali delle tabelle in Autonomous Database e CREATE_URL Procedure.

Directory

È possibile specificare una directory e uno o più nomi di file oppure utilizzare un elenco separato da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome della directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Nel nome del file viene fatta distinzione tra maiuscole e minuscole.

Le espressioni regolari non sono supportate quando si specificano i nomi dei file in una directory. È possibile utilizzare solo caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare un elenco separato da virgole: ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Usare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con un' virgoletta (').

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dalla definizione della tabella di destinazione. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni su field_list, vedere Oracle® Database Utilities.

Se il valore dell'opzione type del parametro format è json, questo parametro viene ignorato.

Per un esempio che utilizza field_list, vedere CREATE_EXTERNAL_TABLE Procedure.

format

Opzioni che descrivono il formato dei file di origine, log e non validi. Per l'elenco delle opzioni e per la specifica dei valori, vedere DBMS_CLOUD Package Format Options.

Per le opzioni di formato dei file Avro, ORC o Parquet, vedere DBMS_CLOUD Opzioni di formato dei pacchetti per Avro, ORC o Parquet.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Nota per l'uso

Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca prima il carattere \r\n della nuova riga di Windows. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se non viene trovato un carattere di nuova riga di Windows, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e se ne trova uno utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di delimitatori di record diversi, è possibile che si verifichi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

Per informazioni sull'opzione di formato recorddelmiter, vedere DBMS_CLOUD Package Format Options.

Esempi

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

COPY_DATA Procedura per file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore avro, orc o parquet carica i dati nelle tabelle Autonomous Database esistenti dai file Avro, ORC o Parquet nel cloud o dai file in una directory.

Analogamente ai file di testo, i dati vengono copiati dal file Avro, ORC o Parquet di origine nella tabella interna preesistente.

Sintassi

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella di destinazione nel database. La tabella di destinazione deve essere creata prima di eseguire COPY_DATA.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole di URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

Directory

È possibile specificare una directory e uno o più nomi di file oppure utilizzare un elenco separato da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome della directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Nel nome del file viene fatta distinzione tra maiuscole e minuscole.

Le espressioni regolari non sono supportate quando si specificano i nomi dei file in una directory. È possibile utilizzare solo caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare un elenco separato da virgole: ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Usare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con un' virgoletta (').

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

field_list

Ignorato per i file Avro, ORC o Parquet.

I campi nell'origine corrispondono alle colonne della tabella esterna per nome. I tipi di dati di origine vengono convertiti nel tipo di dati della colonna della tabella esterna.

Per i file ORC, vedere DBMS_CLOUD Package ORC to Oracle Data Type Mapping.

Per i file Parquet, vedere DBMS_CLOUD Package Parquet to Oracle Data Type Mapping per i dettagli sul mapping.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli sul mapping.

format

Le opzioni che descrivono il formato dei file di origine. Per i file Avro, ORC o Parquet sono supportate solo due opzioni: vedere DBMS_CLOUD Opzioni formato pacchetto per Avro, ORC o Parquet.

Note sull'uso

  • Come per altri file di dati, i caricamenti di dati Avro, ORC e Parquet generano log visualizzabili nelle tabelle dba_load_operations e user_load_operations. Ogni operazione di caricamento aggiunge un record a dba[utente]_load_operations che indica la tabella contenente i log.

    La tabella di log fornisce informazioni di riepilogo sul caricamento.

  • Per Avro, ORC o Parquet, se il parametro format type è impostato sul valore avro, orc o parquet, la tabella BADFILE_TABLE è sempre vuota.

    • Per i file Parquet, gli errori di vincolo PRIMARY KEY restituiscono un errore ORA.

    • Se i dati di una colonna rilevano un errore di conversione, ad esempio la colonna di destinazione non è sufficientemente grande da contenere il valore convertito, il valore della colonna viene impostato su NULL. Questo non produce un record rifiutato.

Procedura COPY_OBJECT

Questa procedura copia un oggetto da un bucket o una cartella di storage degli oggetti cloud a un altro.

Il bucket o la cartella di origine e di destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un provider diverso.

Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Per impostazione predefinita, il nome della credenziale di origine viene utilizzato anche dalla posizione di destinazione quando non viene fornito il nome della credenziale di destinazione.

Sintassi

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud di origine.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_object_uri

Specifica l'URI che punta al bucket o alla posizione della cartella di storage degli oggetti di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_object_uri

Specifica l'URI dell'area di memorizzazione degli oggetti di destinazione.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore target_credential_name, target_object_uri viene impostato sul valore source_credential_name.

Esempio

BEGIN 
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedura CREATE_CLOUD_TABLE

Questa procedura crea una tabella cloud. Tutti i dati delle tabelle cloud vengono memorizzati nello storage degli oggetti gestito da Oracle (le tabelle cloud memorizzano solo i metadati nel database).

Sintassi

DBMS_CLOUD.CREATE_CLOUD_TABLE (
    table_name       IN VARCHAR2,
    column_list      IN CLOB,
    params           IN CLOB);

Parametri

Parametro Descrizione

table_name

Nome della tabella cloud.

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella cloud.

Note sull'uso

  • Attributi DEFAULT: column_list può includere la clausola DEFAULT, che funziona come la clausola DEFAULT in un normale CREATE TABLE. Per informazioni sul funzionamento della clausola DEFAULT, vedere CREATE TABLE.

  • Utilizzare DROP TABLE per eliminare una tabella cloud. Le tabelle cloud non supportano il cestino.

    Ad esempio:

    DROP TABLE CLOUD_TAB1; 
  • È possibile concedere privilegi SELECT, INSERT e UPDATE per una tabella cloud. Non è possibile concedere altri privilegi a una tabella cloud.

    Per ulteriori informazioni, vedere Configurazione dell'autorizzazione di privilegi e ruoli.

Esempi

EXEC DBMS_CLOUD.CREATE_CLOUD_TABLE( 'CLOUD_TAB1', 'I INTEGER, J INTEGER' );
BEGIN
  DBMS_CLOUD.CREATE_CLOUD_TABLE(
   table_name  => 'CLOUD_TABLE_WITH_DEFAULT',
   column_list => 'I INTEGER,
                   A VARCHAR2(32) DEFAULT ''ABC''' );
END;
/

Procedura CREATE_EXTERNAL_PART_TABLE

Questa procedura crea una tabella partizionata esterna sui file nel cloud o dai file in una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Specifica la clausola di partizionamento completa, incluse le informazioni sulla posizione per le singole partizioni.

Se si utilizza il parametro partitioning_clause, il parametro file_uri_list non è consentito.

file_uri_list

Questo parametro specifica una lista delimitata da virgole di URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Se si utilizza il parametro file_uri_list, il parametro partitioning_clause non è consentito.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna. Questo parametro prevede i seguenti requisiti, a seconda del tipo di file di dati specificato con il parametro file_uri_list:

  • Il parametro column_list è obbligatorio con i file non strutturati. Utilizzando file non strutturati, ad esempio con file di testo CSV, il parametro column_list deve specificare tutti i nomi di colonna e i tipi di dati all'interno del file di dati, nonché le colonne di partizione derivate dal nome dell'oggetto.

  • Il parametro column_list è facoltativo con i file strutturati. Ad esempio, con i file di dati Avro, ORC o Parquet, column_list non è obbligatorio. Se il parametro column_list non è incluso, l'opzione format del parametro partition_columns deve includere specifiche sia per i nomi di colonna (name) che per i tipi di dati (type).

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni su field_list, vedere Oracle® Database Utilities.

format

L'opzione di formato partition_columns specifica i nomi delle colonne DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE e i tipi di dati delle colonne di partizione quando le colonne di partizione vengono derivate dal percorso del file, a seconda del tipo di file di dati, strutturato o non strutturato:

  • Quando DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE include il parametro column_list e i file di dati non sono strutturati, ad esempio con i file di testo CSV, partition_columns non include il tipo di dati. Ad esempio, utilizzare un formato simile al seguente per questo tipo di specifica partition_columns:

    '"partition_columns":["state","zipcode"]'

    Il tipo di dati non è obbligatorio perché è specificato nel parametro DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list.

  • Se DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE non include il parametro column_list e i file di dati sono strutturati, ad esempio i file Avro, ORC o Parquet, l'opzione partition_columns include sia il nome della colonna, la sottoclausola name, sia il tipo di dati, sottoclausola type. Ad esempio, viene mostrata una specifica partition_columns:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

Se i file di dati non sono strutturati e la sottoclausola type è specificata con partition_columns, la sottoclausola type viene ignorata.

Per i nomi degli oggetti non basati sul formato hive, l'ordine delle colonne specificate partition_columns deve corrispondere all'ordine in cui appaiono nel nome dell'oggetto nel percorso del file specificato nel parametro file_uri_list.

Per visualizzare tutte le opzioni del parametro format che descrivono il formato dei file di origine, vedere DBMS_CLOUD Package Format Options.

Note sull'uso

  • Non è possibile chiamare questa procedura con i parametri partitioning_clause e file_uri_list.

  • La specifica del parametro column_list è facoltativa con i file di dati strutturati, inclusi i file di dati Avro, Parquet o ORC. Se column_list non viene specificato, l'opzione partition_columns del parametro format deve includere sia name che type.

  • Il parametro column_list è obbligatorio con file di dati non strutturati, ad esempio file di testo CSV.

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE supporta i file partizionati esterni nei servizi di storage degli oggetti cloud supportati, tra cui:
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage o Azure Data Lake Storage

    • Amazon S3

    • Compatibile con Amazon S3, tra cui: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • Repository GitHub

    Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE supporta i file partizionati esterni nelle directory, sia in un file system locale che in un file system di rete.

  • Quando si chiama DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE con il parametro file_uri_list, i tipi di colonne specificati nel nome file dell'area di memorizzazione degli oggetti cloud devono essere uno dei tipi seguenti:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca prima il carattere \r\n della nuova riga di Windows. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se non viene trovato un carattere di nuova riga di Windows, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e se ne trova uno utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di delimitatori di record diversi, è possibile che si verifichi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

    Per informazioni sull'opzione di formato recorddelmiter, vedere DBMS_CLOUD Package Format Options.

  • Le tabelle partizionate esterne create con DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE includono due colonne invisibili file$path e file$name. Queste colonne consentono di identificare il file da cui proviene un record.

    • file$path: specifica il testo del percorso del file fino all'inizio del nome dell'oggetto.

    • file$name: specifica il nome dell'oggetto, incluso tutto il testo che segue il nome del bucket.

Esempi

Esempio che utilizza il parametro partitioning_clause:

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',  
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) location
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location 
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/  


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR 
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );                       
END;                     
/

Esempio di utilizzo dei parametri file_uri_list e column_list con file di dati non strutturati:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv', 
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)', 
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/ 

Esempio di utilizzo del parametro file_uri_list senza il parametro column_list con file di dati strutturati:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          => 
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value 
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

Procedura CREATE_EXTERNAL_TABLE

Questa procedura crea una tabella esterna su file nel cloud o da file in una directory. Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Questo parametro non viene utilizzato quando si specifica una directory o un URL collegamento ipertestuale tabella con file_uri_list.

file_uri_list

Questo parametro specifica uno dei seguenti elementi:

  • Lista delimitata da virgole degli URI del file di origine.

  • Lista delimitata da virgole di URL collegamento ipertestuale tabella.

  • Uno o più file sorgente.

URI file di origine cloud

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

URL collegamento ipertestuale tabella

È possibile utilizzare un URL collegamento ipertestuale tabella per creare una tabella esterna nei modi riportati di seguito.
  • Specificare un singolo URL collegamento ipertestuale tabella Autonomous Database. È inoltre possibile applicare filtri e clausole ai dati quando si leggono i dati dalla tabella. Ad esempio, è possibile filtrare i dati utilizzando la clausola WHERE o ordinarli utilizzando la clausola ORDER BY.

    Ad esempio:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Specificare una lista delimitata da virgole di URL dei collegamenti ipertestuali delle tabelle di Autonomous Database. È necessario assicurarsi che tutti i collegamenti ipertestuali delle tabelle inclusi abbiano gli stessi nomi di colonna, ordine di colonna e tipi di dati delle colonne nello stesso schema.

    Ad esempio:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Nota

Gli URL dei collegamenti ipertestuali tabella non supportano i caratteri jolly.
Per ulteriori informazioni, vedere Informazioni sui collegamenti ipertestuali delle tabelle in Autonomous Database e CREATE_URL Procedure.
Directory

È possibile specificare una directory e uno o più nomi di file oppure utilizzare un elenco separato da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome della directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Nel nome del file viene fatta distinzione tra maiuscole e minuscole.

Le espressioni regolari non sono supportate quando si specificano i nomi dei file in una directory. È possibile utilizzare solo caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare un elenco separato da virgole: ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Usare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con un' virgoletta (').

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è uguale alla clausola field_list nelle normali tabelle esterne di Oracle Database. Per ulteriori informazioni su field_list, vedere ORACLE_LOADER Access Driver field_list nella clausola field_definitions in Oracle Database Utilities.

format

Le opzioni che descrivono il formato dei file di origine. Per l'elenco delle opzioni e per la specifica dei valori, vedere DBMS_CLOUD Package Format Options.

Per i file in formato Avro, ORC o Parquet, vedere CREATE_EXTERNAL_TABLE Procedura per i file Avro, ORC o Parquet.

Note sull'uso

  • La procedura DBMS_CLOUD.CREATE_EXTERNAL_TABLE supporta i file partizionati esterni nelle origini di storage degli oggetti cloud supportate, tra cui:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage o Azure Data Lake Storage

    • Amazon S3

    • Compatibile con Amazon S3, tra cui: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • Repository GitHub

    • Oracle Cloud Infrastructure Object Storage con URL collegamento ipertestuale tabella

    La credenziale è una proprietà a livello di tabella, pertanto i file esterni devono trovarsi nella stessa area di memorizzazione degli oggetti.

    Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

  • Il delimitatore di record predefinito è detected newline. Con detected newline, DBMS_CLOUD tenta di trovare automaticamente il carattere di nuova riga corretto da utilizzare come delimitatore di record. DBMS_CLOUD cerca prima il carattere \r\n della nuova riga di Windows. Se trova il carattere di nuova riga di Windows, viene utilizzato come delimitatore di record per tutti i file della procedura. Se non viene trovato un carattere di nuova riga di Windows, DBMS_CLOUD cerca il carattere di nuova riga UNIX/Linux \n e se ne trova uno utilizza \n come delimitatore di record per tutti i file della procedura. Se i file di origine utilizzano una combinazione di delimitatori di record diversi, è possibile che si verifichi un errore, ad esempio "KUP-04020: found record longer than buffer size supported". In questo caso, è necessario modificare i file di origine per utilizzare lo stesso delimitatore di record oppure specificare solo i file di origine che utilizzano lo stesso delimitatore di record.

    Per informazioni sull'opzione di formato recorddelimiter, vedere DBMS_CLOUD Package Format Options.

Esempio

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(   
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',   
      credential_name =>'OBJ_STORE_CRED',   
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),   
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',                   
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,                 
                     ACTUAL_MIN_TEMP,                 
                     ACTUAL_MAX_TEMP,                 
                     AVERAGE_MIN_TEMP,                    
                     AVERAGE_MAX_TEMP,     
                     AVERAGE_PRECIPITATION',   
      column_list => 'REPORT_DATE DATE,   
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,  
                     ACTUAL_MIN_TEMP NUMBER,  
                     ACTUAL_MAX_TEMP NUMBER,  
                     AVERAGE_MIN_TEMP NUMBER,   
                     AVERAGE_MAX_TEMP NUMBER,                  
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/ 

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where         
   actual_mean_temp > 69 and actual_mean_temp < 74

CREATE_EXTERNAL_TABLE Procedura per Apache Iceberg

Questa procedura crea tabelle esterne per le tabelle Apache Iceberg nelle configurazioni supportate.

Sono supportate queste configurazioni specifiche:

Sintassi

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Nome della credenziale utilizzata per accedere ai file di dati, ai file di metadati e al catalogo Iceberg (se utilizzato).

Per le configurazioni AWS e OCI, le credenziali devono essere create come descritto nella procedura CREATE_CREDENTIAL.

Le credenziali dei nomi delle risorse AWS Amazon (ARN) non sono attualmente supportate.

file_uri_list

Deve essere NULL se viene specificato un catalogo Iceberg (vedere il parametro format di seguito). Se non si utilizza un catalogo iceberg, file_uri_list deve contenere l'URI del file di metadati iceberg.

column_list

Deve essere NULL, poiché i nomi e i tipi di colonna vengono derivati automaticamente dai metadati Iceberg.

I nomi delle colonne corrispondono ai nomi trovati nei file di dati sottostanti (Parquet, Avro, ORC). I tipi di dati Oracle vengono derivati utilizzando i mapping Parquet/Avro/ORC tra Iceberg e i tipi di dati Parquet, Avro e ORC. Pertanto, gli utenti non possono specificare column_list.

field_list

Deve essere NULL, poiché i nomi delle colonne e i tipi di dati vengono derivati automaticamente dai metadati Iceberg.

format

Il parametro format ha una struttura diversa a seconda del tipo di tabella Iceberg e quali informazioni vengono utilizzate per creare la tabella esterna, ad esempio informazioni provenienti da un Data Catalog o da un URI di metadati diretti.

Per ulteriori informazioni, vedere Supporto Iceberg sugli esempi di OCI Data Flow e DBMS_CLOUD Formati URI.

Parametro di formato di esempio per le tabelle AWS Iceberg che utilizzano un catalogo di colla AWS

Di seguito è riportato un parametro format di esempio durante la creazione di tabelle su una tabella AWS Iceberg utilizzando un catalogo di colla AWS.

format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg',
                   'protocol_config' value
                    json_object('iceberg_catalog_type' value 'aws_glue',
                                'iceberg_glue_region'  value 'glue region',
                                'iceberg_table_path'   value 'database_name.table_name'))); 
Dove il parametro access_protocol contiene un oggetto JSON con due elementi come indicato di seguito.
  • protocol_type: deve essere 'iceberg'
  • protocol_config: un oggetto JSON nidificato che specifica i dettagli del catalogo iceberg.
    • iceberg_catalog_type: deve essere 'aws_glue'
    • iceberg_glue_region: area del catalogo, ad esempio 'us-west-1'
    • iceberg_table_path: percorso glue database.glue table name.

Parametro di formato di esempio per la tabella AWS Iceberg che utilizza un URI di file di metadati

Di seguito è riportato un parametro format di esempio durante la creazione di tabelle su una tabella AWS Iceberg utilizzando un URI del file di metadati.
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Parametro di formato di esempio per la tabella OCI Iceberg che utilizza il catalogo HadoopCatalog

Di seguito è riportato un parametro format di esempio durante la creazione di tabelle su una tabella OCI Iceberg creata da OCI Data Flow utilizzando il catalogo HadoopCatalog.
format => json_object('access_protocol' value
       json_object('protocol_type'   value 'iceberg',
                   'protocol_config' value
                   json_object('iceberg_catalog_type'  value 'hadoop',
                               'iceberg_warehouse'     value '<OCI folder URI>',
                               'iceberg_table_path'    value 'database_name.table_name')));
Dove il parametro access_protocol contiene un oggetto JSON con due elementi come indicato di seguito.
  • protocol_type: deve essere 'iceberg'
  • protocol_config: un oggetto JSON nidificato che specifica i dettagli del catalogo iceberg.
    • iceberg_catalog_type: deve essere 'hadoop'
    • iceberg_warehouse: il percorso della directory warehouse utilizzato durante la generazione della tabella, in formato URI nativo.
    • iceberg_table_path: il percorso database_name.table name utilizzato durante la creazione della tabella.

Parametro di formato di esempio per la tabella OCI Iceberg che utilizza l'URI del file di metadati

Di seguito è riportato un parametro format di esempio durante la creazione di tabelle su una tabella OCI Iceberg utilizzando l'URI del file di metadati.
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Dove il parametro access_protocol contiene un oggetto JSON con un elemento come indicato di seguito.
  • protocol_type: deve essere 'iceberg'

CREATE_EXTERNAL_TABLE Procedura per file Avro, ORC o Parquet

Questa procedura con il parametro format type impostato sul valore avro, orc o parquet crea una tabella esterna con file in formato Avro, ORC o Parquet nel cloud o in una directory.

Ciò consente di eseguire query su dati esterni da Autonomous Database.

Sintassi

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Questo parametro non viene utilizzato quando si specifica una directory con file_uri_list.

file_uri_list

Questo parametro specifica una lista delimitata da virgole di URI dei file di origine oppure una o più directory e file di origine.

URI file di origine cloud

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE.

Questa opzione è supportata solo con tabelle esterne create su un file nello storage degli oggetti.

Ad esempio:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

Directory

È possibile specificare una directory e uno o più nomi di file oppure utilizzare un elenco separato da virgole di directory e nomi di file. Il formato per specificare una directory è:'MY_DIR:filename.ext'. Per impostazione predefinita, il nome della directory MY_DIR è un oggetto di database e non fa distinzione tra maiuscole e minuscole. Nel nome del file viene fatta distinzione tra maiuscole e minuscole.

Le espressioni regolari non sono supportate quando si specificano i nomi dei file in una directory. È possibile utilizzare solo caratteri jolly per specificare i nomi dei file in una directory. Il carattere "*" può essere utilizzato come caratteri jolly per più caratteri, il carattere "?" può essere utilizzato come caratteri jolly per un singolo carattere. Ad esempio:'MY_DIR:*" o 'MY_DIR:test?'

Per specificare più directory, utilizzare un elenco separato da virgole: ad esempio:'MY_DIR1:*, MY_DIR2:test?'

Usare le virgolette doppie per specificare un nome di directory con distinzione tra maiuscole e minuscole. Ad esempio:'"my_dir1":*, "my_dir2":Test?'

Per includere una virgoletta, utilizzare due virgolette. Ad esempio:'MY_DIR:''filename.ext'. Specifica che filename inizia con un' virgoletta (').

column_list

(Facoltativo) Se specificato, questo campo sostituisce il parametro format->schema che specifica che lo schema, le colonne e i tipi di dati vengono derivati automaticamente. Vedere il parametro di formato per i dettagli.

Quando si specifica column_list per l'origine Avro, ORC o Parquet, i nomi delle colonne devono corrispondere alle colonne trovate nel file. I tipi di dati Oracle devono essere mappati in modo appropriato ai tipi di dati Avro, ORC o Parquet.

Per i file Parquet, vedere DBMS_CLOUD Package Parquet to Oracle Data Type Mapping per i dettagli.

Per i file ORC, vedere DBMS_CLOUD Package ORC to Oracle Data Type Mapping per i dettagli.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli.

field_list

Ignorato per i file Avro, ORC o Parquet.

I campi nell'origine corrispondono alle colonne della tabella esterna per nome. I tipi di dati di origine vengono convertiti nel tipo di dati della colonna della tabella esterna.

Per i file ORC, vedere DBMS_CLOUD Package da ORC a Oracle Data Type Mapping

Per i file Parquet, vedere DBMS_CLOUD Package Parquet to Oracle Data Type Mapping per i dettagli.

Per i file Avro, vedere DBMS_CLOUD Package Avro to Oracle Data Type Mapping per i dettagli.

format

Per i file di origine Avro, ORC o Parquet type, vedere DBMS_CLOUD Opzioni formato pacchetto per Avro, ORC o Parquet per i dettagli.

Esempi di ORC

format => '{"type":"orc", "schema": "all"}'
format => json_object('type' value 'orc', 'schema' value 'first')

Esempi Avro

format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')

Esempi Parquet

format => '{"type":"parquet", "schema": "all"}'
format => json_object('type' value 'parquet', 'schema' value 'first')

Mapping nome colonna Avro, ORC o Parquet a nomi colonna Oracle

Per informazioni sul mapping dei nomi delle colonne e sull'uso della conversione dei nomi delle colonne in Oracle SQL, vedere DBMS_CLOUD Package Avro, ORC e Parquet to Oracle Column Name Mapping.

Procedura CREATE_EXTERNAL_TEXT_INDEX

Questa procedura crea un indice di testo nei file di storage degli oggetti.

La procedura CREATE_EXTERNAL_TEXT_INDEX crea un indice di testo nei file di storage degli oggetti specificati nella posizione location_uri. L'indice viene aggiornato a intervalli regolari per eventuali nuove aggiunte o eliminazioni eseguite con i file nell'URI posizione.

Sintassi

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere alla posizione dello storage degli oggetti cloud. Per gli URI bucket pubblici, preautenticati o pre-firmati, è possibile specificare un valore NULL.

Per ulteriori informazioni, vedere Configurare criteri e ruoli per accedere alle risorse.

Se non si specifica un valore credential_name, credential_name viene impostato su un valore NULL.

location_uri

Specifica l'URI del bucket o della cartella dell'area di memorizzazione degli oggetti.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

index_name Specifica il nome dell'indice che si sta creando sui file situati nella posizione location_uri.

Questo parametro è obbligatorio.

format

Specifica le opzioni di configurazione aggiuntive. Le opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.

refresh_rate: specifica la frequenza in minuti alla quale viene aggiornato l'indice locale. Il caricamento e l'eliminazione di nuovi file determinano un aggiornamento dell'indice. Il valore predefinito è 5 minuti.

binary_files: specifica se il contenuto dei file da indicizzare è binario. Ad esempio PDF, MS-Word, il valore predefinito è FALSE.

json_index: specifica se il contenuto dei file da indicizzare è JSON o JSON di riga. Il valore predefinito è FALSE.

json_index_doc_sep: specifica il separatore utilizzato per la pre-elaborazione dei documenti JSON delle righe. Il valore predefinito è '\n' (nuova riga).

json_index_doc_len: specifica la lunghezza di ogni documento JSON nell'oggetto. Il campo predefinito è 32767 e il valore massimo è 200000.

file_compression: specifica il formato di compressione dei file JSON. Il valore predefinito è gzip.

stop_words: specifica che è possibile fornire un elenco di stopword quando si creano indici.

Il valore stop_words indica se si tratta di un elenco di stopword o di una tabella di stopword. Quando viene fornito un array JSON, il parametro delle parole di arresto viene considerato come una lista, altrimenti il parametro delle parole di arresto viene considerato come un nome di tabella la cui colonna "STOP_WORDS" viene utilizzata per leggere nella lista delle parole di arresto.

È possibile specificare le parole di arresto utilizzando i metodi indicati di seguito.

  • Array JSON: ad esempio: format := '{"stop_words":["king","queen"]}'
  • Nome della tabella delle parole di arresto: ad esempio: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Se non si specifica un parametro format, format viene impostato su un valore NULL.

Esempio

BEGIN 
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

Procedura CREATE_HYBRID_PART_TABLE

Questa procedura crea una tabella con partizionamento ibrido. Ciò consente di eseguire query su dati ibridi partizionati da Autonomous Database utilizzando oggetti e file di database nel cloud o oggetti e file di database in una directory.

Sintassi

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

partitioning_clause

Specifica la clausola di partizionamento completa, incluse le informazioni sulla posizione per le singole partizioni.

Per utilizzare le directory, la clausola di partizionamento supporta i valori LOCATION e DEFAULT DIRECTORY.

È possibile utilizzare i caratteri jolly e le espressioni regolari nei nomi file negli URI dei file di origine cloud.

Le espressioni regolari possono essere utilizzate solo se il parametro regexuri format è impostato su TRUE.

I caratteri "*" e "?" sono considerati caratteri jolly quando il parametro regexuri è impostato su FALSE. Se il parametro regexuri è impostato su TRUE, i caratteri "*" e "?" fanno parte del pattern di espressione regolare specificato.

I pattern di espressione regolari sono supportati solo per il nome file o il percorso della sottocartella negli URI e la corrispondenza dei pattern è identica a quella eseguita dalla funzione REGEXP_LIKE. I pattern di espressione regolare non sono supportati per i nomi delle directory.

Ad esempio:

partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
				    ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),….

Per ulteriori informazioni sulla condizione REGEXP_LIKE, vedere REGEXP_LIKE Condition.

column_list

Lista delimitata da virgole di nomi di colonna e tipi di dati per la tabella esterna.

field_list

Identifica i campi nei file di origine e i relativi tipi di dati. Il valore predefinito è NULL, ovvero i campi e i relativi tipi di dati sono determinati dal parametro column_list. La sintassi di questo argomento è la stessa della clausola field_list nelle normali tabelle esterne Oracle. Per ulteriori informazioni su field_list, vedere Oracle® Database Utilities.

format

Le opzioni che descrivono il formato dei file di origine. Per l'elenco delle opzioni e per la specifica dei valori, vedere DBMS_CLOUD Package Format Options.

Note sull'uso

  • La procedura DBMS_CLOUD.CREATE_HYBRID_PART_TABLE supporta i file partizionati esterni nei servizi di storage degli oggetti cloud supportati, tra cui:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage o Azure Data Lake Storage

    • Amazon S3

    • Compatibile con Amazon S3, tra cui: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • Repository GitHub

    La credenziale è una proprietà a livello di tabella, pertanto i file esterni devono trovarsi nella stessa area di memorizzazione degli oggetti.

    Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

  • La procedura DBMS_CLOUD.CREATE_HYBRID_PART_TABLE supporta i file partizionati ibridi presenti nelle directory, sia in un file system locale che in un file system di rete.

  • Le tabelle partizionate esterne create con DBMS_CLOUD.CREATE_HYBRID_PART_TABLE includono due colonne invisibili file$path e file$name. Queste colonne consentono di identificare il file da cui proviene un record.

    • file$path: specifica il testo del percorso del file fino all'inizio del nome dell'oggetto.

    • file$name: specifica il nome dell'oggetto, incluso tutto il testo che segue il nome del bucket.

Esempi

BEGIN  
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',  
      credential_name =>'OBJ_STORE_CRED',  
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/ 


BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

Procedura DELETE_ALL_OPERATIONS

Questa procedura cancella tutte le operazioni di caricamento dati registrate nella tabella user_load_operations nello schema oppure cancella tutte le operazioni di caricamento dati del tipo specificato, come indicato con il parametro type.

Sintassi

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parametri

Parametro Descrizione

type

Specifica il tipo di operazione da eliminare. I valori dei tipi sono disponibili nella colonna TYPE della tabella user_load_operations.

Se non viene specificato alcun valore type, tutte le righe vengono eliminate.

Note sull'uso

  • Questa procedura non elimina le operazioni attualmente in esecuzione (operazioni con stato "In esecuzione").

  • Questa procedura elimina le tabelle di log e i file di log associati alle operazioni.

Procedura DELETE_FILE

Questa procedura rimuove il file specificato dalla directory specificata in Autonomous Database.

Sintassi

 DBMS_CLOUD.DELETE_FILE ( 
       directory_name     IN VARCHAR2,
       file_name          IN VARCHAR2,
       force              IN BOOLEAN DEFAULT FALSE); 

Parametri

Parametro Descrizione

directory_name

Nome della directory nell'istanza di Autonomous Database.

file_name

Nome del file da rimuovere.

force

Ignora e non segnalare errori se il file non esiste. I valori validi sono: TRUE e FALSE. Il valore predefinito è FALSE.

Nota

Per eseguire DBMS_CLOUD.DELETE_FILE con un utente diverso da ADMIN, è necessario concedere privilegi di scrittura sulla directory che contiene il file a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere privilegi di scrittura a adb_user:
GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Esempio

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/ 

Procedura DELETE_OBJECT

Questa procedura elimina l'oggetto specificato nell'area di memorizzazione degli oggetti.

Sintassi

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI oggetto o file per l'oggetto da eliminare. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

force

Ignora e non segnala errori se l'oggetto non esiste. I valori validi sono: TRUE e FALSE. Il valore predefinito è FALSE.

Esempio

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/ 

Procedura DELETE_OPERATION

Questa procedura cancella le voci di caricamento dati per l'ID operazione specificato registrato nelle tabelle user_load_operations o dba_load_operations nello schema.

Sintassi

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parametri

Parametro Descrizione

id

Specifica l'ID operazione associato alle voci del file di log che si desidera eliminare.

Nota per l'uso

  • Questa procedura elimina le tabelle di log e i file di log associati all'ID operazione specificato nell'input.

Esempio

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

Procedura DROP_EXTERNAL_TEXT_INDEX

Questa procedura elimina l'indice di testo nei file di storage degli oggetti.

La procedura DROP_EXTERNAL_TEXT_INDEX elimina l'indice specificato creato con la procedura CREATE_EXTERNAL_TEXT_INDEX.

Sintassi

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parametri

Parametro Descrizione
index_name

Specifica il nome dell'indice che si sta eliminando.

Il nome dell'indice deve corrispondere al nome fornito al momento della creazione dell'indice.

Questo parametro è obbligatorio.

Esempio

BEGIN 
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

Procedura EXPORT_DATA

Questa procedura esporta i dati da Autonomous Database in base al risultato di una query. Questa procedura è sovraccaricata e supporta la scrittura di file nel cloud o in una directory.

In base al parametro format type, la procedura esporta i file nel cloud o in una posizione directory come file di testo in formato CSV, JSON, Parquet o XML oppure utilizzando il driver di accesso ORACLE_DATAPUMP per scrivere i dati in un file di dump Oracle Datapump.

Sintassi

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se il parametro della credenziale non è incluso, viene specificato l'output in una directory.

file_uri_list

Esistono moduli diversi, a seconda del valore del parametro di formato e a seconda che si includa un parametro di credenziale:
  • Quando il valore del parametro format type è json: JSON nell'area di memorizzazione degli oggetti o nella posizione della directory specificata viene salvato con un nome file generato basato sul valore del parametro file_uri_list. Per ulteriori informazioni, vedere Denominazione file per output di testo (CSV, JSON, Parquet o XML).

  • Quando il valore del parametro format type è datapump, file_uri_list è una lista delimitata da virgole dei file di dump. Specifica i file da creare nell'area di memorizzazione degli oggetti. L'uso dei caratteri jolly e di sostituzione non è supportato in file_uri_list.

  • Se il parametro credential_name non viene specificato, specificare un nome di directory in file_uri_list.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

format

Stringa JSON che fornisce le opzioni di formato di esportazione.

L'opzione supportata è:

  • type: l'opzione type format è obbligatoria e deve avere uno dei valori seguenti: csv | datapump | json | parquet | xml.

Vedere DBMS_CLOUD Opzioni di formato dei pacchetti per EXPORT_DATA.

query

Utilizzare questo parametro per specificare un'istruzione SELECT in modo che vengano esportati solo i dati richiesti. La query determina il contenuto dei file esportati come file di testo CSV, JSON, Parquet o XML o come file di dump. Ad esempio:

SELECT warehouse_id, quantity FROM inventories

Per informazioni sul formato type, valore datapump, vedere Filtri dati di esportazione di Oracle Data Pump e Scaricamento e caricamento di dati con il driver di accesso ORACLE_DATAPUMP per ulteriori informazioni.

Quando il valore format type è json, ogni risultato della query viene selezionato e, se non è JSON, come determinato con la funzione: JSON_OBJECT_T.parse(), DBMS_CLOUD.EXPORT_DATA trasforma la query in modo da includere la funzione JSON_OBJECT per convertire la riga in JSON. Per ulteriori informazioni, vedere JSON_OBJECT_T Object Type.

Ad esempio:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di esportazione come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Note sull'uso:

  • Il valore del parametro query fornito può essere una query avanzata, se necessario, ad esempio una query che include join o subquery.

  • A seconda del parametro di formato specificato, DBMS_CLOUD.EXPORT_DATA restituisce i risultati della query specificata nell'area di memorizzazione degli oggetti cloud o in una posizione di directory in uno dei seguenti formati:

  • Per l'output CSV, JSON o XML, per impostazione predefinita quando un file generato contiene 10 MB di dati, viene creato un nuovo file di output. Tuttavia, se hai meno di 10 MB di dati dei risultati, potresti avere più file di output, a seconda del servizio di database e del numero di ECPU (OCPU se il database utilizza OCPU) per l'istanza di Autonomous Database.

    Per ulteriori informazioni, vedere Denominazione file per output di testo (CSV, JSON, Parquet o XML).

    La dimensione chunk predefinita del file di output è 10 MB per CSV, JSON o XML. È possibile modificare questo valore con l'opzione maxfilesize del parametro format. Per ulteriori informazioni, vedere DBMS_CLOUD Package Format Options for EXPORT_DATA.

  • Per l'output Parquet, ogni file generato è inferiore a 128 MB e possono essere generati più file di output. Tuttavia, se hai meno di 128 MB di dati dei risultati, potresti avere più file di output a seconda del servizio di database e del numero di ECPU (OCPU se il database utilizza le OCPU) per l'istanza di Autonomous Database.

    Per ulteriori informazioni, vedere Denominazione file per output di testo (CSV, JSON, Parquet o XML).

Note sull'uso per l'output ORACLE_DATAPUMP (DBMS_CLOUD.EXPORT_DATA con parametro format opzione type datapump):

  • EXPORT_DATA utilizza DATA_PUMP_DIR come directory di log predefinita. Il privilegio di scrittura su DATA_PUMP_DIR è pertanto necessario quando si utilizza l'output ORACLE_DATAPUMP.

  • L'esportazione di Autonomous Database mediante DBMS_CLOUD.EXPORT_DATA con il parametro format, opzione type datapump, supporta solo le aree di memorizzazione degli oggetti Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic o l'output della directory.

  • Quando si specifica DBMS_CLOUD.EXPORT_DATA con l'opzione type del parametro format datapump, il valore del parametro credential_name non può essere un principal risorsa OCI.

  • Oracle Data Pump divide ogni parte del file di dump in chunk più piccoli per caricamenti più rapidi. La console di Oracle Cloud Infrastructure Object Storage mostra più file per ogni parte del file di dump esportata. La dimensione dei file di dump effettivi verrà visualizzata come zero (0) e i relativi chunk di file correlati come 10mb o meno. Ad esempio:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    Il download del file di dump a zero byte dalla console di Oracle Cloud Infrastructure o utilizzando l'interfaccia CLI di Oracle Cloud Infrastructure non fornirà i file di dump completi. Per scaricare i file di dump completi dall'area di memorizzazione degli oggetti, utilizzare uno strumento che supporti Swift, ad esempio curl, e fornire il login utente e il token di autenticazione Swift.
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    Se si importa un file con le procedure DBMS_CLOUD che supportano il parametro format type con il valore 'datapump', è sufficiente fornire il nome del file primario. Le procedure che supportano il tipo di formato 'datapump' rilevano e scaricano automaticamente i chunk.

    Quando si utilizza DBMS_CLOUD.DELETE_OBJECT, la procedura rileva ed elimina automaticamente i chunk quando la procedura elimina il file primario.

  • La procedura DBMS_CLOUD.EXPORT_DATA crea i file di dump dai valori file_uri_list specificati, come indicato di seguito.

    • Poiché sono necessari più file, la procedura crea ulteriori file da file_uri_list.

    • La procedura non sovrascrive i file. Se esiste un file di dump in file_uri_list, DBMS_CLOUD.EXPORT_DATA segnala un errore.

    • DBMS_CLOUD.EXPORT_DATA non crea bucket.

  • Il numero di file di dump generati da DBMS_CLOUD.EXPORT_DATA viene determinato durante l'esecuzione della procedura. Il numero di file di dump generati dipende dal numero di nomi file forniti nel parametro file_uri_list, nonché dal numero di OCPU di Autonomous Database disponibili per l'istanza, il livello di servizio e la dimensione dei dati.

    Ad esempio, se si utilizza un'istanza di Autonomous Database 1 OCPU o il servizio low, viene esportato un singolo file di dump senza parallelismo, anche se si forniscono più nomi di file. Se si utilizza un'istanza di Autonomous Database con 4 OCPU con il servizio medium o high, i job possono essere eseguiti in parallelo e vengono esportati più file di dump se si forniscono più nomi file.

  • I file di dump creati con DBMS_CLOUD.EXPORT_DATA non possono essere importati utilizzando Oracle Data Pump impdp. A seconda del database, è possibile utilizzare questi file come indicato di seguito.

    • In un'istanza di Autonomous Database è possibile utilizzare i file di dump con le procedure DBMS_CLOUD che supportano il parametro format type con il valore 'datapump'. È possibile importare i file di dump utilizzando DBMS_CLOUD.COPY_DATA oppure chiamare DBMS_CLOUD.CREATE_EXTERNAL_TABLE per creare una tabella esterna.

    • In qualsiasi altro Oracle Database, ad esempio Oracle Database 19c on-premise, è possibile importare i file di dump creati con la procedura DBMS_CLOUD.EXPORT_DATA utilizzando il driver di accesso ORACLE_DATAPUMP. Per ulteriori informazioni, vedere Scaricamento e caricamento dei dati con il driver di accesso ORACLE_DATAPUMP.

  • Il valore del parametro query fornito può essere una query avanzata, se necessario, ad esempio una query che include join o subquery.

Note sull'uso per DBMS_CLOUD.EXPORT_DATA con output in una directory

  • La directory fornita deve esistere ed è necessario eseguire il login come utente ADMIN o disporre dell'accesso WRITE alla directory.

  • DBMS_CLOUD.EXPORT_DATA non crea directory.

  • La procedura non sovrascrive i file. Ad esempio, se esiste un file di dump in file_uri_list, DBMS_CLOUD.EXPORT_DATA segnala un errore simile al seguente:

    ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
    ORA-27038: created file already exists

Esempi

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore datapump:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name =>'OBJ_STORE_CRED',
      file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp',
      format => json_object('type' value 'datapump', 'compression' value 'basic', 'version' value 'latest'),
      query => 'SELECT warehouse_id, quantity FROM inventories'
     );
   END;
/  

In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore json:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/  

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore xml:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

L'esempio seguente mostra DBMS_CLOUD.EXPORT_DATA con il parametro formato type con il valore csv:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true, 'encryption' value ('user_defined_function' value 'ADMIN.decryption_callback')));
     );
   END;
/  

L'esempio seguente mostra l'esportazione dei dati in DBMS_CLOUD.EXPORT_DATA in una posizione di directory con il parametro type con il valore datapump:

BEGIN
 DBMS_CLOUD.EXPORT_DATA(
    file_uri_list => 'export_dir:sales.dmp',
    format        => json_object('type' value 'datapump'),
    query         => 'SELECT * FROM sales'
 );
END;
/

GET_OBJECT Procedura e funzione

Questa procedura è sovraccaricata. Il form di procedura legge un oggetto dallo storage degli oggetti cloud e lo copia in Autonomous Database. Il form funzione legge un oggetto dallo storage degli oggetti cloud e restituisce un valore BLOB ad Autonomous Database.

Sintassi

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

directory_name

Il nome della directory nel database.

Piede 1
È possibile utilizzare un URL collegamento ipertestuale tabella nei modi riportati di seguito.
  • Specificare un singolo URL collegamento ipertestuale tabella Autonomous Database.

  • Specificare una lista delimitata da virgole di URL dei collegamenti ipertestuali delle tabelle di Autonomous Database. È necessario assicurarsi che tutti i collegamenti ipertestuali delle tabelle inclusi abbiano gli stessi nomi di colonna, ordine di colonna e tipi di dati delle colonne nello stesso schema.

Per ulteriori informazioni, vedere Informazioni sui collegamenti ipertestuali delle tabelle in Autonomous Database e CREATE_URL Procedure.

file_name

Specifica il nome del file da creare. Se il nome del file non viene specificato, il nome del file viene utilizzato dopo l'ultima barra nel parametro object_uri. Per casi speciali, ad esempio quando il nome del file contiene barre, utilizzare il parametro file_name.

startoffset

L'offset, in byte, da cui inizia la lettura della procedura.

endoffset

L'offset, in byte, fino a quando la procedura non smette di leggere.

compression

Specifica la compressione utilizzata per memorizzare l'oggetto. Quando compression è impostato su ‘AUTO’, il file viene decompresso (il valore ‘AUTO’ implica che l'oggetto specificato con object_uri viene compresso con Gzip).

Nota a piè di pagina 1

Nota

Per eseguire DBMS_CLOUD.GET_OBJECT con un utente diverso da ADMIN, è necessario concedere privilegi WRITE sulla directory a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere privilegi di scrittura a adb_user:

GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Valori restituiti

Il form funzione legge dall'area di memorizzazione degli oggetti e DBMS_CLOUD.GET_OBJECT restituisce un valore BLOB.

Esempi

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR'); 
END;
/

Per leggere i dati dei caratteri da un file nell'area di memorizzazione degli oggetti:

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

Per aggiungere un'immagine memorizzata nell'area di memorizzazione degli oggetti in un BLOB nel database, effettuare le operazioni riportate di seguito.


DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

Funzione LIST_FILES

Questa funzione elenca i file nella directory specificata. I risultati includono i nomi dei file e i metadati aggiuntivi relativi ai file, ad esempio la dimensione del file in byte, l'indicatore orario di creazione e l'indicatore orario dell'ultima modifica.

Sintassi

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parametri

Parametro Descrizione

directory_name

Il nome della directory nel database.

Note sull'uso

  • Per eseguire DBMS_CLOUD.LIST_FILES con un utente diverso da ADMIN, è necessario concedere privilegi di lettura sulla directory a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere privilegi di lettura a adb_user:

    GRANT READ ON DIRECTORY data_pump_dir TO adb_user;
  • Questa è una funzione di tabella con tipo restituito DBMS_CLOUD_TYPES.list_object_ret_t.

  • DBMS_CLOUD.LIST_FILES non ottiene il valore di checksum e restituisce NULL per questo campo.

Esempio

Questa è una funzione pipelined che restituisce una riga per ogni file. Ad esempio, utilizzare la seguente query per utilizzare questa funzione:

SELECT * FROM DBMS_CLOUD.LIST_FILES('DATA_PUMP_DIR');

OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

Funzione LIST_OBJECTS

Questa funzione elenca gli oggetti nella posizione specificata nell'area di memorizzazione degli oggetti. I risultati includono i nomi degli oggetti e i metadati aggiuntivi relativi agli oggetti, ad esempio dimensione, checksum, indicatore orario di creazione e indicatore orario dell'ultima modifica.

Sintassi

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

location_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

Note sull'uso

  • A seconda delle capacità dell'area di memorizzazione degli oggetti, DBMS_CLOUD.LIST_OBJECTS non restituisce valori per determinati attributi e il valore restituito per il campo è NULL in questo caso.

    Tutti gli archivi oggetti supportati restituiscono valori per i campi OBJECT_NAME, BYTES e CHECKSUM.

    La tabella riportata di seguito mostra il supporto per i campi CREATED e LAST_MODIFIED per area di memorizzazione degli oggetti.

    Area di memorizzazione degli oggetti CREATED LAST_MODIFIED
    Oracle Cloud Infrastructure Native Indicatore orario resi Indicatore orario resi
    Oracle Cloud Infrastructure Swift Restituisce NULL Indicatore orario resi
    Oracle Cloud Infrastructure Classic Restituisce NULL Indicatore orario resi
    Amazon S3 Restituisce NULL Indicatore orario resi
    Compatibile con Amazon S3 Restituisce NULL Indicatore orario resi
    Azure Indicatore orario resi Indicatore orario resi
    Repository GitHub    
  • Il valore di checksum è il checksum MD5. Si tratta di un numero esadecimale di 32 caratteri calcolato sul contenuto dell'oggetto. È previsto un valore di checksum diverso se viene utilizzata la credenziale OCI$RESOURCE_PRINCIPAL.

  • Questa è una funzione di tabella con tipo restituito DBMS_CLOUD_TYPES.list_object_ret_t.

Esempio

Questa è una funzione a pipeline che restituisce una riga per ogni oggetto. Ad esempio, utilizzare la seguente query per utilizzare questa funzione:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED', 
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');


OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z          

In questo esempio, namespace-string è lo spazio di nomi dello storage degli oggetti Oracle Cloud Infrastructure e bucketname è il nome del bucket. Per ulteriori informazioni, vedere Informazioni sugli spazi di nomi dello storage degli oggetti.

Procedura MOVE_OBJECT

Questa procedura sposta un oggetto da un bucket o una cartella di storage degli oggetti cloud a un altro.

Il bucket o la cartella di origine e di destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un provider diverso.

Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Per impostazione predefinita, il nome della credenziale di origine viene utilizzato anche dalla posizione di destinazione quando non viene fornito il nome della credenziale di destinazione.

Sintassi

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud di origine.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_object_uri

Specifica l'URI che punta al bucket o alla posizione della cartella di storage degli oggetti di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_object_uri

Specifica l'URI per il bucket o la cartella di storage degli oggetti di destinazione, in cui è necessario spostare i file.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore target_credential_name, target_object_uri viene impostato sul valore source_credential_name.

Esempio

BEGIN 
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedura PUT_OBJECT

Questa procedura è sovraccaricata. In un modulo, la procedura copia un file da Autonomous Database allo storage degli oggetti cloud. In un altro formato, la procedura copia un elemento BLOB da Autonomous Database nello storage degli oggetti cloud.

Sintassi

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

object_uri

URI oggetto o file. Il formato dell'URI dipende dal servizio di storage degli oggetti cloud in uso. Per i dettagli, vedere Formati URI DBMS_CLOUD.

directory_name

Nome della directory in Autonomous Database.

Piede 2

contents

Specifica l'indirizzo BLOB da copiare da Autonomous Database allo storage degli oggetti cloud.

file_name

Il nome del file nella directory specificata.

compression

Specifica la compressione utilizzata per memorizzare l'oggetto.

Valore predefinito: NULL

Nota a piè di pagina 2

Nota

Per eseguire DBMS_CLOUD.PUT_OBJECT con un utente diverso da ADMIN, è necessario concedere privilegi di lettura sulla directory a tale utente. Ad esempio, eseguire il comando seguente come ADMIN per concedere privilegi di lettura a adb_user:

GRANT READ ON DIRECTORY data_pump_dir TO adb_user;

Esempio

Per gestire i dati BLOB dopo l'elaborazione nel database, quindi memorizzare i dati direttamente in un file nell'area di memorizzazione degli oggetti:

DECLARE
      my_blob_data BLOB;
BEGIN 
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data)); 
END;
/

Note sull'uso

A seconda dello storage degli oggetti cloud in uso, le dimensioni dell'oggetto trasferito sono limitate come indicato di seguito.

Servizio di storage degli oggetti Cloud Limite dimensione trasferimento oggetto

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage o Azure Data Lake Storage

256 MB

Compatibile con Amazon S3

Impostato dal provider dell'area di memorizzazione degli oggetti. Per ulteriori informazioni, consultare la documentazione del provider.

L'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure non consente la scrittura di file in un bucket pubblico senza fornire credenziali (Oracle Cloud Infrastructure consente agli utenti di scaricare oggetti dai bucket pubblici). Pertanto, devi fornire un nome di credenziale con credenziali valide per memorizzare un oggetto in un bucket pubblico di Oracle Cloud Infrastructure utilizzando PUT_OBJECT.

Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

Procedura SYNC_EXTERNAL_PART_TABLE

Questa procedura semplifica l'aggiornamento di una tabella partizionata esterna dai file nel cloud. Eseguire questa procedura ogni volta che vengono aggiunte nuove partizioni o quando le partizioni vengono rimosse dall'origine dell'area di memorizzazione degli oggetti per la tabella partizionata esterna.

Sintassi

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

Parametri

Parametro Descrizione

table_name

Nome della tabella di destinazione. La tabella di destinazione deve essere creata prima di eseguire DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE.

schema_name

Nome dello schema in cui risiede la tabella di destinazione. Il valore predefinito è NULL, ovvero la tabella di destinazione si trova nello stesso schema dell'utente che esegue la procedura.

update_columns

I nuovi file possono introdurre una modifica allo schema. Gli aggiornamenti supportati includono: nuove colonne, colonne eliminate. Gli aggiornamenti alle colonne esistenti, ad esempio una modifica del tipo di dati, generano errori.

Valore predefinito: False

Procedura VALIDATE_EXTERNAL_PART_TABLE

Questa procedura convalida i file di origine per una tabella partizionata esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

partition_name

Se definito, viene convalidata solo una partizione specifica. Se non specificato, leggere tutte le partizioni in sequenza fino al raggiungimento di rowcount.

subpartition_name

Se definito, viene convalidata solo una partizione secondaria specifica. Se non specificato, leggere in sequenza da tutte le partizioni esterne o secondarie fino al raggiungimento di rowcount.

schema_name

Nome dello schema in cui risiede la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da scansionare. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

partition_key_validation

Solo per uso interno. Non utilizzare questo parametro.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, che indica che la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.

Procedura VALIDATE_EXTERNAL_TABLE

Questa procedura convalida i file di origine per una tabella esterna, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella esterna in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,		
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,		
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

schema_name

Nome dello schema in cui risiede la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da eseguire la scansione. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, che indica che la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.

Se la tabella esterna fa riferimento a file Avro, ORC o Parquet, la convalida si interrompe alla prima riga rifiutata.

Quando la tabella esterna specifica il parametro format type impostato sul valore avro, orc o parquet, il parametro stop_on_error effettivamente ha sempre il valore TRUE. Pertanto, il file badfile della tabella sarà sempre vuoto per una tabella esterna che fa riferimento ai file Avro, ORC o Parquet.

Note sull'uso

  • DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funziona sia con tabelle esterne partizionate che con tabelle partizionate ibride. Questo potenzialmente legge i dati da tutte le partizioni esterne fino al raggiungimento di rowcount o all'applicazione di stop_on_error. Non si dispone del controllo su quale partizione, o parti di una partizione, viene letta in quale ordine.

Procedura VALIDATE_HYBRID_PART_TABLE

Questa procedura convalida i file di origine per una tabella con partizionamento ibrido, genera informazioni di log e memorizza le righe che non corrispondono alle opzioni di formato specificate per la tabella ibrida in una tabella badfile in Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parametri

Parametro Descrizione

table_name

Il nome della tabella esterna.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

partition_name

Se definito, viene convalidata solo una partizione specifica. Se non specificato, leggere tutte le partizioni esterne in sequenza fino al raggiungimento di rowcount.

subpartition_name

Se definito, viene convalidata solo una partizione secondaria specifica. Se non specificato, leggere in sequenza da tutte le partizioni esterne o secondarie fino al raggiungimento di rowcount.

schema_name

Nome dello schema in cui risiede la tabella esterna. Il valore predefinito è NULL, ovvero la tabella esterna si trova nello stesso schema dell'utente che esegue la procedura.

rowcount

Numero di righe da eseguire la scansione. Il valore predefinito è NULL, ovvero vengono analizzate tutte le righe nei file di origine.

partition_key_validation

Solo per uso interno. Non utilizzare questo parametro.

stop_on_error

Determina se la convalida deve essere interrotta quando una riga viene rifiutata. Il valore predefinito è TRUE, che indica che la convalida si interrompe alla prima riga rifiutata. L'impostazione del valore su FALSE specifica che la convalida non si arresta alla prima riga rifiutata e convalida tutte le righe fino al valore specificato per il parametro rowcount.

DBMS_CLOUD per la gestione dei file in blocco

Sottoprogrammi per le operazioni di massa all'interno del pacchetto DBMS_CLOUD.

Sottoprogramma Descrizione
Procedura BULK_COPY

Questa procedura copia i file da un bucket di storage degli oggetti cloud a un altro.

Procedura BULK_DELETE

La procedura elimina i file dal bucket o dalla cartella dello storage degli oggetti cloud.

Procedura BULK_DOWNLOAD

Questa procedura consente di scaricare i file dal bucket dell'area di memorizzazione degli oggetti cloud in una directory in Autonomous Database.

Procedura BULK_MOVE

Questa procedura sposta i file da un bucket di storage degli oggetti cloud a un altro.

Procedura BULK_UPLOAD

Questa procedura carica i file da una directory in Autonomous Database nello storage degli oggetti cloud.

Procedura BULK_COPY

Questa procedura copia in blocco i file da un bucket di storage degli oggetti cloud a un altro. Il form sovraccarico consente di utilizzare il parametro operation_id.

È possibile filtrare la lista dei file da eliminare utilizzando un pattern di espressione regolare compatibile con l'operatore REGEXP_LIKE.

Il bucket o la cartella di origine e di destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un provider diverso.

Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Per impostazione predefinita, il nome della credenziale di origine viene utilizzato anche dalla posizione di destinazione.

Sintassi

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_location_uri

Specifica l'URI che punta al bucket o alla posizione della cartella di storage degli oggetti di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_location_uri

Specifica l'URI per il bucket o la cartella di storage degli oggetti di destinazione, in cui è necessario copiare i file.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore target_credential_name, target_location_uri viene impostato sul valore source_credential_name.

regex_filter

Specifica l'espressione REGEX per filtrare i file. Il pattern di espressione REGEX deve essere compatibile con l'operatore REGEXP_LIKE.

Se non si specifica un valore regex_filter, regex_filter viene impostato su NULL.

Per ulteriori informazioni, vedere REGEXP_LIKE Condizione.

format

Specifica le opzioni di configurazione aggiuntive per l'operazione file. Queste opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.
  • logretention: accetta un valore intero che determina la durata in giorni per la quale la tabella di stato viene conservata per un'operazione in blocco.

    Il valore predefinito è 2 giorni.

  • logprefix: accetta un valore stringa che determina la stringa del prefisso del nome della tabella dello stato dell'operazione di massa.

    Il tipo di operazione è il valore predefinito. Per BULK_COPY, il valore predefinito logprefix è COPYOBJ.

  • priority: accetta un valore stringa che determina il numero di operazioni di file eseguite contemporaneamente.

    Un'operazione con priorità più alta consuma più risorse del database e dovrebbe essere eseguita più velocemente.

    Accetta i seguenti valori:

    • HIGH: determina il numero di file paralleli gestiti utilizzando il conteggio ECPU del database (conteggio OCIPU se il database utilizza le OCPU).

    • MEDIUM: determina il numero di processi simultanei che utilizzano il limite di concorrenza per il servizio Medium. Il valore predefinito è 4.

    • LOW: elaborare i file in ordine seriale.

    Il valore predefinito è MEDIUM.

    Il numero massimo di operazioni file concorrenti è limitato a 64.

Se non si specifica un valore format, format viene impostato su NULL.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Note sull'uso

  • Viene restituito un errore quando l'URI di origine e di destinazione punta allo stesso bucket o alla stessa cartella di storage degli oggetti.

Esempio

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;
/

Procedura BULK_DELETE

Questa procedura elimina in blocco i file dallo storage degli oggetti cloud. Il form sovraccarico consente di utilizzare il parametro operation_id. È possibile filtrare la lista dei file da eliminare utilizzando un pattern di espressione regolare compatibile con l'operatore REGEXP_LIKE.

Sintassi

 DBMS_CLOUD.BULK_DELETE(
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DELETE (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore credential_name, credential_name viene impostato su NULL.

location_uri

Specifica l'URI che punta a una posizione di storage degli oggetti in Autonomous Database.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

regex_filter

Specifica l'espressione REGEX per filtrare i file. Il pattern di espressione REGEX deve essere compatibile con l'operatore REGEXP_LIKE.

Se non si specifica un valore regex_filter, regex_filter viene impostato su NULL.

Per ulteriori informazioni, vedere REGEXP_LIKE Condizione.

format

Specifica le opzioni di configurazione aggiuntive per l'operazione file. Queste opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.
  • logretention: accetta un valore intero che determina la durata in giorni per la quale la tabella di stato viene conservata per un'operazione bulk.

    Il valore predefinito è 2 giorni.

  • logprefix: accetta un valore stringa che determina la stringa del prefisso del nome della tabella dello stato dell'operazione di massa.

    Il tipo di operazione è il valore predefinito. Per BULK_DELETE, il valore predefinito logprefix è DELETE.

  • priority: accetta un valore stringa che determina il numero di operazioni di file eseguite contemporaneamente.

    Un'operazione con priorità più alta consuma più risorse del database e viene completata prima.

    Accetta i seguenti valori:

    • HIGH: determina il numero di file paralleli gestiti utilizzando il conteggio ECPU del database (conteggio OCIPU se il database utilizza le OCPU).

    • MEDIUM: determina il numero di processi simultanei che utilizzano il limite di concorrenza per il servizio Medium. Il valore predefinito è 4.

    • LOW: elaborare i file in ordine seriale.

    Il valore predefinito è MEDIUM.

    Il numero massimo di operazioni file concorrenti è limitato a 64.

Se non si specifica un valore format, format viene impostato su NULL.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

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;
/

Procedura BULK_DOWNLOAD

Questa procedura consente di scaricare i file in una directory di Autonomous Database dallo storage degli oggetti cloud. Il form sovraccarico consente di utilizzare il parametro operation_id. È possibile filtrare l'elenco dei file da scaricare utilizzando un pattern di espressione regolare compatibile con l'operatore REGEXP_LIKE.

Sintassi

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore credential_name, credential_name viene impostato su NULL.

location_uri

Specifica l'URI che punta a una posizione di storage degli oggetti in Autonomous Database.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

directory_name

Nome della directory in Autonomous Database dalla quale si desidera scaricare i file.

Questo parametro è obbligatorio.

regex_filter

Specifica l'espressione REGEX per filtrare i file. Il pattern di espressione REGEX deve essere compatibile con l'operatore REGEXP_LIKE.

Se non si specifica un valore regex_filter, regex_filter viene impostato su NULL.

Per ulteriori informazioni, vedere REGEXP_LIKE Condizione.

format

Specifica le opzioni di configurazione aggiuntive per l'operazione file. Queste opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.
  • logretention: accetta un valore intero che determina la durata in giorni per la quale la tabella di stato viene conservata per un'operazione in blocco.

    Il valore predefinito è 2 giorni.

  • logprefix: accetta un valore stringa che determina la stringa del prefisso del nome della tabella dello stato dell'operazione di massa. Per BULK_DOWNLOAD, il valore predefinito logprefix è DOWNLOAD.

    Il tipo di operazione è il valore predefinito.

  • priority: accetta un valore stringa che determina il numero di operazioni di file eseguite contemporaneamente.

    Un'operazione con priorità più alta consuma più risorse del database e viene completata prima.

    Accetta i seguenti valori:

    • HIGH: determina il numero di file paralleli gestiti utilizzando il conteggio ECPU del database (conteggio OCIPU se il database utilizza le OCPU).

    • MEDIUM: determina il numero di processi simultanei che utilizzano il limite di concorrenza per il servizio Medium. Il valore predefinito è 4.

    • LOW: elaborare i file in ordine seriale.

    Il valore predefinito è MEDIUM.

    Il numero massimo di operazioni file concorrenti è limitato a 64.

Se non si specifica un valore format, format viene impostato su NULL.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

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;
/

Procedura BULK_MOVE

Questa procedura sposta in blocco i file da un bucket o una cartella di storage degli oggetti cloud a un'altra. Il form sovraccarico consente di utilizzare il parametro operation_id.

È possibile filtrare la lista dei file da eliminare utilizzando un pattern di espressione regolare compatibile con l'operatore REGEXP_LIKE.

Il bucket o la cartella di origine e di destinazione possono trovarsi nello stesso provider dell'area di memorizzazione degli oggetti cloud o in un provider diverso.

Quando l'origine e la destinazione si trovano in aree di memorizzazione oggetti distinte o hanno account diversi con lo stesso provider cloud, è possibile assegnare nomi di credenziali separati per le posizioni di origine e destinazione.

Per impostazione predefinita, il nome della credenziale di origine viene utilizzato anche dalla posizione di destinazione quando non viene fornito il nome della credenziale di destinazione.

Il primo passo nello spostamento dei file consiste nel copiarli nella posizione di destinazione, quindi eliminare i file di origine, una volta copiati correttamente.

L'oggetto viene rinominato anziché spostato se l'area di memorizzazione degli oggetti consente di rinominare le operazioni tra le posizioni di origine e di destinazione.

Sintassi

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

Parametri

Parametro Descrizione

source_credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud di origine.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore source_credential_name, credential_name viene impostato su NULL.

source_location_uri

Specifica l'URI che punta al bucket o alla posizione della cartella di storage degli oggetti di origine.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_location_uri

Specifica l'URI per il bucket o la cartella di storage degli oggetti di destinazione, in cui è necessario spostare i file.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

target_credential_name

Nome della credenziale per accedere alla posizione di storage degli oggetti cloud di destinazione.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore target_credential_name, target_location_uri viene impostato sul valore source_credential_name.

regex_filter

Specifica l'espressione REGEX per filtrare i file. Il pattern di espressione REGEX deve essere compatibile con l'operatore REGEXP_LIKE.

Se non si specifica un valore regex_filter, regex_filter viene impostato su NULL.

Per ulteriori informazioni, vedere REGEXP_LIKE Condizione.

format

Specifica le opzioni di configurazione aggiuntive per l'operazione file. Queste opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.
  • logretention: accetta un valore intero che determina la durata in giorni per la quale la tabella di stato viene conservata per un'operazione in blocco.

    Il valore predefinito è 2 giorni.

  • logprefix: accetta un valore stringa che determina la stringa del prefisso del nome della tabella dello stato dell'operazione di massa.

    Il tipo di operazione è il valore predefinito. Per BULK_MOVE, il valore predefinito logprefix è MOVE.

  • priority: accetta un valore stringa che determina il numero di operazioni di file eseguite contemporaneamente.

    Un'operazione con priorità più alta consuma più risorse del database e viene completata prima.

    Accetta i seguenti valori:

    • HIGH: determina il numero di file paralleli gestiti utilizzando il conteggio ECPU del database (conteggio OCIPU se il database utilizza le OCPU).

    • MEDIUM: determina il numero di processi simultanei che utilizzano il limite di concorrenza per il servizio Medium. Il valore predefinito è 4.

    • LOW: elaborare i file in ordine seriale.

    Il valore predefinito è MEDIUM.

    Il numero massimo di operazioni file concorrenti è limitato a 64.

Se non si specifica un valore format, format viene impostato su NULL.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

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;
/
Nota

Quando l'URI di origine e destinazione punta allo stesso bucket o cartella di storage degli oggetti, viene restituito un errore.

Procedura BULK_UPLOAD

Questa procedura copia i file nello storage degli oggetti cloud da una directory di Autonomous Database. Il form sovraccarico consente di utilizzare il parametro operation_id.

Sintassi

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per accedere allo storage degli oggetti cloud.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

Se non si specifica un valore credential_name, credential_name viene impostato su NULL.

location_uri

Specifica l'URI che punta a una posizione di storage degli oggetti per caricare i file.

Questo parametro è obbligatorio.

Il formato degli URI dipende dal servizio di storage degli oggetti cloud. Per ulteriori informazioni, vedere DBMS_CLOUD Formati URI.

directory_name

Nome della directory in Autonomous Database da cui si caricano i file.

Questo parametro è obbligatorio.

regex_filter

Specifica l'espressione REGEX per filtrare i file. Il pattern di espressione REGEX deve essere compatibile con l'operatore REGEXP_LIKE.

Se non si specifica un valore regex_filter, regex_filter viene impostato su NULL.

Per ulteriori informazioni, vedere REGEXP_LIKE Condizione.

format

Specifica le opzioni di configurazione aggiuntive per l'operazione file. Queste opzioni sono specificate come stringa JSON.

Di seguito sono riportate le opzioni di formato supportate.
  • logretention: accetta un valore intero che determina la durata in giorni per la quale la tabella di stato viene conservata per un'operazione in blocco.

    Il valore predefinito è 2 giorni.

  • logprefix: accetta un valore stringa che determina la stringa del prefisso del nome della tabella dello stato dell'operazione di massa.

    Il tipo di operazione è il valore predefinito. Per BULK_UPLOAD, il valore predefinito logprefix è UPLOAD.

  • priority: accetta un valore stringa che determina il numero di operazioni di file eseguite contemporaneamente.

    Un'operazione con priorità più alta consuma più risorse del database e viene completata prima.

    Accetta i seguenti valori:

    • HIGH: determina il numero di file paralleli gestiti utilizzando il conteggio ECPU del database (conteggio OCIPU se il database utilizza le OCPU).

    • MEDIUM: determina il numero di processi simultanei che utilizzano il limite di concorrenza per il servizio Medium. Il valore predefinito è 4.

    • LOW: elaborare i file in ordine seriale.

    Il valore predefinito è MEDIUM.

    Il numero massimo di operazioni file concorrenti è limitato a 64.

Se non si specifica un valore format, format viene impostato su NULL.

operation_id

Utilizzare questo parametro per tenere traccia dell'avanzamento e dello stato finale dell'operazione di caricamento come ID corrispondente nella vista USER_LOAD_OPERATIONS.

Esempio

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;
/

API REST DBMS_CLOUD

In questa sezione vengono descritte le API REST DBMS_CLOUD fornite con Autonomous Database.

API REST Descrizione

Funzione GET_RESPONSE_HEADERS

Questa funzione restituisce le intestazioni di risposta HTTP come dati JSON in un oggetto JSON in Autonomous Database.

Funzione GET_RESPONSE_RAW

Questa funzione restituisce la risposta HTTP in formato RAW Autonomous Database. Ciò è utile se la risposta HTTP è prevista in formato binario.

Funzione GET_RESPONSE_STATUS_CODE

Questa funzione restituisce il codice di stato della risposta HTTP come numero intero in Autonomous Database. Il codice di stato consente di identificare se la richiesta è riuscita.

Funzione GET_RESPONSE_TEXT

Questa funzione restituisce la risposta HTTP in formato TEXT (VARCHAR2 o CLOB) in Autonomous Database. In genere, la maggior parte delle API REST cloud restituisce una risposta JSON in formato testo. Questa funzione è utile se si prevede che la risposta HTTP sia in formato testo.

Funzione GET_API_RESULT_CACHE_SIZE

Questa funzione restituisce la dimensione della cache dei risultati configurata.

SEND_REQUEST Funzione e procedura

Questa funzione avvia una richiesta HTTP, ottiene la risposta e termina la risposta in Autonomous Database. Questa funzione fornisce un workflow per l'invio di una richiesta API REST cloud con argomenti e un codice di risposta di restituzione e payload.

Procedura SET_API_RESULT_CACHE_SIZE

Questa procedura imposta la dimensione massima della cache per la sessione corrente.

Panoramica sull'API REST DBMS_CLOUD

Quando utilizzi PL/SQL nell'applicazione e devi chiamare le API REST cloud, puoi utilizzare DBMS_CLOUD.SEND_REQUEST per inviare le richieste API REST.

Le funzioni API REST DBMS_CLOUD consentono di effettuare richieste HTTP utilizzando DBMS_CLOUD.SEND_REQUEST e ottenere e salvare i risultati. Queste funzioni forniscono un'API generica che consente di chiamare qualsiasi API REST con i seguenti servizi cloud supportati:

Costanti API REST DBMS_CLOUD

Descrive le costanti DBMS_CLOUD per la creazione di richieste HTTP utilizzando DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD supporta i metodi HTTP GET, PUT, POST, HEAD e DELETE. Il metodo API REST da utilizzare per una richiesta HTTP è in genere documentato nella documentazione relativa all'API REST cloud.

Nome Tipo Value
METHOD_DELETE VARCHAR2(6) 'DELETE'
METHOD_GET VARCHAR2(3) 'GET'
METHOD_HEAD VARCHAR2(4) 'HEAD'
METHOD_POST VARCHAR2(4) 'POST'
METHOD_PUT VARCHAR2(3) 'PUT'

DBMS_CLOUD Cache risultati API REST

È possibile salvare i risultati dell'API REST DBMS_CLOUD quando si imposta il parametro cache su true con DBMS_CLOUD.SEND_REQUEST. La vista SESSION_CLOUD_API_RESULTS descrive le colonne che è possibile utilizzare quando vengono salvati i risultati dell'API REST.

Per impostazione predefinita, le chiamate API REST DBMS_CLOUD non salvano i risultati per la sessione. In questo caso si utilizza la funzione DBMS_CLOUD.SEND_REQUEST per restituire i risultati.

Quando si utilizza DBMS_CLOUD.SEND_REQUEST e si imposta il parametro cache su TRUE, i risultati vengono salvati ed è possibile visualizzare i risultati passati nella vista SESSION_CLOUD_API_RESULTS. Il salvataggio e l'esecuzione di query sui risultati cronologici delle richieste API REST DBMS_CLOUD possono essere utili quando è necessario utilizzare i risultati precedenti nelle applicazioni.

Ad esempio, per eseguire una query sui risultati recenti dell'API REST DBMS_CLOUD, utilizzare la vista SESSION_CLOUD_API_RESULTS:

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

Quando si salvano i risultati dell'API REST DBMS_CLOUD con DBMS_CLOUD.SEND_REQUEST, i dati salvati sono disponibili solo all'interno della stessa sessione (connessione). Al termine della sessione, i dati salvati non saranno più disponibili.

Utilizzare DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE e DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE per visualizzare e impostare la dimensione della cache dell'API REST DBMS_CLOUD e per disabilitare l'inserimento nella cache.

Parametro cache_scope Risultati API REST DBMS_CLOUD

Quando si salvano i risultati dell'API REST DBMS_CLOUD con DBMS_CLOUD.SEND_REQUEST, l'accesso ai risultati in SESSION_CLOUD_API_RESULTS viene fornito in base al valore di cache_scope.

Per impostazione predefinita, cache_scope è 'PRIVATE' e solo l'utente corrente della sessione può accedere ai risultati. Se si imposta cache_scope su 'PUBLIC', tutti gli utenti della sessione potranno accedere ai risultati. Il valore predefinito per cache_scope specifica che ogni utente può visualizzare solo i risultati dell'API REST DBMS_CLOUD.SEND_REQUEST generati dalle procedure richiamate con i diritti del chiamante. Quando si richiama DBMS_CLOUD.SEND_REQUEST in una sessione, ci sono tre possibilità che determinano se l'utente corrente può visualizzare i risultati nella cache, in base al valore cache_scope:

  • Si esegue direttamente DBMS_CLOUD.SEND_REQUEST come istruzione di livello superiore e la chiamata a DBMS_CLOUD.SEND_REQUEST e i risultati dell'API REST vengono salvati con lo stesso nome utente. In questo caso si ha accesso a tutti i risultati con il valore predefinito 'PRIVATE', impostato per cache_scope.

  • Si scrive la procedura dei diritti di un richiamatore wrapper e come utente corrente la chiamata con DBMS_CLOUD.SEND_REQUEST chiama la procedura e i risultati dell'API REST vengono salvati con lo stesso nome utente. In questo caso, è possibile accedere a tutti i risultati con il valore predefinito 'PRIVATE', impostato per cache_scope.

  • Si scrive la procedura dei diritti di un definer wrapper e la procedura è di proprietà di un altro utente. Quando si chiama DBMS_CLOUD.SEND_REQUEST all'interno della procedura, i risultati vengono salvati con il nome utente del proprietario della procedura.

    In questo caso, un utente con diritti di definer diverso richiama DBMS_CLOUD.SEND_REQUEST e i risultati dell'API REST vengono salvati con il proprietario della procedura di definer. In questo caso, per impostazione predefinita, quando cache_scope è PRIVATE', la sessione del chiamante non può visualizzare i risultati.

    Se il proprietario della procedura del definer desidera rendere disponibili i risultati a qualsiasi utente della sessione di richiamo, deve impostare cache_scope su 'PUBLIC' in DBMS_CLOUD.SEND_REQUEST.

Vista DBMS_CLOUD API REST SESSION_CLOUD_API_RESULTS

È possibile salvare i risultati dell'API REST DBMS_CLOUD quando si imposta il parametro cache su true con DBMS_CLOUD.SEND_REQUEST. La vista SESSION_CLOUD_API_RESULTS descrive le colonne che è possibile utilizzare quando vengono salvati i risultati dell'API REST.

La vista SESSION_CLOUD_API_RESULTS è la vista creata se si inseriscono nella cache i risultati con DBMS_CLOUD.SEND_REQUEST. È possibile eseguire query sui risultati cronologici che appartengono alla sessione utente. Al termine della sessione, i dati nel file SESSION_CLOUD_API_RESULTS vengono rimossi.

Colonna Descrizione
URI URL richiesta API REST DBMS_CLOUD
TIMESTAMP Indicatore orario risposta API REST DBMS_CLOUD
CLOUD_TYPE Il tipo di cloud API REST DBMS_CLOUD, ad esempio Oracle Cloud Infrastructure, AMAZON_S3 e AZURE_BLOB
REQUEST_METHOD Il metodo di richiesta dell'API REST DBMS_CLOUD, ad esempio GET, PUT, HEAD
REQUEST_HEADERS Intestazioni richiesta API REST DBMS_CLOUD
REQUEST_BODY_TEXT Il corpo della richiesta API REST DBMS_CLOUD in CLOB
RESPONSE_STATUS_CODE Codice dello stato della risposta dell'API REST DBMS_CLOUD, ad esempio 200(OK), 404(Not Found)
RESPONSE_HEADERS Intestazioni risposta API REST DBMS_CLOUD
RESPONSE_BODY_TEXT Corpo della risposta dell'API REST DBMS_CLOUD in CLOB
SCOPE

cache_scope impostato da DBMS_CLOUD.SEND_REQUEST. I valori validi sono PUBLIC o PRIVATE.

Funzione GET_RESPONSE_HEADERS

Questa funzione restituisce le intestazioni di risposta HTTP come dati JSON in un oggetto JSON.

Sintassi

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

Parametri

Parametro Descrizione
resp

Tipo di risposta HTTP restituito da DBMS_CLOUD.SEND_REQUEST.

Eccezioni

Eccezione Errore Descrizione
invalid_response ORA-20025

Oggetto del tipo di risposta non valido passato a DBMS_CLOUD.GET_RESPONSE_HEADERS.

Funzione GET_RESPONSE_RAW

Questa funzione restituisce la risposta HTTP in formato RAW. Ciò è utile se la risposta HTTP è prevista in formato binario.

Sintassi

DBMS_CLOUD.GET_RESPONSE_RAW(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN BLOB;

Parametri

Parametro Descrizione
resp

Tipo di risposta HTTP restituito da DBMS_CLOUD.SEND_REQUEST.

Eccezioni

Eccezione Errore Descrizione
invalid_response ORA-20025

Oggetto del tipo di risposta non valido passato a DBMS_CLOUD.GET_RESPONSE_RAW.

Funzione GET_RESPONSE_STATUS_CODE

Questa funzione restituisce il codice di stato della risposta HTTP come numero intero. Il codice di stato consente di identificare se la richiesta è riuscita.

Sintassi

DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN PLS_INTEGER;

Parametri

Parametro Descrizione
resp

Tipo di risposta HTTP restituito da DBMS_CLOUD.SEND_REQUEST.

Eccezioni

Eccezione Errore Descrizione
invalid_response ORA-20025

Oggetto del tipo di risposta non valido passato a DBMS_CLOUD.GET_RESPONSE_STATUS_CODE.

Funzione GET_RESPONSE_TEXT

Questa funzione restituisce la risposta HTTP in formato TEXT (VARCHAR2 o CLOB). In genere, la maggior parte delle API REST cloud restituisce una risposta JSON in formato testo. Questa funzione è utile se si prevede che la risposta HTTP sia in formato testo.

Sintassi

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

Parametri

Parametro Descrizione
resp

Tipo di risposta HTTP restituito da DBMS_CLOUD.SEND_REQUEST.

Eccezioni

Eccezione Errore Descrizione
invalid_response ORA-20025

Oggetto del tipo di risposta non valido passato a DBMS_CLOUD.GET_RESPONSE_TEXT.

Funzione GET_API_RESULT_CACHE_SIZE

Questa funzione restituisce la dimensione della cache dei risultati configurata. Il valore della dimensione della cache si applica solo alla sessione corrente.

Sintassi

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST Funzione e procedura

Questa funzione e procedura avvia una richiesta HTTP, ottiene la risposta e termina la risposta. Questa funzione fornisce un workflow per l'invio di una richiesta API REST cloud con argomenti e la funzione restituisce un codice di risposta e un payload. Se si utilizza la procedura, è possibile visualizzare i risultati e i dettagli delle risposte dai risultati salvati con la vista SESSION_CLOUD_API_RESULTS.

Sintassi

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL)
   RETURN DBMS_CLOUD_TYPES.resp;

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL);

Parametri

Parametro Descrizione

credential_name

Nome della credenziale per l'autenticazione con l'API cloud nativa corrispondente.

È possibile utilizzare 'OCI$RESOURCE_PRINCIPAL' come credential_name quando il principal risorsa è abilitato. Per ulteriori informazioni, vedere ENABLE_RESOURCE_PRINCIPAL.

uri

URI HTTP per effettuare la richiesta.

method

Metodo di richiesta HTTP: GET, PUT, POST, HEAD, DELETE. Utilizzare la costante del pacchetto DBMS_CLOUD per specificare il metodo.

Per ulteriori informazioni, vedere DBMS_CLOUD Costanti API REST.

headers

Intestazioni di richiesta HTTP per l'API cloud nativa corrispondente in formato JSON. Le intestazioni di autenticazione vengono impostate automaticamente e passano solo intestazioni personalizzate.

async_request_url

URL di richiesta asincrona.

Per ottenere l'URL, selezionare l'API di richiesta dall'elenco delle API (vedere https://docs.cloud.oracle.com/en-us/iaas/api/). Quindi, andare a trovare l'API per la richiesta nel riquadro sinistro. Ad esempio, Database Services API → Autonomous Database → StopAutonomousDatabase. Questa pagina mostra la home API (e mostra l'endpoint di base). Aggiungere quindi l'endpoint di base al percorso relativo ottenuto per il collegamento WorkRequest della richiesta di lavoro.

wait_for_states

L'attesa degli stati è di tipo DBMS_CLOUD_TYPES.wait_for_states_t. I valori riportati di seguito sono validi per gli stati previsti: 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

Per wait_for_states sono consentiti più stati. Il valore predefinito per wait_for_states deve attendere uno qualsiasi degli stati previsti: 'ACTIVE', 'CANCELED', 'COMPLETED', 'DELETED', 'FAILED', 'SUCCEEDED'.

timeout

Specifica il timeout, in secondi, delle richieste asincrone con i parametri async_request_url e wait_for_states.

Il valore predefinito è 0. Indica di attendere il completamento della richiesta senza timeout.

cache

Se TRUE specifica che la richiesta deve essere inserita nella cache nella cache API dei risultati REST.

Il valore predefinito è FALSE, ovvero le richieste API REST non vengono inserite nella cache.

cache_scope

Specifica se tutti possono avere accesso a questa cache dei risultati della richiesta. Valori validi: "PRIVATE" e "PUBLIC". Il valore predefinito è "PRIVATE".

body

Corpo della richiesta HTTP per le richieste PUT e POST.

Eccezioni

Eccezione Errore Descrizione
invalid_req_method ORA-20023

Il metodo di richiesta passato a DBMS_CLOUD.SEND_REQUEST non è valido.

invalid_req_header ORA-20024

Le intestazioni delle richieste passate a DBMS_CLOUD.SEND_REQUEST non sono in un formato JSON valido.

Note sull'uso

  • Se si utilizza Oracle Cloud Infrastructure, è necessario utilizzare un valore di credenziale basato sulla chiave di firma per credential_name. Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.

  • I parametri facoltativi async_request_url, wait_for_states e timeout consentono di gestire le richieste con tempi di esecuzione lunghi. Utilizzando questo modulo asincrono di send_request, la funzione attende lo stato di completamento specificato in wait_for_states prima di tornare. Con questi parametri nella richiesta di invio, si passano gli stati di ritorno previsti nel parametro wait_for_states e si utilizza il parametro async_request_url per specificare una richiesta di lavoro associata, la richiesta non viene restituita immediatamente. La richiesta analizza invece async_request_url finché lo stato restituito non è uno degli stati previsti oppure viene superato il valore timeout (timeout è facoltativo). Se non viene specificato alcun valore timeout, la richiesta attende che si verifichi uno stato trovato in wait_for_states.

Procedura SET_API_RESULT_CACHE_SIZE

Questa procedura imposta la dimensione massima della cache per la sessione corrente. Il valore della dimensione della cache si applica solo alla sessione corrente.

Sintassi

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

Parametri

Parametro Descrizione
cache_size

Impostare la dimensione massima della cache sul valore specificato cache_size. Se la nuova dimensione massima della cache è inferiore alla dimensione corrente, i record meno recenti verranno eliminati finché il numero di righe non sarà uguale alla dimensione massima della cache specificata. Il valore massimo è 10000.

Se la dimensione della cache è impostata su 0, l'inserimento nella cache viene disabilitato nella sessione.

La dimensione predefinita della cache è 10.

Eccezioni

Eccezione Errore Descrizione
invalid API result cache size ORA-20032

Il valore minimo è 0 e il valore massimo è 10000. Questa eccezione viene visualizzata quando il valore di input è minore di 0 o è maggiore di 10000.

Esempio

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

Esempi di API REST DBMS_CLOUD

Mostra esempi che utilizzano DBMS_CLOUD.SEND_REQUEST per creare ed eliminare un bucket di Oracle Cloud Infrastructure Object Storage e un esempio per elencare tutti i compartimenti nella tenancy.

Nota

Questi esempi mostrano le API di richiesta di Oracle Cloud Infrastructure e richiedono l'uso di una credenziale basata su chiave di firma per credential_name. Le credenziali basate sulla chiave di firma di Oracle Cloud Infrastructure includono gli argomenti private_key e fingerprint.

Ad esempio:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/
Per informazioni su DBMS_CLOUD.CREATE_CREDENTIAL, vedere CREATE_CREDENTIAL Procedure.

Crea esempio di bucket

Mostra un esempio che utilizza il metodo DBMS_CLOUD.SEND_REQUEST con HTTP POST per creare un bucket dell'area di memorizzazione degli oggetti denominato bucketname.

Per i dettagli sull'API di Oracle Cloud Infrastructure Object Storage Service per questo esempio, consulta CreateBucket.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/',
            method => DBMS_CLOUD.METHOD_POST,
            body => UTL_RAW.cast_to_raw(
                        JSON_OBJECT('name' value 'bucketname',
                                    'compartmentId' value 'compartment_OCID'))
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Note:

Esempio di eliminazione bucket

Mostra un esempio che utilizza il metodo DBMS_CLOUD.SEND_REQUEST con HTTP DELETE per eliminare un bucket dell'area di memorizzazione degli oggetti denominato bucketname.

Per i dettagli sull'API di Oracle Cloud Infrastructure Object Storage Service per questo esempio, consulta DeleteBucket.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucketname',
            method => DBMS_CLOUD.METHOD_DELETE
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Note:

Esempio di compartimenti elenco

Mostra un esempio che utilizza il metodo DBMS_CLOUD.SEND_REQUEST con il metodo GET HTTP per elencare tutti i compartimenti nella tenancy (compartimento radice). Questo esempio mostra come passare le intestazioni delle richieste in DBMS_CLOUD.SEND_REQUEST.

Per i dettagli sull'API del servizio Oracle Cloud Infrastructure Identity and Access Management per questo esempio, consulta ListCompartments.

--
-- List compartments
--
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
  root_compartment_ocid VARCHAR2(512) := '&1';
BEGIN
  -- Send request
  dbms_output.put_line('Send Request');
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://identity.region.oraclecloud.com/20160918/compartments?compartmentId=' || root_compartment_ocid,
            method => DBMS_CLOUD.METHOD_GET,
            headers => JSON_OBJECT('opc-request-id' value 'list-compartments')
          );
  dbms_output.put_line('Body: ' || '------------' || CHR(10) || DBMS_CLOUD.get_response_text(resp) || CHR(10));
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_status_code(resp));
  dbms_output.put_line(CHR(10));
END;
/

Dove: region è un'area endpoint. Per ulteriori informazioni, vedere il riferimento all'API IAM (Identity and Access Management) in Riferimento API e endpoint. Ad esempio, dove region è: uk-london-1.

Esempio di richiesta asincrona

Mostra un esempio che utilizza DBMS_CLOUD.SEND_REQUEST con il metodo HTTP POST per eseguire l'operazione di arresto di Autonomous Database e attendere lo stato. Questo esempio mostra come utilizzare DBMS_CLOUD.SEND_REQUEST con i parametri async_request_url, wait_for_states e timeout.

--
-- Sent Work Request Autonomous Database Stop Request with Wait for Status
DECLARE
    l_resp DBMS_CLOUD_TYPES.resp;
    l_resp_json JSON_OBJECT_T;
    l_key_shape JSON_OBJECT_T;
    l_body JSON_OBJECT_T;
    status_array DBMS_CLOUD_TYPES.wait_for_states_t;
BEGIN
  status_array := DBMS_CLOUD_TYPES.wait_for_states_t('SUCCEEDED');
  l_body := JSON_OBJECT_T('{}');
  l_body.put('autonomousDatabaseId', 'ocid');
-- Send request
  dbms_output.put_line(l_body.to_clob);
  dbms_output.put_line('Send Request');
  l_resp := DBMS_CLOUD.send_request(
                       credential_name    => 'NATIVE_CRED_OCI',
                       uri                => 'https://database.region.oraclecloud.com/20160918/autonomousDatabases/ocid/actions/stop',
                       method             => DBMS_CLOUD.METHOD_POST,
                       body               => UTL_RAW.cast_to_raw(l_body.to_clob),
                       async_request_url  => 'https://iaas.region.oraclecloud.com/20160918/workRequests',
                       wait_for_states    => status_array,
                       timeout            => 600
                  );
   dbms_output.put_line('resp body: '||DBMS_CLOUD.get_response_text(l_resp));
   dbms_output.put_line('resp headers: '||DBMS_CLOUD.get_response_headers(l_resp).to_clob);
END;
/

Dove: region è un'area endpoint. Per ulteriori informazioni, vedere il riferimento all'API IAM (Identity and Access Management) in Riferimento API e endpoint. Ad esempio, dove region è: uk-london-1.

ocid è l'identificativo della risorsa Oracle Cloud Infrastructure. Per ulteriori informazioni, vedere Identificativi risorsa.



Legenda nota a piè di pagina

Nota a piè di pagina 3: il supporto per le chiamate API REST di Azure Cloud è limitato al dominio "blob.windows.net".