Pular para o conteúdo
  • Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 3 anos, 9 meses atrás por Avatar de José Laurindo ChiappaJosé Laurindo Chiappa.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #146301
    Avatar de Thiago ChristofoliThiago Christofoli
    Participante

      Olá Pessoal !!!

      Tenho uma dúvida quanto a DBlink. Tenho hoje em meu ambiente alguns bancos “herdados” e uma das coisas que o antigo dba fez foi criar dblinks de conexão. Exemplo: Banco A e Banco B, no Banco B existe um dblink referenciando o Banco A, utilizando-se de dados cadastrados no Banco A.

      Porém esse Banco A sairá de meu ambiente local e preciso continuar com as mesmas referências ou seja as mesmas conexões etc .

      Fiz certa vez através do ODBC a comunicação de um banco sqlserver (na nuvem) com um banco oracle (on premisse) e funciona normalmente até hoje, porém pelo que vi no oracle é utilizando o dblink.

      É possível realizar esse tipo de conexão no oracle?

      #146306
      Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
      Moderador

        Blz ? Então, comece entendendo o que é e para que serve o dblink : o dblink é uma conexão feita via rede ENTRE databases, com o database origem funcionando como client e o database-destino como servidor, E isso a nível de databases : não tem NADA A VER com conexões de usuários finais… A utilidade do dblink é permitir que através dessa conexão de rede um database Consulte/referencie tabelas desse database destino, E para o dblink poder abrir essa conexão, há DUAS necessidades apenas :

        1. ambos os servidores onde os databases residem TEM que se “enxergarem” pela rede, ie : TEM que ter rota de rede entre as máquinas, TEM que ter um IP ou hostname físico para cada uma das máquinas, SEM firewall ou qquer impedimento na rede

          e

        2. vc TEM que indicar pro dblink o IP/hostname, o nome do banco/serviço de conexão remoto, a porta de rede que vai ser usada… Vc faz isso OU editando o arquivo de configuração de rede chamada TNSNAMES.ORA ** ou ** já passa essa informação já na hora de criar o dblink : https://www.devmedia.com.br/criacao-de-database-links/2748tem um exemplo de criação de dblink informando os dados de conexão no arquivo TNSNAMES.ORA e https://blog.mclaughlinsoftware.com/2016/07/26/db_link-wo-tnsnames-ora/ mostra um dblink sendo criado informando diretamente os dados de conexão …

          Muito bem : se hoje o database de destino do seu dblink vai mudar de local, o que vc precisa fazer é (** DEPOIS ** que teu time de rede te assegurou que a comunicação de rede tá ok entre os dois servidores Oracle) simplesmente dropar o dblink atual E recriar ele com o mesmo nome MAS com os novos dados de conexão, confere?? Só isso … Os seus programas / usuários que usavam o dblink antes vão continuar a poder usar….

          []s

          Chiappa

        #146307
        Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
        Moderador

          Detalhe Importante : se hoje os dois servidores Oracle dos bancos A e B estão na mesma rede (ou ainda, se ambos os bancos estão num único servidor) obviamente vc Não Precisou criar rotas de rede, configurar switches, nada disso… SE o novo servidor aonde esse banco A vai ser transferido estás em OUTRA rede, vc TEM que ver com teu time de rede como criar rota entre os dois pontos, TEM que confirmar que há IP fixo acessível, TEM que solicitar abertura de firewall/tunel entre as redes…. TUDO ISSO é externo ao database, Absolutamente…..

          []s

          Chiappa

          #146333
          Avatar de Thiago ChristofoliThiago Christofoli
          Participante

            Sim, entendi suas explicações acredito que seja parecido com os links que fazemos via ODBC, ou seja um servidor se comunicando com o outro com as devidas regras de “firewalls”.

            A minha dúvida é: configuro apenas o tnsnames.ora desse servidor que irá consultar a base que foi para nuvem?

             

            #146334
            Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
            Moderador

              É mais ou menos parecido, sim : a diferença MAIOR é que as conexões dos dblinks são feitas sempre pelo próprio RDBMS, nunca por um usuário final … O usuário final só escreve SELECT nnn FROM tabela@dblink , aí é por conta do RDBMS Oracle encontrar o dblink nas suas tabelas internas, via metadados localizar os dados de conexão, abrir a conexão, fechar na desconexão da sessão, é tudo interno…
              Isso posto, antes de responder a primeira coisa é que, como eu disse antes, os dados de conexão de um database link ** PODEM ** ficar no TNSNAMES.ORA sim, OU ** PODEM ** ser informados Diretamente quando vc cria o DBLINK, informando eles na na cláusula USING – eu dei links para os DOIS casos…. SE não foi usado o TNSNAMES.ORA obviamente é só no DDL do database link mesmo que vc terá que alterar…

              Isso posto, a resposta é : em princípio os dados de conexão do dblink só são usados pelos próprio dblink em si, então necessidade NENHUMA de alterar o TNSNAMES.ORA das máquinas-clientes, se os SQLs que as sessões clientes só USAM o dblink diretamente…. Vc só precisaria alterar o TNSNAMES.ORA das máquinas-cliente SE as sessões clientes acessarem diretamente o banco remoto ao invés de referenciar via dblink….

              []s

              Chiappa
              
              #146502
              Avatar de Thiago ChristofoliThiago Christofoli
              Participante

                Perfeito Chiappa, entendi. Muito obrigado.

                Com relação as tabelas que são referenciadas, é possível eu descobrir quais são utilizadas via dblink? Digo existe algum comando no Oracle ou no dicionário de dados que faça a listagem de tabelas utilizadas via dblink?

                 

                #146535
                Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
                Moderador

                  Não tem não : veja, o dblink é uma CONEXÃO, e da mesma maneira que (digamos) vc pode usar a conexão ODBC x pra acessar a tabela A ou B ou C que vc tenha privilégios de acesso/leitura/gravação no banco destino, vc pode usar o dblink pra ler/acessar qquer uma das tabelas que o usuário do dblink que fez a conexão tenha acesso…. NÂO HÁ uma correlação direta entre conexão versus tabelas que foram acessadas por uma conexão….

                  []s

                  Chiappa

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.
                plugins premium WordPress