Pular para o conteúdo

UTL_INADDR: Um Guia Completo

UTL_INADDR: Um Guia Completo

A UTL_INADDR é um pacote fornecido pelo Oracle que permite que você obtenha informações sobre endereços IP e nomes de domínio. É como ter um pequeno detetive cibernético dentro do seu banco de dados, pronto para resolver os mistérios da rede.

Vamos aprofundar um pouco mais no pacote UTL_INADDR e explorar todas as suas funções, acompanhadas de exemplos práticos que vão desde o básico até o avançado. Prepare-se para uma aventura cheia de endereços IP e nomes de host!

Funções Disponíveis

  • GET_HOST_ADDRESS: Retorna o endereço IP do host local ou remoto dado o seu nome.
  • GET_HOST_NAME: Retorna o nome do host local ou remoto dado o seu endereço IP.

    Exemplos Práticos

    • Quer saber onde mora o www.oracle.com? Pergunte ao GET_HOST_ADDRESS.
    • Precisa identificar o dono do IP 192.168.1.1? GET_HOST_NAME está aí para isso.
    • Tem uma lista de computadores e precisa dos IPs? Faça um loop com GET_HOST_ADDRESS e descubra.
    • Tentou encontrar um host que não existe? ORA-29257 é o seu novo melhor amigo.
    Exemplo 1: Descobrindo o Endereço IP de um Nome de Host
    SQL
    SELECT UTL_INADDR.get_host_address('oracle.com') FROM dual;
    
    SQL> SELECT UTL_INADDR.get_host_address('oracle.com') FROM dual;
    
    GET_HOST_ADDRESS('ORACLE.COM')
    --------------------------------------------------------------------------------
    192.0.2.123

    Exemplo 2: Descobrindo o Nome do Host a Partir de um Endereço IP
    SQL
    SELECT UTL_INADDR.get_host_name('192.168.1.1') FROM dual;
    
    SQL> SELECT UTL_INADDR.get_host_name('192.168.1.1') FROM dual;
    
    GET_HOST_NAME('192.168.1.1')
    --------------------------------------------------------------------------------
    host1.example.com

    Exemplo 3: Verificando o Endereço IP de Todos os Computadores em uma Rede

     Imagine que você tem uma tabela com os nomes dos computadores de uma rede e quer verificar o endereço IP de cada um. Você pode fazer isso com um loop PL/SQL:

    PLSQL
    DECLARE
      v_ip_address VARCHAR2(100);
    BEGIN
      FOR c IN (SELECT computer_name FROM network_computers) LOOP
        v_ip_address := UTL_INADDR.get_host_address(c.computer_name);
        DBMS_OUTPUT.put_line('Computer: ' || c.computer_name || ' - IP: ' || v_ip_address);
      END LOOP;
    END;
    
    SQL> SET SERVEROUTPUT ON;
    SQL> DECLARE
      2    v_ip_address VARCHAR2(100);
      3  BEGIN
      4    FOR c IN (SELECT computer_name FROM network_computers) LOOP
      5      v_ip_address := UTL_INADDR.get_host_address(c.computer_name);
      6      DBMS_OUTPUT.put_line('Computer: ' || c.computer_name || ' - IP: ' || v_ip_address);
      7    END LOOP;
      8  END;
      9  /
    
    Computer: server1 - IP: 192.168.1.2
    Computer: server2 - IP: 192.168.1.3
    Computer: server3 - IP: 192.168.1.4

    Exemplo 4: Identificando Hosts Desconhecidos

    Se você tentar buscar o endereço IP de um host que não existe, o Oracle vai lhe dar um erro ORA-29257. Isso pode ser útil para verificar se um nome de host é válido.

    SQL
    SELECT UTL_INADDR.get_host_address('host_fantasma') FROM dual;
    
    SQL> SELECT UTL_INADDR.get_host_address('host_fantasma') FROM dual;
    
    ERRO na linha 1:
    ORA-29257: host desconhecido

    E assim, com um sorriso no rosto e um SELECT na mão, encerramos nossa jornada pelo mundo do UTL_INADDR. Que suas queries sejam sempre rápidas e seus endereços IP, sempre resolvidos!

    Valeuuuuuu!

    Referências

    Natanael Freitas

    Natanael Freitas

    E aí, pessoal! Sou o Natanael Freitas, o cara que curte desbravar o mundo do PL/SQL. Não sou nenhum expert, mas me viro bem nas linhas de código desse universo. A verdade é que sou mais íntimo de bancos de dados do que de muitas pessoas por aí – sério! Quando não tô quebrando a cabeça com triggers e stored procedures, tô por aí fuçando a web em busca de tudo que é novidade nesse mundão tech. Às vezes, me pego dando uma aula rápida sobre PL/SQL pros colegas, na tentativa de descomplicar essa coisa toda. Meu dia a dia é basicamente sorrisos, café (sim, sou desses que não larga a caneca!) e resolvendo problemas nos códigos. Não sou nenhum Picasso, mas acho que consigo fazer umas artes por aí. Então, se precisar de ajuda com PL/SQL ou só quiser bater um papo sobre o assunto, tamo aí!

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    plugins premium WordPress