[oracle_br] Comunicação entre VM's

2016-12-06 Por tôpico carloseduard...@yahoo.com [oracle_br]
Cenário: Virtual box 5.1.8
Linux: 6.5 64 bits OEL

Senhores, gostaria que me ajudassem com um probleminha que estou enfrentando. 
Estou tentando que duas Maquinas virtuais consigam se comunicar entre si, estou 
tentando montar um lab para realizar algumas tarefas com o DG. 
Segue o passo a passo que eu realizei:
===> Maquina virtual 1
obs: Criei a interface de rede Bridge chamada eth2hostname: oel65
[root@oel65 Desktop]# ifconfigeth1      Link encap:Ethernet  HWaddr 
08:00:27:B0:A3:AC            inet6 addr: fe80::a00:27ff:feb0:a3ac/64 Scope:Link 
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX 
packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:3 errors:0 
dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           
RX bytes:0 (0.0 b)  TX bytes:258 (258.0 b)
eth2      Link encap:Ethernet  HWaddr FA:D1:DB:FF:B0:F0            inet 
addr:20.0.0.10  Bcast:20.0.255.255  Mask:255.255.0.0          UP BROADCAST 
MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 
overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 
carrier:0          collisions:0 txqueuelen:0           RX bytes:0 (0.0 b)  TX 
bytes:0 (0.0 b)
lo        Link encap:Local Loopback            inet addr:127.0.0.1  
Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK 
RUNNING  MTU:65536  Metric:1          RX packets:78 errors:0 dropped:0 
overruns:0 frame:0          TX packets:78 errors:0 dropped:0 overruns:0 
carrier:0          collisions:0 txqueuelen:0           RX bytes:6372 (6.2 KiB)  
TX bytes:6372 (6.2 KiB)

[root@oel65 Desktop]# cat /etc/hosts
127.0.0.1    localhost.localdomain localhost410.0.2.15    oel65.localdomain     
oel6520.0.0.10    oel65.localdomain     oel6520.0.0.20    
db_standby.localdomain  db_standby
===>  Maquina Virtual 2
hostname: db_standby
[root@db_standby Desktop]# ifconfigeth0      Link encap:Ethernet  HWaddr 
08:00:27:77:4A:ED            inet6 addr: fe80::a00:27ff:fe77:4aed/64 Scope:Link 
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX 
packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:3 errors:0 
dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           
RX bytes:0 (0.0 b)  TX bytes:258 (258.0 b)
eth2      Link encap:Ethernet  HWaddr F6:F3:31:7D:C8:84            inet 
addr:20.0.0.20  Bcast:20.0.255.255  Mask:255.255.0.0          UP BROADCAST 
MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 
overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 
carrier:0          collisions:0 txqueuelen:0           RX bytes:0 (0.0 b)  TX 
bytes:0 (0.0 b)
lo        Link encap:Local Loopback            inet addr:127.0.0.1  
Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK 
RUNNING  MTU:65536  Metric:1          RX packets:86 errors:0 dropped:0 
overruns:0 frame:0          TX packets:86 errors:0 dropped:0 overruns:0 
carrier:0          collisions:0 txqueuelen:0           RX bytes:7156 (6.9 KiB)  
TX bytes:7156 (6.9 KiB)

[root@db_standby Desktop]# cat /etc/hosts127.0.0.1  localhost.localdomain 
localhost410.0.2.15  db_standby.localdomain db_standby20.0.0.20  
db_standby.localdomain db_standby20.0.0.10  oel65.localdomain oel65 


Configurações identicas para ambas as VM's
NETMASK: 255.255.0.0GETWAY: 20.0.0.1DNS SERVER: 20.0.0.1

---
==> Maquina virtual 1
[root@oel65 Desktop]# ping 20.0.0.10     -- PINGANDO PARA A MAQUINA LOCAL eth2 
está OKPING 20.0.0.10 (20.0.0.10) 56(84) bytes of data.64 bytes from 20.0.0.10: 
icmp_seq=1 ttl=64 time=0.044 ms64 bytes from 20.0.0.10: icmp_seq=2 ttl=64 
time=0.059 ms64 bytes from 20.0.0.10: icmp_seq=3 ttl=64 time=0.120 ms

