DBMS_CLOUD Formati URI

Descrive il formato degli URI del file di origine nelle operazioni con DBMS_CLOUD. Il formato dipende dal servizio di storage degli oggetti in uso.

DBMS_CLOUD garantisce una comunicazione sicura e qualsiasi URI specificato deve utilizzare HTTPS, con https:// come prefisso per l'URI.

Formato URI nativo di Oracle Cloud Infrastructure Object Storage

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage nel realm commerciale (OC1), si consiglia di utilizzare il seguente formato URI che utilizza gli endpoint dedicati dello storage degli oggetti. Per ulteriori informazioni, consulta la sezione relativa agli endpoint dedicati dello storage degli oggetti.

https://namespace-string.objectstorage.region.oci.customer-oci.com/n/namespace-string/b/bucketname/o/filename
Nota

Gli URL degli endpoint dedicati dell'area di memorizzazione degli oggetti OCI sono supportati solo nei realm commerciali (OC1).

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage e non si trovano nel realm commerciale (OC1), è necessario utilizzare il seguente formato:

https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucket/o/filename

Ad esempio, nel realm commerciale (OC1) l'URI nativo per il file channels.txt nel bucket bucketname nel data center Phoenix è:

https://namespace.objectstorage.region.oci.customer-oci.com/n/namespace/b/bucketname/o/channels.txt

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.

È possibile trovare l'URI da Oracle Cloud Infrastructure Object Storage "Object Details" nel menu ellissi del lato destro nell'area di memorizzazione degli oggetti:

  1. Aprire la console di Oracle Cloud Infrastructure facendo clic su icona di navigazione accanto a Oracle Cloud.
  2. Nel menu di navigazione a sinistra di Oracle Cloud Infrastructure fare clic su Infrastruttura di base. In Storage degli oggetti, fare clic su Storage degli oggetti.
  3. In Ambito elenco selezionare un compartimento.
  4. Nella colonna Nome, selezionare un bucket.
  5. Nell'area Oggetti fare clic su Visualizza dettagli oggetto.
  6. Nella pagina Dettagli oggetto, il campo Percorso URL (URI) mostra l'URI per l'accesso all'oggetto.
Nota

I file di origine devono essere memorizzati in un bucket di livello di storage degli oggetti. Autonomous Database non supporta i bucket nel livello di storage di archivio. Per ulteriori informazioni, consulta la panoramica dello storage degli oggetti.

Formato URI Swift di Oracle Cloud Infrastructure Object Storage

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage nel realm commerciale (OC1), si consiglia di utilizzare il seguente formato URI che utilizza gli endpoint dedicati dello storage degli oggetti. Per ulteriori informazioni, consulta la sezione relativa agli endpoint dedicati dello storage degli oggetti.

https://namespace-string.swiftobjectstorage.region.oci.customer-oci.com/v1/namespace-string/bucket/filename
Nota

Gli URL degli endpoint dedicati dell'area di memorizzazione degli oggetti OCI sono supportati solo nei realm commerciali (OC1).

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage e non si trovano nel realm commerciale (OC1), è necessario utilizzare il seguente formato:

https://swiftobjectstorage.region.oraclecloud.com/v1/namespace-string/bucket/filename

Ad esempio, nel realm commerciale (OC1) l'URI Swift per il file channels.txt nel bucket bucketname nel data center Phoenix è:

https://namespace-string.swiftobjectstorage.us-phoenix-1.oci.customer-oci.com/v1/namespace-string/bucketname/channels.txt

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.

Nota

I file di origine devono essere memorizzati in un bucket di livello di storage degli oggetti. Autonomous Database non supporta i bucket nel livello di storage di archivio. Per ulteriori informazioni, consulta la panoramica dello storage degli oggetti.

