Integrate Oracle Exadata Database Service on Dedicated Infrastructure and Azure Blob Storage

  1. Faça log-in na console do Azure para obter informações do Azure Blob Storage do qual o banco de dados Oracle Exadata Database Service on Dedicated Infrastructure carregará e consultará dados. Essas informações são necessárias para informar ao pacote DBMS_CLOUD como estabelecer conexão com os objetos do Azure Blob Storage.
    Obtenha os seguintes detalhes:
    • Credenciais do Azure Blob: Nome de usuário e senha para acessar o Azure Blob Storage.
    • Nome do Armazenamento do Azure Blob: Nome do Armazenamento do Azure Blob no qual os dados são armazenados, geralmente no formato blobstoragename.blob.core.windows.net.
    • URL do Azure Blob: URL do Azure Blob Storage no qual os dados são armazenados, geralmente no formato https://blobstoragename.blob.core.windows.net/dirname/object_name.
    • Ponto Final Privado do Azure Blob: Endereço IP do ponto final privado do Azure Blob Storage. Se não existir um ponto final privado, crie um e anote o endereço IP.
  2. No menu do OCI, selecione Gerenciamento de Rede/DNS para criar uma Zona de DNS Privada. Na nova Zona de DNS Privado, adicione um registro para o nome do Azure Blob Storage na etapa 1 para resolver o endereço IP do ponto final privado do Azure Blob na etapa 1.
  3. No menu do OCI, selecione Gerenciamento de Rede/DNS e crie uma View Privada de DNS. Adicione a Zona de DNS Privada criada na etapa 2 a essa view privada de DNS recém-criada e ative as alterações.
  4. No menu do OCI, selecione Rede/Rede de Cliente Virtual (VCN). Selecione a VCN criada quando o OracleDB for Azure para o Oracle Exadata Database Service on Dedicated Infrastructure foi provisionado (altere o compartimento, se necessário). Selecione o link do resolvedor de DNS e adicione a View Privada de DNS criada anteriormente para o resolvedor de DNS.
    Isso permite a resolução de nomes e endereços IP do Oracle Exadata Database Service on Dedicated Infrastructure para o ponto final privado do Azure Blob Storage.
  5. Faça log-in em um dos nós do Cluster de VMs do Oracle Exadata Database Service on Dedicated Infrastructure para usar o comando nslookup para verificar se a resolução do nome do host para o endereço IP está funcionando para o nome do host e o IP do ponto final privado do Azure SQL Server.
    Por exemplo:
    [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 ~]$
    As variáveis do exemplo têm os seguintes valores:
    • blobstoragename é o nome do Azure Blob Storage na etapa 1.
    • IP_address_of_Azure_Blob_private_endpoint é o endereço IP do ponto final privado do Azure Blob na etapa 1.
  6. Faça log-in no banco de dados plugável do Oracle Exadata Database Service on Dedicated Infrastructure para criar ou selecionar um usuário para ter a atribuição cloud_user. Observe o nome de usuário e a senha do usuário. Os usuários com a atribuição cloud_user terão o privilégio de usar o pacote DBMS_CLOUD.
  7. Instale o pacote DBMS_CLOUD no banco de dados 19c ou mais recente do Oracle Exadata Database Service on Dedicated Infrastructure seguindo o artigo do My Oracle Support How to Setup and Use DBMS_CLOUD Package (Doc ID 2748362.1). Consulte a seção Revisar Documentação para obter detalhes. Observe o seguinte ao instalar o pacote DBMS_CLOUD:
    • Na seção do artigo do My Oracle Support Conceder os privilégios mínimos a um usuário ou função para usar DBMS_CLOUD, use o nome de usuário criado na etapa 6.
    • Na seção de artigo do My Oracle Support Criar Wallet SSL com Certificados, esta etapa adicionará certificados raiz à wallet SSL. Você pode ignorar a criação da etapa da wallet porque o Oracle Exadata Database Service on Dedicated Infrastructure já tem uma wallet para gerenciar certificados SSL (a Wallet da Grade). Em vez disso, adicione os certificados raiz à Wallet da Grade, que está localizada em /var/opt/oracle/dbaas_acfs/grid/tcps_wallets. Você precisará da senha do Grid Wallet para adicionar os certificados raiz. Consulte o artigo Get Password of ASM and Wallets (Doc ID 2814361.1) do My Oracle Support na seção Review Documentation para obter detalhes sobre como obter a senha do Grid Wallet.
  8. Faça log-in no banco de dados plugável do Oracle Exadata Database Service on Dedicated Infrastructure para criar uma credencial do Azure usando o pacote DBMS_CLOUD instalado na etapa anterior.
    [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;
    /
    As variáveis do exemplo têm os seguintes valores:
    • exadb_name é o nome do banco de dados Oracle Exadata Database Service on Dedicated Infrastructure.
    • Username_From_Step_6 é o nome de usuário da etapa 6.
    • Password_From_Step_6 é a senha da etapa 6.
    • pdbname é o nome do banco de dados plugável.
    • Azure_Blob_Storage_Username_from_Step_1 é o nome de usuário do Azure Blob Storage na etapa 1.
    • Azure_Blob_Storage_Password_from_Step_1 é a senha do Azure Blob Storage na etapa 1.
  9. Depois que a credencial do Azure for criada, crie uma tabela externa para acessar o(s) objeto(s) do Azure Blob Storage da seguinte forma:
    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;
    /
    Por exemplo, se o objeto Blob a ser acessado for um arquivo de texto separado por vírgula com 3 colunas, o comando poderá se parecer com:
    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. Execute uma consulta para verificar se o banco de dados plugável do Oracle Exadata Database Service on Dedicated Infrastructure pode consultar as tabelas criadas acima.
    Por exemplo:
    select count(*) from Table_Name
    Table_Name é o nome de uma tabela no seu banco de dados a ser consultada.