Oracle – CREATE DATABASE LINK

Resumo: neste tutorial, você aprenderá sobre o link de banco de dados Oracle e como criar um link de banco de dados para um servidor de banco de dados Oracle remoto.

O que é um Oracle DATABASE LINK

Um link de banco de dados é uma conexão do banco de dados Oracle a outro banco de dados remoto. O banco de dados remoto pode ser um banco de dados Oracle ou qualquer banco de dados compatível com ODBC, como SQL Server ou MySQL.

Por que você precisa de um link de banco de dados

Um link de banco de dados permite que um usuário ou programa acesse objetos de banco de dados, como tabelas e visualizações de outro banco de dados.

Depois de criar um link de banco de dados, você pode acessar as tabelas ou visualizações do banco de dados remoto usando o seguinte padrão:

[email protected]_link

Por exemplo, você pode consultar dados de uma tabela no banco de dados remoto como se estivesse no servidor local:

SELECT * FROM [email protected]_link;

Ao acessar uma tabela ou visualização remota por meio do link do banco de dados, o banco de dados Oracle está atuando como um cliente Oracle.

Usando um sinônimo para simplificar a sintaxe para acessar objetos por meio de um link de banco de dados

Para simplificar a sintaxe, você pode criar um sinônimo para o objeto remoto acessado por meio do link do banco de dados e usar esse objeto como se fosse um objeto local.

Esta sintaxe mostra como criar um sinônimo para uma tabela remota:

CREATE SYNONYM local_table
FOR [email protected]_link;

E esta consulta usa o sinônimo em vez do nome da tabela remota com o link do banco de dados:

SELECT * FROM local_table;

Instrução Oracle CREATE DATABASE LINK

Existem dois tipos de links de banco de dados: públicos e privados.

Os links do banco de dados privado são visíveis para os proprietários, enquanto os links do banco de dados público são visíveis para todos os usuários no banco de dados. Por esse motivo, os links de banco de dados públicos podem representar alguns riscos de segurança em potencial.

Para criar um link de banco de dados privado, você usa a instrução CREATE DATABASE LINK da seguinte maneira:

CREATE DATABASE LINK dblink
CONNECT TO remote_user IDENTIFIED BY password
USING 'remote_database';

Nesta sintaxe:

  • Primeiro, especifique o nome do link do banco de dados após as palavras-chave CREATE DATABASE LINK.
  • Em segundo lugar, forneça o usuário e a senha do banco de dados remoto após as palavras-chave CONNECT TO e IDENTIFIED BY.
  • Finalmente, especifique o nome do serviço do banco de dados remoto. Se você especificar apenas o nome do banco de dados, o Oracle acrescentará o domínio do banco de dados à string de conexão para formar um nome de serviço completo.

Normalmente, você adiciona uma entrada no arquivo tnsnames.ora e faz referência a ela como remote_database na cláusula USING.

A instrução a seguir mostra como criar o link de banco de dados privado para um usuário em um banco de dados remoto com uma string de conexão completa.

CREATE DATABASE LINK dblink
    CONNECT TO remote_user IDENTIFIED BY password
    USING '(DESCRIPTION=
                (ADDRESS=(PROTOCOL=TCP)(HOST=oracledb.example.com)(PORT=1521))
                (CONNECT_DATA=(SERVICE_NAME=service_name))
            )';

Para criar um link de banco de dados público, basta adicionar a palavra-chave PUBLIC:

CREATE PUBLIC DATABASE LINK dblink
    CONNECT TO remote_user IDENTIFIED BY password
    USING 'remote_database';

Crie um exemplo de link de banco de dados

Neste exemplo, criaremos um link de banco de dados para um servidor de banco de dados Oracle remoto localizado no servidor 10.50.100.143 com a porta 1521 e o nome de serviço SALES.

Primeiro, adicione a seguinte entrada ao arquivo tnsnames.ora no servidor de banco de dados Oracle local. Normalmente, o tnsnames.ora está localizado no diretório /NETWORK/ADMIN/ em ORACLE_HOME:

SALES =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.50.100.143)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = SALES_PRD)
    )
)

Em seguida, use a instrução CREATE DATABASE LINK para criar um novo link de banco de dados privado que se conecta ao banco de dados SALES por meio da conta BOB:

CREATE DATABASE LINK sales
    CONNECT TO bob IDENTIFIED BY Abcd1234
    USING 'SALES';

Em seguida, emita a instrução SELECT para consultar os dados da tabela de clientes no banco de dados SALES:

SELECT * FROM [email protected];

Aqui está o resultado:

Depois disso, insira uma nova linha na tabela de clientes:

INSERT INTO [email protected](customer_id, name, email)

VALUES(2,’XYZ Inc’,’[email protected]’);

Por fim, consulte os dados da tabela de customers novamente:

SELECT * FROM [email protected]

O conjunto de resultados é o seguinte:

Práticas recomendadas do Oracle Database Link

Aqui estão algumas práticas recomendadas para usar os links de banco de dados:

  1. Convenção de nomenclatura: o nome dos links do banco de dados deve refletir a natureza dos dados, não o servidor do banco de dados. Por exemplo, em vez de nomear um link de banco de dados SALES_PRD, você o nomeia SALES.
  2. Usuários de banco de dados remoto: você deve criar um usuário dedicado para um link de banco de dados. Além disso, você não deve fornecer esse usuário a ninguém. Se você não seguir isso, o banco de dados não funcionará quando alguém alterar a senha do usuário ou mesmo excluí-la.
  3. Use uma entrada específica do serviço no tnsnames.ora em vez do alias específico do banco de dados para que você copie entre os ambientes de produto, teste e desenvolvimento, sem precisar recriar o link do banco de dados.

Neste tutorial, você aprendeu sobre o conceito de link de banco de dados Oracle e como usar o Oracle CREATE DATABASE LINK para criar um novo link de banco de dados para um servidor de banco de dados Oracle remoto.

Essa postagem faz parte de uma serie de postagem para estudos pessoais, cujo sua fonte é: https://www.oracletutorial.com/