Formato URI di Oracle Cloud Infrastructure Object Storage mediante l'URL della richiesta preautenticata

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage, è possibile utilizzare gli URI preautenticati di Oracle Cloud Infrastructure. Quando si crea una richiesta preautenticata, viene generato un URL univoco. È quindi possibile fornire l'URL univoco agli utenti dell'organizzazione, dei partner o di terze parti per accedere alla destinazione della risorsa di storage degli oggetti identificata nella richiesta preautenticata.

Nota

valutare attentamente i requisiti aziendali e le ramificazioni per la sicurezza dell'accesso pre‐autenticato. Quando si crea l'URL della richiesta preautenticata, tenere presenti la scadenza e il tipo di accesso per assicurarsi che siano appropriati per l'uso.

Un URL di richiesta preautenticata consente a chiunque disponga dell'accesso URL alle destinazioni identificate nella richiesta per tutto il tempo in cui la richiesta è attiva. Oltre a considerare le esigenze operative dell'accesso preautenticato, è altrettanto importante gestirne la distribuzione.

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage nel realm commerciale (OC1), si consiglia di utilizzare il seguente formato URI che utilizza gli endpoint dedicati dello storage degli oggetti. Per ulteriori informazioni, consulta la sezione relativa agli endpoint dedicati dello storage degli oggetti.

https://namespace-string.objectstorage.region.oci.customer-oci.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename
Nota

Gli URL degli endpoint dedicati dell'area di memorizzazione degli oggetti OCI sono supportati solo nei realm commerciali (OC1).

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage e non si trovano nel realm commerciale (OC1), è necessario utilizzare il seguente formato:

https://objectstorage.region.oraclecloud.com.com/p/encrypted_string/n/namespace-string/b/bucket/o/filename

Ad esempio, nel realm commerciale (OC1) un URI preautenticato di esempio per il file channels.txt nel bucket nome_bucket nel data center Phoenix è:

https://namespace-string.objectstorage.us-phoenix-1.oci.customer-oci.com/p/2xN-uDtWJNsiD910UCYGue/n/namespace-string/b/bucketname/o/channels.txt

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.

È possibile utilizzare un URL preautenticato in qualsiasi procedura DBMS_CLOUD che richiede un URL per accedere ai file nell'area di memorizzazione degli oggetti di Oracle Cloud Infrastructure, senza dover creare una credenziale. È necessario specificare il parametro credential_name come NULL oppure non fornire un parametro credential_name.

Ad esempio:

BEGIN
  DBMS_CLOUD.COPY_DATA(
     table_name =>'CHANNELS',
     file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/p/unique-pre-authenticated-string/n/namespace-string/b/bucketname/o/channels.txt',
     format => json_object('delimiter' value ',') );
END;
/
Nota

Una lista di URL misti è valida. Se la lista di URL contiene sia URL preautenticati che URL che richiedono l'autenticazione, DBMS_CLOUD utilizza il valore credential_name specificato per accedere agli URL che richiedono l'autenticazione e per gli URL preautenticati il valore credential_name specificato viene ignorato.

Per ulteriori informazioni, vedere Uso delle richieste pre-autenticazione.

Formato URI mediante URL pubblico

Se i file di origine risiedono in un'area di memorizzazione degli oggetti che fornisce URL pubblici, è possibile utilizzare URL pubblici con procedure DBMS_CLOUD. Pubblico indica che il servizio di storage degli oggetti supporta l'accesso anonimo e non autenticato ai file dell'area di memorizzazione degli oggetti. Consulta il servizio di storage degli oggetti cloud per i dettagli su come rendere pubblico un oggetto in un'area di memorizzazione degli oggetti supportata.

Nota

Valutare attentamente i requisiti aziendali e le ramificazioni in termini di sicurezza derivanti dall'uso degli URL pubblici. Quando si utilizzano gli URL pubblici, a causa del contenuto del file non autenticato, assicurarsi che sia appropriato per l'uso.

È possibile utilizzare un URL pubblico in qualsiasi procedura DBMS_CLOUD che utilizza un URL per accedere ai file nell'area di memorizzazione degli oggetti, senza dover creare una credenziale. È necessario specificare il parametro credential_name come NULL oppure non fornire un parametro credential_name.

