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
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
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:
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.
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