Pular para o conteúdo
  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 7 anos atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #108968
    Avatar de airoospairoosp
    Participante

      Boa tarde pessoal,

      Temos sistemas que ainda estão no banco 10g, e estamos fazendo testes no homologação 11g antes da migração.

      O ambiente aqui é Windows.

      Na carga de alguns sistemas, é executada a consulta abaixo para obter o IP do servidor:

      select utl_inaddr.get_host_address from dual;

      No 10g retorna o IP (IP4), mas no 11g retorna fe80::c104:80c4:6bee:b1fa%12 (que é o IPV6), certo?

      No 11g é possível retornar o IP com a notação 172…..

      Se alguém tiver alguma dica, agradeço.

      Obrigado.

      Airton

      #108970
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Primeiro, entenda que ipv4 E ipv6 são coisas ** completamente diferentes ** , eles NÃO SÃO simplesmente diferentes ‘formatos’m diferentes ‘notações’ do mesmo endereço, eles são endereços COMPLETAMENTE DIFERENTES, não faz sentido vc falar em converter/reformatar/refatorar um no outro….
        A segunda coisa é que o UTL_INADDR só é capaz de retornar UM endereço, que é o default, então cfrme reportado na nota metalink “How to Get All IP Addresses of a Server With UTL_INADDR?” (Doc ID 1057772.1) Não Tem Como vc obter múltiplos endereços (o ipv4 E o ipv6 digamos) numa chamada só…

        Isso posto, respondendo : sim, esse endereço fe80::xxx.yyy.zzz é um IPv6, e via de regra ele é o default se estiver configurado, exemplo no meu banco 12c :

        C:apporacle>sqlplus system/oracle

        SQL*Plus: Release 12.2.0.1.0 Production

        Copyright (c) 1982, 2016, Oracle. All rights reserved.

        Conectado a:
        Oracle Database 12c Standard Edition Release 12.2.0.1.0 – 64bit Production

        SQL> SELECT utl_inaddr.get_host_address FROM global_name;

        GET_HOST_ADDRESS

        fe80::ed48:523e:b114:464f%14

        SQL> exit
        Desconectado de Oracle Database 12c Standard Edition Release 12.2.0.1.0 – 64bit Production

        ==> veja a minha config de rede :

        C:apporacle>ipconfig

        Configuração de IP do Windows

        Adaptador Ethernet Ethernet 2:

        Sufixo DNS específico de conexão. . . . . . :
        Endereço IPv6 de link local . . . . . . . . : fe80::ed48:523e:b114:464f%14
        Endereço IPv4. . . . . . . . . . . . . . . : 192.168.10.176
        Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
        Gateway Padrão. . . . . . . . . . . . . . . : 192.168.10.1

        Adaptador de túnel isatap.{BE1CB690-2389-49F8-B599-14E2DEBDC3B2}:

        Estado da mídia. . . . . . . . . . . . . . : mídia desconectada
        Sufixo DNS específico de conexão. . . . . . :

        C:apporacle>

        ==> Eu acredito então que pra obter informação de IP pelo database em casos que pode ser IPv6 o default do nic do servidor vc vai ter que OU executar a partir do banco um .BAT/shellscript que grave num arquivo-texto via tools de rede do Windows os IPs que vc tenha e depois leia/processe o arquivo gerado via UTL_FILE ou similar OU vc vai ter que apelar para Java ou C : tanto Java quanto C possuem comandos mais sofisticados de obtenção de dados do hardware e podem ser chamados de dentro do database… Mas é POR SUA CONTA< nada nativo pra isso existe afaik…

        []s

        Chiappa

        #108972
        Avatar de airoospairoosp
        Participante

          Chiappa,

          Pesquisando na internet, encontrei o código abaixo:

          CREATE AND COMPILE JAVA SOURCE NAMED “JavaMyIpAddress” AS
          package javamyipaddress;

          import java.lang.System.out;
          import java.net.InetAddress;
          import java.net.NetworkInterface;
          import java.net.SocketException;
          import java.util.Collections;
          import java.util.Enumeration;

          /**
          *
          * @web http://java-buddy.blogspot.com/
          * ref: https://docs.oracle.com/javase/tutorial/networking/nifs/listing.html
          */
          public class JavaMyIpAddress {

          public static void main(String args[]) throws SocketException {
              Enumeration  nets = NetworkInterface.getNetworkInterfaces();
              for (NetworkInterface netint : Collections.list(nets))
                  displayInterfaceInformation(netint);
          }
          
          static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
              out.printf("Display name: %sn", netint.getDisplayName());
              out.printf("Name: %sn", netint.getName());
              Enumeration inetAddresses = netint.getInetAddresses();
              for (InetAddress inetAddress : Collections.list(inetAddresses)) {
                  out.printf("InetAddress: %sn", inetAddress);
              }
              out.printf("n");
           }
          

          }

          Na execução apareceu a mensagem abaixo:

          ORA-29536: origem incorreta: Encountered “<" at line 18, column 21.
          Was expecting one of:
          ";" …
          "++" …
          "–" …
          "." …
          "[" …
          "(" …
          ":" …

          “=” …
          “*=” …
          “/=” …
          “%=” …
          “+=” …
          “-=” …
          “<>=” …
          “>>>=” …
          “&=” …
          “^=” …
          “|=” …

          Pelo que entendi, o erro esta em: Enumeration

          Se alguém tiver alguma dica, agradeço.

          Airton

          #108973
          Avatar photoJosé Laurindo Chiappa
          Moderador

            AChe alguém que manje mais de Java (eu só sei o mínimo suficiente pra ser “perigoso” 🙂 mas acredito que o prob deve ser a versão do Java embutida no database : https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1396178300346115498 por exemplo cita um caso onde o JVM embutido no banco 10g não tinha algumas das interfaces de rede….
            CASO vc não consiga com Java, como eu disse vc poderia testar com C, *** OU *** , como eu disse também, vc poderia EXTRAIR a informação executando alguns dos utilitários do Windows, como o ipconfig….

            []s

            Chiappa

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