Ad esempio, nell'esempio seguente viene utilizzato DBMS_CLOUD.COPY_DATA senza credential_name:

BEGIN
  DBMS_CLOUD.COPY_DATA(
     table_name =>'CHANNELS',
     file_uri_list =>'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/chan_v3.dat',
     format => json_object('delimiter' value ',') );
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.

Nota

Una lista di URL misti è valida. Se la lista di URL contiene sia URL pubblici che URL che richiedono l'autenticazione, DBMS_CLOUD utilizza il file credential_name specificato per accedere agli URL che richiedono l'autenticazione e per gli URL pubblici il file credential_name specificato viene ignorato.

Consulta la sezione relativa ai bucket pubblici per informazioni sull'uso dei bucket pubblici di Oracle Cloud Infrastructure.

Formato URI di Oracle Cloud Infrastructure Object Storage Classic

Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage Classic, vedere la pagina REST per una descrizione del formato URI per l'accesso ai file: Informazioni sugli URL REST per le risorse Oracle Cloud Infrastructure Object Storage Classic.

Formato URI Amazon S3

Se i file di origine risiedono in Amazon S3, vedere quanto segue per una descrizione del formato URI per l'accesso ai file: Accesso a un bucket.

Ad esempio, quanto riportato di seguito fa riferimento al file channels.txt nel bucket adb nell'area us-west-2.

https://s3-us-west-2.amazonaws.com/adb/channels.txt 

È possibile utilizzare un URL prestabilito in qualsiasi procedura DBMS_CLOUD che utilizza un URL per accedere ai file nell'area di memorizzazione degli oggetti Amazon S3, senza dover creare una credenziale. Per utilizzare un URL presigned in qualsiasi procedura DBMS_CLOUD, specificare il parametro credential_name come NULL o non fornire un parametro credential_name.

Per ulteriori informazioni, vedere Condivisione di un oggetto con altri.

Nota

DBMS_CLOUD supporta la sintassi standard degli endpoint Amazon S3 per accedere ai bucket. DBMS_CLOUD non supporta gli endpoint legacy Amazon S3. Per ulteriori informazioni, vedere Endpoint precedenti.

Azure Blob Storage o Azure Data Lake Storage URI Format

Se i file di origine risiedono in Azure Blob Storage o in Azure Data Lake Storage, vedere quanto segue per una descrizione del formato URI per l'accesso ai file: Sintassi URI risorsa.

Ad esempio, quanto segue fa riferimento al file channels.txt nel contenitore adb nell'account di memorizzazione adb_user:

https://adb_user.blob.core.windows.net/adb/channels.txt
Nota

È possibile utilizzare l'URL SAS (Shared Access Signatures) in qualsiasi procedura DBMS_CLOUD che utilizza un URL per accedere ai file in Storage Blob di Azure o Storage Data Lake di Azure, senza dover creare una credenziale. Per utilizzare un URL SAS (Shared Access Signature), specificare il parametro credential_name come NULL oppure non fornire un parametro credential_name.

Per ulteriori informazioni, vedere Concedere l'accesso limitato alle risorse di Azure Storage utilizzando le firme di accesso condiviso (SAS).

Formato URI compatibile con Amazon S3

DBMS_CLOUD supporta le implementazioni dei servizi di storage degli oggetti che supportano gli URL compatibili con Amazon S3, inclusi i seguenti servizi:

  • Oracle Cloud Infrastructure Object Storage con URL compatibile con Amazon S3
  • Google Cloud Storage con URL compatibile con Amazon S3
  • Wasabi Hot Cloud Storage con URL compatibile con Amazon S3
Nota

Per utilizzare DBMS_CLOUD con un'area di memorizzazione degli oggetti compatibile con Amazon S3, è necessario fornire credenziali valide. Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