[root@oel65 Desktop]# ping oel65   -- USANDO O HOSTNAME DA MAQUINA LOCAL
PING oel65.localdomain (10.0.2.15) 56(84) bytes of data.^C--- oel65.localdomain 
ping statistics ---3 packets transmitted, 0 received, 100% packet loss, time 
2702ms
[root@oel65 Desktop]# [root@oel65 Desktop]# ping 20.0.0.20   -- TENTANDO 
COMUNICACAO COM A MAQUINA VIRTUAL 2PING 20.0.0.20 (20.0.0.20) 56(84) bytes of 
data.From 20.0.0.10 icmp_seq=1 Destination Host UnreachableFrom 20.0.0.10 
icmp_seq=2 Destination Host UnreachableFrom 20.0.0.10 icmp_seq=3 Destination 
Host Unreachable

OBS: O mesmo comportamento acontece com a maquina virtual 2.

Após não obter sucesso, o que fiz foi deletar a interface de rede eth0 de ambas 
as máquinas e apagar as linhas do /etc/hosts de ambas as maquinas;
10.0.2.15  db_standby.localdomain db_standby
10.0.2.15    oel65.localdomain     oel65


Após isso, reiniciei ambas as máquinas.

Após a mudança realizada, as configurações ficaram da seguinte maneira:

MAQUINA VIRTUAL 1 
[root@oel65 Desktop]# ifconfigeth1      Link encap:Ethernet  HWaddr 
08:00:27:B0:A3:AC            inet6 addr: fe80::a00:27ff:feb0:a3ac/64 Scope:Link 
  

Re: [oracle_br] Re: Comparar dados

2016-12-06 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Obrigado Chiappa!


