Criar Links de Banco de Dados de um Autonomous Database para um Oracle Database Acessível Publicamente com uma Wallet (mTLS)

Você pode criar links de banco de dados de um Autonomous Database para um banco de dados Oracle de destino que esteja em um ponto final público.

Para usar links de banco de dados com o Autonomous Database, o banco de dados de destino deve ser configurado para usar a autenticação TCP/IP com SSL (TCPS). Os Autonomous Databases usam a autenticação TCP/IP com SSL (TCPS) por padrão; portanto, você não precisa fazer nenhuma configuração adicional no seu banco de dados de destino para estabelecer link com outro Autonomous Database. Outros bancos de dados Oracle devem ser configurados para usar a autenticação TCP/IP com SSL (TCPS). Consulte Configuring Secure Sockets Layer Authentication no Oracle Database 19c Security Guide ou no Oracle Database 23ai Security Guide para obter mais informações.

Para criar links de banco de dados para um destino público, o Oracle Database de destino deve estar acessível. Alguns bancos de dados podem limitar o acesso (por exemplo, usando Listas de Controle de Acesso). Certifique-se de ativar seu banco de dados de destino para permitir o acesso do banco de dados de origem para que o link do banco de dados funcione. Se você limitar o acesso com Listas de Controle de Acesso (ACLs), poderá encontrar o endereço IP de saída do Autonomous Database de origem e permitir que esse endereço IP se conecte ao seu banco de dados de destino.

Consulte Como Criar um Link de Banco de Dados do Seu Autonomous Database para uma Instância do Database Cloud Service para obter mais informações.

Para criar links de banco de dados para um banco de dados Oracle de destino com uma wallet (mTLS):

  1. Copie a wallet do banco de dados de destino, cwallet.sso, que contém os certificados do banco de dados de destino para o Armazenamento de Objetos.

    Observe o seguinte para o arquivo de wallet:

    • O arquivo da wallet com o ID e a senha do usuário do Banco de Dados fornece acesso aos dados no Oracle Database de destino. Armazene os arquivos da wallet em um local seguro. Só compartilhe os arquivos da wallet com usuários autorizados.

    • Não renomeie o arquivo da wallet. O arquivo da wallet no Object Storage deve ser chamado de cwallet.sso.

  2. Criar credenciais para acessar seu Armazenamento de Objetos no qual você armazena o arquivo de wallet cwallet.sso. Consulte Procedimento CREATE_CREDENTIAL para obter informações sobre os parâmetros de nome de usuário e senha para diferentes serviços de armazenamento de objetos.
  3. Crie um diretório no Autonomous Database para o arquivo de wallet cwallet.sso.

    Por exemplo:

    CREATE DIRECTORY dblink_wallet_dir AS 'directory_path_of_your_choice';
                

    Consulte Criar Diretório no Autonomous Database para obter informações sobre a criação de diretórios.

  4. Use DBMS_CLOUD.GET_OBJECT para fazer upload da wallet do banco de dados de destino para o diretório criado na etapa anterior, DBLINK_WALLET_DIR.

    Por exemplo:

    BEGIN 
        DBMS_CLOUD.GET_OBJECT(
            credential_name => 'DEF_CRED_NAME',
            object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/cwallet.sso',
            directory_name => 'DBLINK_WALLET_DIR'); 
    END;
    /

    Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

    Observação:

    O credential_name que você usa nesta etapa são as credenciais do Armazenamento de Objetos. Na próxima etapa, você criará as credenciais para acessar o banco de dados de destino.
  5. Na instância do Autonomous Database, crie credenciais para acessar o banco de dados de destino. Os parâmetros username e password que você especifica com DBMS_CLOUD.CREATE_CREDENTIAL são as credenciais do banco de dados de destino que você usa para criar o link de banco de dados.

    Observação:

    É obrigatório fornecer o parâmetro credential_name.

    Por exemplo:

    BEGIN
        DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DB_LINK_CRED',
            username => 'NICK',
            password => 'password');
    END;
    /

    Todos os caracteres do parâmetro username devem estar em letras maiúsculas.

    Esta operação armazena as credenciais no banco de dados em um formato criptografado. Você pode usar qualquer nome para o nome da credencial.

  6. Crie o link de banco de dados para o banco de dados de destino usando DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Por exemplo:

    BEGIN
        DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
            db_link_name => 'SALESLINK',
            hostname => 'adb.eu-frankfurt-1.oraclecloud.com', 
            port => '1522',
            service_name => 'example_medium.atpc.example.oraclecloud.com',
            ssl_server_cert_dn => 'CN=atpc.example.oraclecloud.com,OU=Oracle BMCS FRANKFURT,O=Oracle Corporation,L=Redwood City,ST=California,C=US',
            credential_name => 'DB_LINK_CRED',
            directory_name => 'DBLINK_WALLET_DIR');
    END;
    /

    Usuários diferentes de ADMIN exigem privilégios para executar DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.

    Se o arquivo da wallet no diretório especificado com directory_name não for cwallet.sso, o procedimento reportará um erro como: ORA-28759: failure to open file.

  7. Use o link de banco de dados criado para acessar dados no banco de dados de destino.

    Por exemplo:

    SELECT * FROM employees@SALESLINK;
                