Se i file di origine risiedono in un servizio che supporta gli URI compatibili con Amazon S3, utilizzare il seguente formato URI per accedere ai file:

  • URL compatibile con Oracle Cloud Infrastructure Object Storage S3

    Se i file di origine risiedono in Oracle Cloud Infrastructure Object Storage nel realm commerciale (OC1), si consiglia di utilizzare i formati URL dell'oggetto e URL del bucket elencati di seguito per il realm commerciale (OC1). Per ulteriori informazioni, consulta la sezione relativa agli endpoint dedicati dello storage degli oggetti.

    Nota

    Gli URL degli endpoint dedicati dell'area di memorizzazione degli oggetti OCI sono supportati solo nei realm commerciali (OC1).

    Formati URL oggetto

    • Supportato solo nel realm commerciale (OC1):

      https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name/object_name
    • Supportato in tutte le zone:

      https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name/object_name

    Formati URL bucket:

    • Supportato solo nel realm commerciale (OC1):

      https://mynamespace.compat.objectstorage.region.oci.customer-oci.com/bucket_name
    • Supportato in tutte le zone:

      https://mynamespace.compat.objectstorage.region.oraclecloud.com/bucket_name

    Per ulteriori informazioni, vedere Compatibilità di Amazon S3 e API del servizio di storage degli oggetti.

  • URL compatibile con Google Cloud Storage S3

    Formato URL oggetto:

    https://bucketname.storage.googleapis.com/object_name

    Formato URL bucket:

    https://bucketname.storage.googleapis.com/

    Per ulteriori informazioni, consulta la sezione relativa alla migrazione da Amazon S3 allo storage cloud e agli endpoint delle richieste.

  • URL compatibile con Wasabi S3

    Formato URL oggetto:

    https://bucketname.s3.region.wasabisys.com/object_name

    Formato URL bucket:

    https://bucketname.s3.region.wasabisys.com/

    Per ulteriori informazioni, consulta Wasabi S3 API Reference e Service URL for Wasabi's Storage Regions.

Formato URL raw GitHub

DBMS_CLOUD supporta gli URL non elaborati GitHub per accedere ai dati da un repository GitHub.

Nota

Per l'accesso DBMS_CLOUD con gli URL raw GitHub, l'accesso al repository è limitato alla funzionalità di sola lettura. Le API DBMS_CLOUD, ad esempio DBMS_CLOUD.PUT_OBJECT, che scrivono dati non sono supportate con le API DBMS_CLOUD in un repository GitHub.

In alternativa, utilizzare DBMS_CLOUD_REPO.PUT_FILE per caricare i dati in un repository GitHub.

Utilizzare gli URL non elaborati GitHub con le API DBMS_CLOUD per accedere ai file di origine che risiedono in un repository GitHub. Quando si cerca un file in GitHub e si fa clic sul collegamento Raw, viene visualizzato l'URL raw GitHub. Il dominio raw.githubusercontent.com fornisce versioni non elaborate dei file memorizzati nei repository GitHub.

Ad esempio, utilizzando DBMS_CLOUD.GET_OBJECT:

BEGIN
 DBMS_CLOUD.GET_OBJECT(
   credential_name => 'MY_CRED',
   object_uri      => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/adb-loading.csv',
   directory_name  => 'DATA_PUMP_DIR'
  );
END;
/

Ad esempio, utilizzando DBMS_CLOUD.CREATE_EXTERNAL_TABLE:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
    credential_name => 'MY_CRED',
    table_name      => 'EMPLOYEES_EXT',
    file_uri_list   => 'https://raw.githubusercontent.com/myaccount/myrepo/master/data-management-library/autonomous-database/*.csv',
    column_list     => 'name varchar2(30), gender varchar2(30), salary number',
    format          => JSON_OBJECT('type' value 'csv')
  );
END;
/
SELECT * FROM employees_ext;

Le procedure DBMS_CLOUD che utilizzano un URL per accedere a un repository GitHub non richiedono credenziali con repository GitHub con visibilità pubblica. Per utilizzare un URL di visibilità pubblica, è possibile specificare il parametro credential_name come NULL oppure non fornire un parametro credential_name. Per ulteriori informazioni, vedere Impostazione della visibilità del repository.

