Re: [oracle_br] Duvida na constr ução de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico Eduardo Perdomo panc...@gmail.com [oracle_br]
Em Delphi tb altero a sessão de boa.
On Dec 14, 2016 12:14 AM, "Evandro Giachetto evandrogiache...@gmail.com
[oracle_br]"  wrote:

>
>
> Olá Daniel.
>
> A solução provida pelo Schiavini é bem interessante.
>
> Se você estiver utilizando Java como linguagem de desenvolvimento de sua
> aplicação, um alter session é perfeitamente possível e nada muito
> complicado. Seria, basicamente uma instrução a mais no seu objeto Statement
> (de qualquer tipo).
>
> Aqui tem um exemplo:
>
> http://stackoverflow.com/questions/17578335/alter-
> session-to-set-date-format-in-mybatis
>
> Evandro Giachetto
> Oracle DBA
> evandrogiache...@gmail.com
> http://bancotunado.blogspot.com.br/
>
>
> Em 13 de dezembro de 2016 23:50, daniel...@gmail.com [oracle_br] <
> oracle_br@yahoogrupos.com.br> escreveu:
>
>>
>>
>> Étore Schiavini, boa noite.
>>
>> eu preciso para implementar na aplicação, você tem uma outra sugestão
>> para meu problema?
>>
>>
> 
>


RE: [oracle_br] Duvida na construção de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico 'Schiavini' et...@schiavini.inf.br [oracle_br]
A solução que eu sugeri pode ser utilizada na aplicação, o problema são os 
efeitos colaterais que ela pode trazer a todo o código preexistente já que o 
resultados de todas as demais consultas poderão ser diferentes do esperado.

 

Como tu citou que o problema principal após a utilização de uma função para 
remover a acentuação foi a performance, tu pode criar um function based index:

https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#i1006674

 

Se a necessidade de consulta for bem específica (apenas em uma ou em poucas 
tabelas), outra opção é criar uma coluna extra - calculada ou não - que 
armazene o nome sem acentuação.

 

Étore Schiavini 

 

From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Sent: terça-feira, 13 de dezembro de 2016 23:50
To: oracle_br@yahoogrupos.com.br
Subject: RE: [oracle_br] Duvida na constr ução de select para localizar um Nome 
com ou sem acento (JOÃO e JOAO)

 

  

Étore Schiavini, boa noite.

 

eu preciso para implementar na aplicação, você tem uma outra sugestão para meu 
problema?