Para as credenciais criadas na Etapa 5, as credenciais do banco de dados de destino, se a senha do usuário de destino for alterada, você poderá atualizar a credencial que contém as credenciais do usuário de destino da seguinte forma:

BEGIN
    DBMS_CLOUD.UPDATE_CREDENTIAL (
        credential_name => 'DB_LINK_CRED',
        attribute => 'PASSWORD',
        value => 'password' );
END;
/

Em que password é a nova senha.

Após essa operação, os links de banco de dados existentes que usam essa credencial continuam funcionando sem que seja necessário eliminar e recriar os links de banco de dados.

Para obter informações adicionais, consulte:

Tópicos Relacionados

Observações de Link de Banco de Dados com um Oracle Database de Destino

Fornece observações para criar links de banco de dados para um banco de dados Oracle de destino (quando o destino não é um Autonomous Database)

Observações para links de banco de dados para outros bancos de dados Oracle:

  • Somente um arquivo de wallet é válido por diretório para uso com links de banco de dados. Você só pode fazer upload de um cwallet.sso de cada vez para o diretório escolhido para arquivos de wallet (por exemplo, DBLINK_WALLET_DIR). Isso significa que, com um cwallet.sso em DBLINK_WALLET_DIR, você só pode criar links para os bancos de dados para os quais a wallet nesse diretório é válida. Para usar vários arquivos cwallet.sso com links de banco de dados, crie diretórios adicionais e coloque cada cwallet.sso em um diretório diferente. Quando você criar links de banco de dados com DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK, especifique o diretório que contém a wallet com o parâmetro directory_name.

    Consulte Criar Diretório no Autonomous Database para obter informações sobre a criação de diretórios.

  • As versões do banco de dados Oracle de destino suportadas para links de banco de dados para outro Oracle Database são: 19c, 12.2.0 e 12.1.0.

    Observação:

    Para obter informações completas sobre versões suportadas, consulte Client Server Interoperability Support Matrix for Different Oracle Versions (ID do Documento 207303.1)
  • O Autonomous Database define o parâmetro SEC_CASE_SENSITIVE_LOGON como true e esse valor não pode ser alterado. Se o seu banco de dados de destino não for um Autonomous Database, defina o parâmetro SEC_CASE_SENSITIVE_LOGON como true no banco de dados de destino. Se SEC_CASE_SENSITIVE_LOGON estiver definido como false no banco de dados de destino, o erro ORA-28040: No matching authentication protocol será gerado.

  • Para listar os links de banco de dados, use a view ALL_DB_LINKS. Consulte ALL_DB_LINKS em Referência de Banco de Dados 19c do Oracle Database ou Referência de Banco de Dados Oracle Database 23ai para obter mais informações.

  • O arquivo da wallet com o ID e a senha do usuário do Banco de Dados fornece acesso aos dados no banco de dados Oracle de destino. Armazene os arquivos da wallet em um local seguro. Só compartilhe os arquivos da wallet com usuários autorizados.

  • Quando a instância do Autonomous Database está em um ponto final privado, há duas opções para especificar o banco de dados de destino: use o parâmetro hostname ou o parâmetro rac_hostnames:

    • Para um destino em um ponto final privado, DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK suporta a especificação de um único nome de host com o parâmetro hostname. Em um ponto final privado, o uso de um endereço IP, IP do SCAN ou nome de host do SCAN não é suportado (quando o destino está em um ponto final público, o CREATE_DATABASE_LINK suporta o uso de um endereço IP, um IP do SCAN ou nome de host do SCAN).

    • Quando o destino for um banco de dados Oracle RAC, use o parâmetro rac_hostnames para especificar um ou mais nomes de host com DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK. Isso permite que você aproveite os recursos de alta disponibilidade do Oracle RAC. O uso de um endereço IP, IP do SCAN ou nome de host do SCAN no valor rac_hostnames não é suportado.

      Quando você especifica uma lista de nomes de host no parâmetro rac_hostnames, CREATE_DATABASE_LINK usa todos os nomes de host especificados como endereços na string de conexão. Se um dos hosts especificados não estiver disponível no banco de dados Oracle RAC de destino, o Autonomous Database tentará estabelecer conexão automaticamente usando outro nome de host da lista.
    • DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK não suporta um valor de localhost para hostname ou no parâmetro rac_hostnames.