Formati URI aggiuntivi gestiti dal cliente

Oltre al URIs preconfigurato e riconosciuto con i relativi nomi di dominio completamente qualificati (FQDNs), DBMS_CLOUD non è in grado di determinare lo schema di autenticazione appropriato per gli endpoint gestiti dal cliente URIs. In questi casi, DBMS_CLOUD si basa sullo schema URI appropriato per identificare lo schema di autenticazione per l'endpoint gestito dal cliente.
Schema URI Tipo di autenticazione Descrizione metodo di accesso Esempio di URI
di base:// autenticazione Basic Il nome utente e la password memorizzati nell'oggetto delle credenziali del database vengono utilizzati per autenticare la richiesta HTTP basic://api.github.com/users/myaccount
portatore:// autenticazione del token bearer Il token del servizio di trasporto memorizzato nel campo della password nell'oggetto delle credenziali del database viene utilizzato per specificare l'intestazione di autorizzazione per la richiesta HTTP bearer://api.sendgrid.com/v3/resource
oci:// Nativo OCI Chiave di firma OCI ottenuta dall'oggetto credenziali del database memorizzato e utilizzato per firmare le richieste utilizzando il protocollo di autenticazione OCI oci://objectstorage.us-ashburn-1.oraclecloud.com
pubblico:// Nessuna autenticazione URL pubblici public://cms.data.gov/
s3:// Compatibile con Amazon Web Services S3 Chiave di accesso e chiave segreta ottenute dal campo nome utente/password dell'oggetto credenziali del database e autenticazione compatibile con S3 eseguita per la richiesta HTTP. s3://bucket.myprivatesite.com/file1.csv

Esempi:

Endpoint gestito dal cliente che utilizza l'autenticazione compatibile con S3.

Questo esempio mostra come per il nuovo URIs, i clienti possono aggiungere il pattern di nomi host pubblici o privati utilizzando il package DBMS_NETWORK_ACL_ADMIN. Il blocco di codice, eseguito dall'utente ADMIN, consente l'accesso HTTPS per l'utente SCOTT agli endpoint nel dominio *.myprivatesite.com. Viene quindi illustrato come l'utente SCOTT accede all'endpoint appena abilitato. Si noti che la credenziale MY_CRED per l'utente SCOTT deve memorizzare la chiave di accesso e la chiave segreta per l'autenticazione compatibile con S3 eseguita per la richiesta HTTP indicata dal prefisso URI.


BEGIN
   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => '*.myprivatesite.com',
         ace => xs$ace_type(privilege_list => xs$name_list('http'),
                            principal_name => 'SCOTT',
                            principal_type => xs_acl.ptype_db),
         private_target => TRUE   );
END;
/

BEGIN
   DBMS_CLOUD.get_object(
       credential_name => 'MY_CRED',
       object_uri      => 's3://bucket.myprivatesite.com/file1.csv',
       directory_name  => 'MY_DIR'  );
END;
/

Endpoint gestito dal cliente con accesso pubblico

Questo esempio mostra come registrare l'utente SCOTT per accedere alle API REST pubbliche. L'utente ADMIN crea un'ACL di rete per l'host per fornire l'accesso all'utente SCOTT.


BEGIN
   DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'data.cms.gov',
         ace => xs$ace_type(privilege_list => xs$name_list('http'),
                            principal_name => 'SCOTT',
                            principal_type => xs_acl.ptype_db)
   );
END;
/

SELECT DBMS_CLOUD.get_response_text(
          DBMS_CLOUD.send_request(
              uri     => 'public://data.cms.gov/provider-data/api/1/datastore/imports/a',
              method  => DBMS_CLOUD.METHOD_GET,
              headers => JSON_OBJECT('Accept' VALUE 'application/json')
          )
       )
   FROM DUAL;
/