Em 6 de dezembro de 2016 10:45, jlchia...@yahoo.com.br [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Em termos de performance vai acabar dando no mesmo, vc vai ter que fazer
> ler todos os registros da primeira tabela comparando com todos os registros
> da segunda - provavelmente vc acaba pagando um precinho em termos de
> performance E em termos de complexidade ao abrir vários cursores (que tem
> que ser processados/loopeados, tem que ser abertos, tem que ser fechados,
> etc - compare a qtdade de linhas da solução SQL-only com a sua solução) mas
> não foge disso
>  O que eu indiquei em termos de modelo (a aplicar se fosse uma tarefa
> rotineira e repetitiva)  era o óbvio, ie : SE a informação estivesse na
> mesma tabela vc poupa JOIN, e SE não tem como, uma opção seria vc calcular
> um desvio de caracteres numa coluna virtual (via SOUNDEX, digamos) aí vc
> faz o JOIN por essa coluna, que pode estar Indexada por um function index,
> talvez...
>
> []s
>
>   Chiappa
>
>
> ---Em oracle_br@yahoogrupos.com.br,  escreveu:
>
> Chiappa,
>
> Bom Dia
>
> Obrigado pelo retorno, muito bacana sua solução e já foi guardada para
> posterior uso, com certeza.
> Mas acabei criando uma procedure com 2 cursores, onde o primeiro lê cada
> registro do segundo, pois os registros não estão na mesma linha nas
> tabelas, e tudo no final se resumiu a:
>
> IF (UTL_MATCH.EDIT_DISTANCE_SIMILARITY (v_descricao, v_descricao2) >=85 )
> THEN
>
> dbms_output.put_line('PRODUTO - ' || v_descricao || ' compatível'); (claro
> aqui fiz o que precisava, não só mostrar)
>
> END IF;
>
> Obrigado pela ajuda de sempre Chiappa.
>
>
> Em 5 de dezembro de 2016 18:22, jlchia...@yahoo.com.br [oracle_br] <
> oracle_br@yahoogrupos.com.br> escreveu:
>
>
>
> Colega, seguinte : em sendo esse modelo que vc propõe (ie, há um dado em
> cada tabela) para poder comparar dados em tabelas diferentes vc em
> princípio tem que fazer um JOIN, e para isso (salvo possibilidades como
> coluna virtual computando um SOUNDEX ou coiisa do tipo) vc (já que não há
> CHAVE se repetindo nas duas tabelas) vai ter que fazer uma leitura e
> comparação full das duas tabelas, tipo :
>
> bdtest10g:SQL>create table tbl1 (c1 number, descricao1 varchar2(50));
>
> Tabela criada.
>
> bdtest10g:SQL>create table tbl2 (c2 number, descricao2 varchar2(50));
>
> Tabela criada.
>
> bdtest10g:SQL>insert into tbl1 values(1, 'FEIJAO UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(2, 'MACARRAO UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(3, 'ARROZ UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(4, 'CARNE KG');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl2 values(1, 'ARROZ KG');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl2 values(2, 'FAROFA PCT');
>
> 1 linha criada.
>
> bdtest10g:SQL>commit;
>
> Validação completa.
>
> bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2 from tbl1
> t1, tbl2 t2 order by 1,3;
>
> C1 DESCRICAO1C2 DESCRICAO2
> -- - -- ---
>  1 FEIJAO UN  1 ARROZ KG
>  1 FEIJAO UN  2 FAROFA PCT
>  2 MACARRAO UN1 ARROZ KG
>  2 MACARRAO UN2 FAROFA PCT
>  3 ARROZ UN   1 ARROZ KG
>  3 ARROZ UN   2 FAROFA PCT
>  4 CARNE KG   1 ARROZ KG
>  4 CARNE KG   2 FAROFA PCT
>
> 8 linhas selecionadas.
>
> ==> ok ? Ou seja, cada uma das linhas da tab1 é comparada com cada uma das
> linhas da tab2, dá pra ver isso acima ?? A linha 1 da tab1 foi comparada
> com a linha 1 e a 2 da tab2, a linha 2 da tab1 foi comparada com a linha 1
> e 2 da tab2, assim por diante. Isso feito, agora que já tenho ambas as
> colunas na íntegra para poderem ser comparadas sendo indicadas como
> Argumento prea função de comparação, é simples :
>
> bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2,
> UTL_MATCH.EDIT_DISTANCE_ SIMILARITY(t1.descricao1, t2.descricao2) DISTANCIA
> from tbl1 t1, tbl2 t2 order by 1,3;
>
> C1 DESCRICAO1C2 DESCRICAO2 DISTANCIA
> -- - -- -- -
>  1 FEIJAO UN  1 ARROZ KG  12
>  1 FEIJAO UN  2 FAROFA PCT20
>  2 MACARRAO UN1 ARROZ KG  37
>  2 MACARRAO UN2 FAROFA PCT19
>  3 ARROZ UN   1 ARROZ KG  75
>  3 ARROZ UN   2 FAROFA PCT30
>  4 CARNE KG   1 ARROZ KG  50
>  4 CARNE KG   2 FAROFA PCT30
>
> 8 linhas selecionadas.
>
> ==> Vc que adicionar uma cláusula de WHERE comparando a distância ? Entre
> outros métodos, a comparação pode ser feita assim :
>
> bdtest10g:SQL>select * from (select t1.c1, t1.descricao1, t2.c2,
> t2.descricao2,  UTL_MATCH.EDIT_DISTANCE_ SIMILARITY(t1.descricao1,
> t2.descricao2) DISTANCIA
>   2from tbl1 t1, tbl2 t2)
>   3*  where distancia > 70;
>
>C1 DESCRICAO1 C2
> DESCRICAO2  DISTANCIA
> - --

Re: [oracle_br] Re: Comparar dados

2016-12-06 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Em termos de performance vai acabar dando no mesmo, vc vai ter que fazer ler 
todos os registros da primeira tabela comparando com todos os registros da 
segunda - provavelmente vc acaba pagando um precinho em termos de performance E 
em termos de complexidade ao abrir vários cursores (que tem que ser 
processados/loopeados, tem que ser abertos, tem que ser fechados, etc - compare 
a qtdade de linhas da solução SQL-only com a sua solução) mas não foge 
disso 
 O que eu indiquei em termos de modelo (a aplicar se fosse uma tarefa rotineira 
e repetitiva)  era o óbvio, ie : SE a informação estivesse na mesma tabela vc 
poupa JOIN, e SE não tem como, uma opção seria vc calcular um desvio de 
caracteres numa coluna virtual (via SOUNDEX, digamos) aí vc faz o JOIN por essa 
coluna, que pode estar Indexada por um function index, talvez...

[]s

  Chiappa
 

---Em oracle_br@yahoogrupos.com.br,  escreveu:

 Chiappa, 

 Bom Dia
 

 Obrigado pelo retorno, muito bacana sua solução e já foi guardada para 
posterior uso, com certeza.
 Mas acabei criando uma procedure com 2 cursores, onde o primeiro lê cada 
registro do segundo, pois os registros não estão na mesma linha nas tabelas, e 
tudo no final se resumiu a:
 

 IF (UTL_MATCH.EDIT_DISTANCE_SIMILARITY (v_descricao, v_descricao2) >=85 ) THEN

 

 dbms_output.put_line('PRODUTO - ' || v_descricao || ' compatível'); (claro 
aqui fiz o que precisava, não só mostrar)
 

 END IF;

 
 Obrigado pela ajuda de sempre Chiappa.
 
 
 Em 5 de dezembro de 2016 18:22, jlchia...@yahoo.com.br 
mailto:jlchia...@yahoo.com.br [oracle_br] mailto:oracle_br@yahoogrupos.com.br> escreveu:
   Colega, seguinte : em sendo esse modelo que vc propõe (ie, há um dado em 
cada tabela) para poder comparar dados em tabelas diferentes vc em princípio 
tem que fazer um JOIN, e para isso (salvo possibilidades como coluna virtual 
computando um SOUNDEX ou coiisa do tipo) vc (já que não há CHAVE se repetindo 
nas duas tabelas) vai ter que fazer uma leitura e comparação full das duas 
tabelas, tipo : 

bdtest10g:SQL>create table tbl1 (c1 number, descricao1 varchar2(50));

Tabela criada.

bdtest10g:SQL>create table tbl2 (c2 number, descricao2 varchar2(50));

Tabela criada.

bdtest10g:SQL>insert into tbl1 values(1, 'FEIJAO UN');

1 linha criada.

bdtest10g:SQL>insert into tbl1 values(2, 'MACARRAO UN');

1 linha criada.

bdtest10g:SQL>insert into tbl1 values(3, 'ARROZ UN');

1 linha criada.

bdtest10g:SQL>insert into tbl1 values(4, 'CARNE KG');

1 linha criada.

bdtest10g:SQL>insert into tbl2 values(1, 'ARROZ KG');

1 linha criada.

bdtest10g:SQL>insert into tbl2 values(2, 'FAROFA PCT');

1 linha criada.

bdtest10g:SQL>commit;

Validação completa.

bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2 from tbl1 t1, 
tbl2 t2 order by 1,3;

C1 DESCRICAO1C2 DESCRICAO2
-- - -- ---
 1 FEIJAO UN  1 ARROZ KG
 1 FEIJAO UN  2 FAROFA PCT
 2 MACARRAO UN1 ARROZ KG
 2 MACARRAO UN2 FAROFA PCT
 3 ARROZ UN   1 ARROZ KG
 3 ARROZ UN   2 FAROFA PCT
 4 CARNE KG   1 ARROZ KG
 4 CARNE KG   2 FAROFA PCT

8 linhas selecionadas.

==> ok ? Ou seja, cada uma das linhas da tab1 é comparada com cada uma das 
linhas da tab2, dá pra ver isso acima ?? A linha 1 da tab1 foi comparada com a 
linha 1 e a 2 da tab2, a linha 2 da tab1 foi comparada com a linha 1 e 2 da 
tab2, assim por diante. Isso feito, agora que já tenho ambas as colunas na 
íntegra para poderem ser comparadas sendo indicadas como Argumento prea função 
de comparação, é simples :

bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2,  
UTL_MATCH.EDIT_DISTANCE_ SIMILARITY(t1.descricao1, t2.descricao2) DISTANCIA 
from tbl1 t1, tbl2 t2 order by 1,3;

C1 DESCRICAO1C2 DESCRICAO2 DISTANCIA
-- - -- -- -
 1 FEIJAO UN  1 ARROZ KG  12
 1 FEIJAO UN  2 FAROFA PCT20
 2 MACARRAO UN1 ARROZ KG  37
 2 MACARRAO UN2 FAROFA PCT19
 3 ARROZ UN   1 ARROZ KG  75
 3 ARROZ UN   2 FAROFA PCT30
 4 CARNE KG   1 ARROZ KG  50
 4 CARNE KG   2 FAROFA PCT30

8 linhas selecionadas.

==> Vc que adicionar uma cláusula de WHERE comparando a distância ? Entre 
outros métodos, a comparação pode ser feita assim :

bdtest10g:SQL>select * from (select t1.c1, t1.descricao1, t2.c2, t2.descricao2, 
 UTL_MATCH.EDIT_DISTANCE_ SIMILARITY(t1.descricao1, t2.descricao2) DISTANCIA
  2from tbl1 t1, tbl2 t2)
  3*  where distancia > 70;

   C1 DESCRICAO1 C2 
DESCRICAO2  DISTANCIA
- --  - 
--  -
3 ARROZ UN1 ARROZ 
KG   75


bdtest10g:SQL>


ok ?

Re: [oracle_br] Re: Comparar dados

2016-12-06 Por tôpico Mario Rodrigues marioirodrig...@gmail.com [oracle_br]
Chiappa,

Bom Dia

Obrigado pelo retorno, muito bacana sua solução e já foi guardada para
posterior uso, com certeza.
Mas acabei criando uma procedure com 2 cursores, onde o primeiro lê cada
registro do segundo, pois os registros não estão na mesma linha nas
tabelas, e tudo no final se resumiu a:

IF (UTL_MATCH.EDIT_DISTANCE_SIMILARITY (v_descricao, v_descricao2) >=85 )
THEN

dbms_output.put_line('PRODUTO - ' || v_descricao || ' compatível'); (claro
aqui fiz o que precisava, não só mostrar)

END IF;

Obrigado pela ajuda de sempre Chiappa.


Em 5 de dezembro de 2016 18:22, jlchia...@yahoo.com.br [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Colega, seguinte : em sendo esse modelo que vc propõe (ie, há um dado em
> cada tabela) para poder comparar dados em tabelas diferentes vc em
> princípio tem que fazer um JOIN, e para isso (salvo possibilidades como
> coluna virtual computando um SOUNDEX ou coiisa do tipo) vc (já que não há
> CHAVE se repetindo nas duas tabelas) vai ter que fazer uma leitura e
> comparação full das duas tabelas, tipo :
>
> bdtest10g:SQL>create table tbl1 (c1 number, descricao1 varchar2(50));
>
> Tabela criada.
>
> bdtest10g:SQL>create table tbl2 (c2 number, descricao2 varchar2(50));
>
> Tabela criada.
>
> bdtest10g:SQL>insert into tbl1 values(1, 'FEIJAO UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(2, 'MACARRAO UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(3, 'ARROZ UN');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl1 values(4, 'CARNE KG');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl2 values(1, 'ARROZ KG');
>
> 1 linha criada.
>
> bdtest10g:SQL>insert into tbl2 values(2, 'FAROFA PCT');
>
> 1 linha criada.
>
> bdtest10g:SQL>commit;
>
> Validação completa.
>
> bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2 from tbl1
> t1, tbl2 t2 order by 1,3;
>
> C1 DESCRICAO1C2 DESCRICAO2
> -- - -- ---
>  1 FEIJAO UN  1 ARROZ KG
>  1 FEIJAO UN  2 FAROFA PCT
>  2 MACARRAO UN1 ARROZ KG
>  2 MACARRAO UN2 FAROFA PCT
>  3 ARROZ UN   1 ARROZ KG
>  3 ARROZ UN   2 FAROFA PCT
>  4 CARNE KG   1 ARROZ KG
>  4 CARNE KG   2 FAROFA PCT
>
> 8 linhas selecionadas.
>
> ==> ok ? Ou seja, cada uma das linhas da tab1 é comparada com cada uma das
> linhas da tab2, dá pra ver isso acima ?? A linha 1 da tab1 foi comparada
> com a linha 1 e a 2 da tab2, a linha 2 da tab1 foi comparada com a linha 1
> e 2 da tab2, assim por diante. Isso feito, agora que já tenho ambas as
> colunas na íntegra para poderem ser comparadas sendo indicadas como
> Argumento prea função de comparação, é simples :
>
> bdtest10g:SQL>select t1.c1, t1.descricao1, t2.c2, t2.descricao2,
> UTL_MATCH.EDIT_DISTANCE_SIMILARITY(t1.descricao1, t2.descricao2)
> DISTANCIA from tbl1 t1, tbl2 t2 order by 1,3;
>
> C1 DESCRICAO1C2 DESCRICAO2 DISTANCIA
> -- - -- -- -
>  1 FEIJAO UN  1 ARROZ KG  12
>  1 FEIJAO UN  2 FAROFA PCT20
>  2 MACARRAO UN1 ARROZ KG  37
>  2 MACARRAO UN2 FAROFA PCT19
>  3 ARROZ UN   1 ARROZ KG  75
>  3 ARROZ UN   2 FAROFA PCT30
>  4 CARNE KG   1 ARROZ KG  50
>  4 CARNE KG   2 FAROFA PCT30
>
> 8 linhas selecionadas.
>
> ==> Vc que adicionar uma cláusula de WHERE comparando a distância ? Entre
> outros métodos, a comparação pode ser feita assim :
>
> bdtest10g:SQL>select * from (select t1.c1, t1.descricao1, t2.c2,
> t2.descricao2,  UTL_MATCH.EDIT_DISTANCE_SIMILARITY(t1.descricao1,
> t2.descricao2) DISTANCIA
>   2from tbl1 t1, tbl2 t2)
>   3*  where distancia > 70;
>
>C1 DESCRICAO1C2
> DESCRICAO2 DISTANCIA
> - -- -
> -- -
> 3 ARROZ UN   1
> ARROZ KG  75
>
>
> bdtest10g:SQL>
>
>
> ok ?? Nem preciso dizer. uma modelagem desse tipo  está Longe de ser
> Ótima , se as tabelas fosse de grande volume de dados vc Provavelmente
> vai ter probs de performance
>
> []s
>
>   Chiappa
> 
>