[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Duvida na constr ução de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico Evandro Giachetto evandrogiache...@gmail.com [oracle_br]
Olá Daniel.

A solução provida pelo Schiavini é bem interessante.

Se você estiver utilizando Java como linguagem de desenvolvimento de sua
aplicação, um alter session é perfeitamente possível e nada muito
complicado. Seria, basicamente uma instrução a mais no seu objeto Statement
(de qualquer tipo).

Aqui tem um exemplo:

http://stackoverflow.com/questions/17578335/alter-session-to-set-date-format-in-mybatis

Evandro Giachetto
Oracle DBA
evandrogiache...@gmail.com
http://bancotunado.blogspot.com.br/


Em 13 de dezembro de 2016 23:50, daniel...@gmail.com [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Étore Schiavini, boa noite.
>
> eu preciso para implementar na aplicação, você tem uma outra sugestão para
> meu problema?
>
> 
>


RE: [oracle_br] Duvida na constr ução de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico daniel...@gmail.com [oracle_br]
Étore Schiavini, boa noite.
 

 eu preciso para implementar na aplicação, você tem uma outra sugestão para meu 
problema?


RE: [oracle_br] Duvida na construção de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico 'Schiavini' et...@schiavini.inf.br [oracle_br]
Daniel

 

Se tu puder alterar as configurações da sessão  (se for pra rodar um script 
avulso e não pra implementar isto na aplicação) a solução pode ser simples:

 

SQL> create table t( c varchar2(30) );
Table created.

SQL> insert into t values( 'Joao' );
1 row created.

SQL> insert into t values( 'JOAO' );
1 row created.

SQL> insert into t values( 'João' );
1 row created.

SQL> insert into t values( 'JOÃO' );
1 row created.

SQL> select c from t where c like '%JOAO%';

C
--
JOAO

SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
Session altered.

SQL> ALTER SESSION SET NLS_SORT=BINARY_AI;
Session altered.

SQL> select c from t where c like '%JOAO%';

C
--
Joao
JOAO
João
JOÃO



Pode-se criar um índice linguístico na coluna:

 

create index TCI on T( nlssort( C, 'NLS_SORT=BINARY_AI' ) );



Mas com esse % no início do argumento do like ele não vai ser utilizado.

 

Étore Schiavini

 

From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Sent: terça-feira, 13 de dezembro de 2016 15:24
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Duvida na construção de select para localizar um Nome com 
ou sem acento (JOÃO e JOAO)

 

  

Boa tarde amigos, pode parecer simples para alguns que detêm grande 
conhecimento em oracle e SQL, mas eu não consegui encontrar uma saída.

 

Tenho uma tabela de entidades onde um dos campos é o nome, e no mesmo temos 
nomes com e sem acento.

Preciso fazer uma busca na coluna para localizar independente do nome ter ou 
não acento, por exemplo JOÃO, tenho casos gravados tanto com acento como sem.

Criei então uma function para tirar os acentos, e usei a mesma na clausula 
WHERE, no entanto, tive uma queda brusca de desempenho, pois com a function 
perco a indexação.

esta é a function

CREATE OR REPLACE FUNCTION SF_FLRETIRARACENTUACAO(PSTRING IN VARCHAR2)

  RETURN VARCHAR2 IS

  VSTRINGRETURN VARCHAR2(4000);

BEGIN

  VSTRINGRETURN := TRANSLATE(PSTRING,

 'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü''',

 'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu');

  RETURN VSTRINGRETURN;

END;

Este era meu where

where sf_flretiraracentuacao(nm_entidade) LIKE 
sf_flretiraracentuacao('%JOÃO%')





Existe uma outra maneira de se fazer essa busca?
Alguém tem alguma sugestão?





Grato,





Daniel Mota

 





[oracle_br] Duvida na construção de select para localizar um Nome com ou sem acento (JOÃO e JOAO)

2016-12-13 Por tôpico daniel...@gmail.com [oracle_br]
Boa tarde amigos, pode parecer simples para alguns que detêm grande 
conhecimento em oracle e SQL, mas eu não consegui encontrar uma saída.
 

 Tenho uma tabela de entidades onde um dos campos é o nome, e no mesmo temos 
nomes com e sem acento.
 Preciso fazer uma busca na coluna para localizar independente do nome ter ou 
não acento, por exemplo JOÃO, tenho casos gravados tanto com acento como sem.
 Criei então uma function para tirar os acentos, e usei a mesma na clausula 
WHERE, no entanto, tive uma queda brusca de desempenho, pois com a function 
perco a indexação.

esta é a function

 CREATE OR REPLACE FUNCTION SF_FLRETIRARACENTUACAO(PSTRING IN VARCHAR2)
   RETURN VARCHAR2 IS
   VSTRINGRETURN VARCHAR2(4000);
 BEGIN
   VSTRINGRETURN := TRANSLATE(PSTRING,
  'ÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜáçéíóúàèìòùâêîôûãõëü''',
  'ACEIOUAEIOUAEIOUAOEUaceiouaeiouaeiouaoeu');
   RETURN VSTRINGRETURN;
 
 END;

Este era meu where


 where sf_flretiraracentuacao(nm_entidade) LIKE 
sf_flretiraracentuacao('%JOÃO%')
 

 Existe uma outra maneira de se fazer essa busca?
Alguém tem alguma sugestão?
 

 Grato,
 

 Daniel Mota
  


Re: [oracle_br] tamanho ideal do redo..

2016-12-13 Por tôpico Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]
Bom dia Angelo,

 Também trabalho com migração de dados e geralmente para evitar um grande
gargalo no caso de log, fazemos uma configuração conforme o tamanho dos
dados a serem importados. Nisso o log fica entre 200mb a 500mb, no nosso
caso está atendendo e não gera muitos archives.

Att,
Emerson S. Gaudêncio

2016-12-13 10:30 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] <
oracle_br@yahoogrupos.com.br>:

>
>
> Opa! bom dia
>
> 11gr2 win64 (11.2.0.4)
>
> A recomendação que fazem de pegar os ultimos 15 min de archive logs
> produzidos pelo banco
> pra definir um tamanho ideal pro redolog.. seria algo que se pode confiar
> ?
>
> Quando grava muitos em pouco tempo entra a questao do I/O. Se é grande
> demais e demora a descarregar o redo, também pode ficar inconsistente no
> caso de um crash e nao ter log para voltar com o backup...  entao,
> chutômetro teria que passar longe tb..
>
> Essa base entrou no ar tem pouco tempo, o redo ta no tamanho padrao ainda
> (50 mb)
> Ela da uns "picos" de log seguido por causa de umas rotinas de carga em
> tabela, porque ainda migra algumas informações do sistema antigo.
>
> E esse servidor produção é provisório, a base vai "morar" num linux até o
> inicio do ano que vem, assim espero..
>
>  Pasta de G:\U01\fast_recovery_area\ORALAB\ARCHIVELOG\2016_12_13
>
> 13/12/2016  11:07  .
> 13/12/2016  11:07  ..
> 13/12/2016  04:2040.978.944 O1_MF_1_2348_D4Z4T4BL_.ARC
> 13/12/2016  09:0842.750.976 O1_MF_1_2349_D4ZOO44P_.ARC
> 13/12/2016  09:0948.316.416 O1_MF_1_2350_D4ZOPXDQ_.ARC
> 13/12/2016  09:0945.516.288 O1_MF_1_2351_D4ZOR1J9_.ARC
> 13/12/2016  09:1142.886.656 O1_MF_1_2352_D4ZOT3PW_.ARC
> 13/12/2016  09:1246.206.464 O1_MF_1_2353_D4ZOWKWZ_.ARC
> 13/12/2016  09:1841.257.472 O1_MF_1_2354_D4ZP78QJ_.ARC
> 13/12/2016  09:2141.045.504 O1_MF_1_2355_D4ZPFO37_.ARC
> 13/12/2016  09:5540.813.568 O1_MF_1_2356_D4ZRG2NB_.ARC
> 13/12/2016  10:1548.666.624 O1_MF_1_2357_D4ZSL52M_.ARC
> 13/12/2016  10:1550.445.824 O1_MF_1_2358_D4ZSLTDD_.ARC
> 13/12/2016  10:1549.570.304 O1_MF_1_2359_D4ZSMH52_.ARC
> 13/12/2016  10:1650.048.000 O1_MF_1_2360_D4ZSN4BG_.ARC
> 13/12/2016  10:1649.065.472 O1_MF_1_2361_D4ZSNS8Z_.ARC
> 13/12/2016  10:1640.884.736 O1_MF_1_2362_D4ZSOCGC_.ARC
> 13/12/2016  11:0744.499.456 O1_MF_1_2363_D4ZWMTJ5_.ARC
>   16 arquivo(s)722.952.704 bytes
>
> G:\U01\fast_recovery_area\ORALAB\ARCHIVELOG\2016_12_13>
>
>
> []s angelo
>
> 
>


[oracle_br] tamanho ideal do redo..

2016-12-13 Por tôpico angelo angelolis...@gmail.com [oracle_br]
Opa! bom dia

11gr2 win64 (11.2.0.4)

A recomendação que fazem de pegar os ultimos 15 min de archive logs
produzidos pelo banco
pra definir um tamanho ideal pro redolog.. seria algo que se pode confiar ?

Quando grava muitos em pouco tempo entra a questao do I/O. Se é grande
demais e demora a descarregar o redo, também pode ficar inconsistente no
caso de um crash e nao ter log para voltar com o backup...  entao,
chutômetro teria que passar longe tb..

Essa base entrou no ar tem pouco tempo, o redo ta no tamanho padrao ainda
(50 mb)
Ela da uns "picos" de log seguido por causa de umas rotinas de carga em
tabela, porque ainda migra algumas informações do sistema antigo.

E esse servidor produção é provisório, a base vai "morar" num linux até o
inicio do ano que vem, assim espero..

 Pasta de G:\U01\fast_recovery_area\ORALAB\ARCHIVELOG\2016_12_13

13/12/2016  11:07  .
13/12/2016  11:07  ..
13/12/2016  04:2040.978.944 O1_MF_1_2348_D4Z4T4BL_.ARC
13/12/2016  09:0842.750.976 O1_MF_1_2349_D4ZOO44P_.ARC
13/12/2016  09:0948.316.416 O1_MF_1_2350_D4ZOPXDQ_.ARC
13/12/2016  09:0945.516.288 O1_MF_1_2351_D4ZOR1J9_.ARC
13/12/2016  09:1142.886.656 O1_MF_1_2352_D4ZOT3PW_.ARC
13/12/2016  09:1246.206.464 O1_MF_1_2353_D4ZOWKWZ_.ARC
13/12/2016  09:1841.257.472 O1_MF_1_2354_D4ZP78QJ_.ARC
13/12/2016  09:2141.045.504 O1_MF_1_2355_D4ZPFO37_.ARC
13/12/2016  09:5540.813.568 O1_MF_1_2356_D4ZRG2NB_.ARC
13/12/2016  10:1548.666.624 O1_MF_1_2357_D4ZSL52M_.ARC
13/12/2016  10:1550.445.824 O1_MF_1_2358_D4ZSLTDD_.ARC
13/12/2016  10:1549.570.304 O1_MF_1_2359_D4ZSMH52_.ARC
13/12/2016  10:1650.048.000 O1_MF_1_2360_D4ZSN4BG_.ARC
13/12/2016  10:1649.065.472 O1_MF_1_2361_D4ZSNS8Z_.ARC
13/12/2016  10:1640.884.736 O1_MF_1_2362_D4ZSOCGC_.ARC
13/12/2016  11:0744.499.456 O1_MF_1_2363_D4ZWMTJ5_.ARC
  16 arquivo(s)722.952.704 bytes

G:\U01\fast_recovery_area\ORALAB\ARCHIVELOG\2016_12_13>


[]s angelo