Re: [oracle_br] Duvida na constr ução de select para localizar um Nome com ou sem acento (JOÃO e JOAO)
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)
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)
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)
É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)
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)
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..
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..
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