Integra Oracle Exadata Database Service on Dedicated Infrastructure e Azure Blob Storage

  1. Eseguire il login alla console di Azure per ottenere informazioni per lo Storage Blob di Azure da cui il database di Oracle Exadata Database Service on Dedicated Infrastructure caricherà e interrogherà i dati. Queste informazioni sono necessarie per indicare al pacchetto DBMS_CLOUD come connettersi agli oggetti Azure Blob Storage.
    Ottenere i seguenti dettagli:
    • Credenziali Blob di Azure: nome utente e password per accedere a Azure Blob Storage.
    • Nome memorizzazione Blob di Azure: il nome della Memorizzazione Blob di Azure in cui sono memorizzati i dati, in genere nel formato blobstoragename.blob.core.windows.net.
    • URL Blob di Azure: URL per Azure Blob Storage in cui sono memorizzati i dati, in genere nel formato https://blobstoragename.blob.core.windows.net/dirname/object_name.
    • Azure Blob Private Endpoint: indirizzo IP dell'endpoint privato di Azure Blob Storage. Se non esiste un endpoint privato, crearne uno e prendere nota dell'indirizzo IP.
  2. Dal menu OCI, selezionare Networking/DNS Management per creare una zona DNS privata. Nella nuova zona DNS privata aggiungere un record per il nome Azure Blob Storage dal passo 1 per risolvere l'indirizzo IP dell'endpoint privato Azure Blob dal passo 1.
  3. Dal menu OCI, selezionare Gestione di rete/DNS e creare una vista privata DNS. Aggiungere la zona DNS privata creata nel passo 2 a questa vista privata DNS appena creata e attivare le modifiche.
  4. Nel menu OCI selezionare Networking/Virtual Client Network (VCN). Selezionare la VCN creata al momento del provisioning di OracleDB for Azure per Oracle Exadata Database Service on Dedicated Infrastructure (se necessario, modificare il compartimento). Selezionare il collegamento del risolutore DNS, quindi aggiungere la vista privata DNS creata in precedenza al risolutore DNS.
    Ciò consente la risoluzione di nomi e indirizzi IP da Oracle Exadata Database Service on Dedicated Infrastructure all'endpoint privato di Azure Blob Storage.
  5. Eseguire il login a uno dei nodi cluster VM di Oracle Exadata Database Service on Dedicated Infrastructure per utilizzare il comando nslookup per verificare che la risoluzione del nome host all'indirizzo IP funzioni per il nome host e l'IP dell'endpoint privato di Azure SQL Server.
    Ad esempio:
    [opc@exa_dbnodex ~]$ nslookup blobstoragename.blob.core.windows.net
    Server: 169.254.169.254
    Address: 169.254.169.254#53
    Non-authoritative answer:
    Name: blobstoragename.blob.core.windows.net
    Address: IP_address_of_Azure_Blob_private_endpoint
     [opc@exa_dbnodex ~]$
    Le variabili nell'esempio sono i seguenti:
    • blobstoragename è il nome Azure Blob Storage del passo 1.
    • IP_address_of_Azure_Blob_private_endpoint è l'indirizzo IP dell'endpoint privato Blob di Azure dal passo 1.
  6. Eseguire il login al pluggable database Oracle Exadata Database Service on Dedicated Infrastructure per creare o selezionare un utente ad avere il ruolo cloud_user. Prendere nota del nome utente e della password dell'utente. Gli utenti con ruolo cloud_user avranno il privilegio di utilizzare il pacchetto DBMS_CLOUD.
  7. Installare il pacchetto DBMS_CLOUD sul database 19c o versione Oracle Exadata Database Service on Dedicated Infrastructure seguendo l'articolo My Oracle Support How to Setup and Use DBMS_CLOUD Package (Doc ID 2748362.1). Per informazioni dettagliate, vedere la sezione Rivedi documentazione. Durante l'installazione del pacchetto DBMS_CLOUD, tenere presente quanto riportato di seguito.
    • Nella sezione dell'articolo di My Oracle Support Concedere i privilegi minimi a un utente o ruolo per l'utilizzo di DBMS_CLOUD, utilizzare il nome utente creato nel passo 6.
    • Nella sezione dell'articolo di My Oracle Support, Crea wallet SSL con certificati, questo passo aggiunge i certificati radice al wallet SSL. You can skip the creation of the wallet step because Oracle Exadata Database Service on Dedicated Infrastructure already has a wallet to manage SSL certificates (the Grid Wallet). È necessario aggiungere i certificati radice al wallet Grid, che si trova in /var/opt/oracle/dbaas_acfs/grid/tcps_wallets. Per aggiungere i certificati radice, sarà necessaria la password di Grid Wallet. Per informazioni dettagliate su come ottenere la password del wallet Grid, vedere l'articolo My Oracle Support Get Password of ASM and Wallets (ID documento 2814361.1) nella sezione Revisione documentazione.
  8. Eseguire il login al pluggable database Oracle Exadata Database Service on Dedicated Infrastructure per creare una credenziale Azure utilizzando il pacchetto DBMS_CLOUD installato nel passo precedente.
    [opc@exa-dbnodex ~]$ sudo su - oracle
    Last login: Tue Sep 13 20:06:30 UTC 2022
    [oracle@exa-dbnodex ~]$ . ./exa_dbname.env
    [oracle@exa-dbnodex ~]$sqlplus
    Username_From_Step_6/Password_From_Step_6@'(DESCRIPTION
    =(ADDRESS=(PROTOCOL=TCP)(HOST=exascan.customersubnet1.cvcn.oraclevcn.com)
    (PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdbna
    me.customersubnet1.cvcn.oraclevcn.com)(FAILOVER_MODE=(TYPE=select)(MET
    HOD=basic))))'
    SQL>BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'AZ_CRED',
    username => 'Azure_Blob_Storage_Username_from_Step_1',
    password => ‘Azure_Blob_Storage_Password_from_Step_1' );
    END;
    /
    Le variabili nell'esempio sono i seguenti:
    • exadb_name è il nome del database Oracle Exadata Database Service on Dedicated Infrastructure.
    • Username_From_Step_6 è il nome utente dal passo 6.
    • Password_From_Step_6 è la password indicata al passaggio 6.
    • pdbname è il nome del pluggable database.
    • Azure_Blob_Storage_Username_from_Step_1 è il nome utente di Azure Blob Storage dal passo 1.
    • Azure_Blob_Storage_Password_from_Step_1 è la password di Azure Blob Storage dal passo 1.
  9. Dopo aver creato le credenziali di Azure, creare una tabella esterna per accedere agli oggetti di Azure Blob Storage come descritto di seguito.
    SQL>BEGIN
     DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
    table_name =>'Table_Name',
    credential_name =>'AZ_CRED',
    file_uri_list => 'Azure_Blob_URL_From_Step_1',
    format => json_object('delimiter' value ','),
    column_list => 'Column1_Name Type, Column2_Name Type,
    Column3_Name Type' );
    END;
    /
    Ad esempio, se l'oggetto Blob a cui accedere è un file di testo separato da virgole con 3 colonne, il comando potrebbe essere simile al seguente:
    SQL>BEGIN
     DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
    table_name =>'CHANNELS_EXT',
    credential_name =>'AZ_CRED',
    file_uri_list
    =>'https://odsaexternaltables.blob.core.windows.net/data/channels.txt',
    format => json_object('delimiter' value ','),
    column_list => 'CHANNEL_ID NUMBER, CHANNEL_DESC VARCHAR2(20),
    CHANNEL_CLASS VARCHAR2(20)' );
    END;
    /
  10. Esegui una query per verificare il pluggable database Oracle Exadata Database Service on Dedicated Infrastructure in grado di eseguire query sulle tabelle create in precedenza.
    Ad esempio:
    select count(*) from Table_Name
    Table_Name è il nome di una tabella del database su cui eseguire la query.