Criando Database Link

Em inúmeras situações que envolvem diversas instâncias de banco de dados, você precisará de um link entre elas. Seja para realizar uma comparação de objetos, linhas de tabelas, ou simplesmente copiar uma tabela entre instâncias sem ter de utilizar exp/imp.

Para faciltar algumas dessas atividades, o database link, ou simplismente dblink, é um recurso muito interessante e fácil de implementar. Nessa artigo, mostrarei como criar um dblink na instância teste para a instância prod, e dois exemplos de utilização desse recurso. Para a criação do dblink, você utilizará o alias do TNSNAMES.ORA que aponta a instância cujos dados você deseja acessar, no nosso caso, a prod.Você precisará do usuário e senha do schema que você deseja acessar. Tendo essas informações, dentro da instância TESTE, criamos o dblink conforme mostrado a baixo:

CREATE database link dblprod connect to USER_TESTE identified by teste using 'PROD';

Perceba que dblprod é o nome atribuído ao link. USER_TESTE é o usuário cujo schema queremos acessar, teste é a senha desse usuário e PROD é o alias de conexão para a instância. Para testar se o dblink foi criado e está conectando, basta fazer a consulta a seguir:

select count(*) from dba_tables@dblprod;
COUNT(*)
----------
13680

Verificado que a conexão foi realizada, todas as consultas utilizando tabelas da instância remota (PROD, nesse caso) utilizarão a sintaxe tabela@dblprod. Utilizando uma aplicação mais prática da utilização de um dblink, imagine que uma carga do schema USER_TESTE foi feita para a instância TESTE, mas por algum motivo, algumas tabelas não estão presentes na instância TESTE. Ao invés de realizar uma busca manual, podemos utilizar o seguinte comando, pressupondo que o dblink já esteja criado:

select table_name from dba_tables@dblprod
minus
select table_name from dba_tables where owner='USER_TESTE'

Como resultado dessa consulta, verificamos que a tabela dados_clientes não foi criada no processo de carga. Ao invés de fazer novamente o processo de carga, podemos utilizar o dblink criado para efetuar a cópia somente dessa tabela, como mostrado a baixo:

 CREATE table USER_TESTE.dados_clientes as SELECT * from dados_clientes@PROD; 

Para saber quais dblinks estão criados em sua instância, basta acessar a view dba_db_links. Abraços

%name Criando Database Link

Autor: Bruno Zehetmeyr bruno.zehe

Bacharel em Ciência da Computação pela UNORP-SP, Pós-graduado em Administração de Sistemas de Informação pela UFLA-MG e pós-graduado em Administração de Banco de Dados Oracle pela VERIS-SP. Analista DBA na Teiko Soluções em TI e professor universitário no Centro Universitário de Brusque – UBIFEBE. Certificado OCP 10g e OCP 11g, OCE Linux. Residente em Blumenau-SC.