Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS
Opa, por nada Ricardo! Fico feliz em ter ajudado. Grande abraço! Em 17 de outubro de 2017 12:47, Ricardo Sá ricardo@terra.com.br [oracle_br]escreveu: > > > Show, > > @Gustavo, era isto mesmo que eu precisava. > > Muito obrigado. > > > > @Rodrigo, > > Agradeço também a ajuda. > > > > > > *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] > *Enviada em:* terça-feira, 17 de outubro de 2017 12:09 > *Para:* oracle_br@yahoogrupos.com.br > *Assunto:* Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES > DE LINHAS > > > > > > Boa tarde, Ricardo! > > > > Veja se isto ajuda: É um bloco PL/SQL que, a cada 500 registros > atualizados, efetua um COMMIT, para não comprometer a área de Rollback... > > Obs: Efetuar commit a cada 500 registros é só um exemplo... Este valor > pode ser maior ou menor, de acordo com a área de Rollback... > > > > > > DECLARE > > vQtLinhas NUMBER(3) := 0; > > > > BEGIN > > > > FOR Reg IN (SELECT CAMPO_PK ID_TABELA -- Campo chave da tabela > > FROM TABELA) > > LOOP > > > > UPDATE TABELA > > SETCAMPO_CHAR = '' > > WHERE CAMPO_PK = Reg.ID_TABELA; > > > > vQtLinhas := vQtLinhas + 1; -- Registra a Qtde de Linhas atualizadas > > > > IF vQtLinhas = 500 THEN -- Quando o total de linhas atualizadas > atingir 500, efetua um COMMIT; > > COMMIT; > > vQtLinhas := 0; > > END IF; > > > > END LOOP; > > > > COMMIT; -- Este COMMIT é importante para atualizar o último bloco de > linhas que não chegou a 500 (Ex: As últimas 387 linhas) > > > > END; > > > > > > > > Em 17 de outubro de 2017 11:34, Ricardo Sá ricardo@terra.com.br > [oracle_br] escreveu: > > > > Bom dia, a todos. > > > > Solicito a gentileza se alguém pode me ajudar a resolver uma questão. > > > > Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes > de linhas). > > > > O update é sobre uma coluna CHAR(1) com o valor “ “. > > > > Pensei em um bloco PLSQL, mas me falta neste momento criatividade para > montar este bloco. > > > > Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2 > nós esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que > foi construído desta forma). > > > > Alguem poderia, me ajudar nesta questão. > > > > Ricardo Sá > > (11) 98286-0048 > > > > > > -- > > Atenciosamente, > *Gustavo Guedes de Sene* > > > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] AJUDA - UPDATE MONSTRO TABELA DE 11,5 MILHOES DE LINHAS
Boa tarde, Ricardo! Veja se isto ajuda: É um bloco PL/SQL que, a cada 500 registros atualizados, efetua um COMMIT, para não comprometer a área de Rollback... Obs: Efetuar commit a cada 500 registros é só um exemplo... Este valor pode ser maior ou menor, de acordo com a área de Rollback... DECLARE vQtLinhas NUMBER(3) := 0; BEGIN FOR Reg IN (SELECT CAMPO_PK ID_TABELA -- Campo chave da tabela FROM TABELA) LOOP UPDATE TABELA SETCAMPO_CHAR = '' WHERE CAMPO_PK = Reg.ID_TABELA; vQtLinhas := vQtLinhas + 1; -- Registra a Qtde de Linhas atualizadas IF vQtLinhas = 500 THEN -- Quando o total de linhas atualizadas atingir 500, efetua um COMMIT; COMMIT; vQtLinhas := 0; END IF; END LOOP; COMMIT; -- Este COMMIT é importante para atualizar o último bloco de linhas que não chegou a 500 (Ex: As últimas 387 linhas) END; Em 17 de outubro de 2017 11:34, Ricardo Sá ricardo@terra.com.br [oracle_br]escreveu: > > > Bom dia, a todos. > > > > Solicito a gentileza se alguém pode me ajudar a resolver uma questão. > > > > Preciso realizar um UPDATE monstro em um tabela 11.500.000 (11,5 milhoes > de linhas). > > > > O update é sobre uma coluna CHAR(1) com o valor “ “. > > > > Pensei em um bloco PLSQL, mas me falta neste momento criatividade para > montar este bloco. > > > > Obs.: O banco é 11.2.0.4.0 (Enterprise Edition) sobre Oracle RAC com 2 > nós esta tabela tem 35 indices... (sei que é absurdo, mas é o ERP que > foi construído desta forma). > > > > Alguem poderia, me ajudar nesta questão. > > > > Ricardo Sá > > (11) 98286-0048 > > > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Diferença executando REGEXP_LIKE
Zilmar, boa noite! Talvez o código abaixo ajude. Com expressão regular, fica bem mais enxuto. Mas creio que isso aí possa te ajudar. Fonte: https://community.oracle.com/thread/666479 Tenho uma função de validação de email na empresa em que trabalho. É algo bem similar a este código abaixo. Amanhã eu posto aqui. Abraços! ***PL/SQL code for Email validation*** DECLARE t_valid NUMBER(1); t_totallen NUMBER(2); t_counter NUMBER(2):=0; t_atpos NUMBER(2):= 1; i NUMBER(2) := 1; t_pointpos NUMBER(2):= 1; mail_ch VARCHAR2(1); result number; --:GR BEGIN t_totallen := LENGTH(:text_item_email); t_counter := t_totallen; i := 1; t_valid := 1; - IF LENGTH(ltrim(rtrim(:text_item_email))) = 0 THEN t_valid := 0; ELSE --- --This is to check special characters are present or not in the email ID t_counter := t_totallen; WHILE t_counter > 0 LOOP mail_ch := substr(:text_item_email,i,1); i := i+1; t_counter := t_counter -1; IF mail_ch IN (' ','!','#','$','%','^','&','*','(',')','-','','"', '+','|','{','}','[',']',':','>','<','?','/','\','=') THEN t_valid := 0; EXIT; END IF; END LOOP; --- --This is to check more than one '@' character present or not t_atpos := instr(:text_item_email,'@',1,2) ; IF t_atpos > 1 then t_valid := 0; END IF; --- --This is to check at minimum and at maximum only one '@' character present t_atpos := instr(:text_item_email,'@',1) ; IF t_atpos IN (0,1) THEN t_valid := 0; END IF; --- --This is to check at least one '.' character present or not t_pointpos := instr(:text_item_email,'.',1) ; IF t_pointpos IN (0,1) THEN t_valid := 0; END IF; --- --This is to check at least one character is present between @ and '.' :GR t_atpos := instr(:text_item_email,'@',1) ; t_pointpos := instr(:text_item_email,'.',1) ; IF t_pointpos-t_atpos<=1 THEN t_valid := 0; END IF; --- --This is to check at least one character is present after '.' :GR t_pointpos := instr(:text_item_email,'.',1) ; IF t_totallen-t_pointpos<=0 THEN t_valid := 0; END IF; --- END IF; if(t_valid=0) then message('Invalid Email'); result:=show_alert('alert_email'); raise form_trigger_failure; end if; END; ---***PL/SQL code for Name Validation***--- DECLARE t_valid NUMBER(1); t_totallen NUMBER(2); t_counter NUMBER(2):=0; i NUMBER(2) := 1; name_ch VARCHAR2(1); --name_ch_ascii NUMBER; result number; --:GR BEGIN t_totallen := LENGTH(:text_item_first_name); t_counter := t_totallen; i := 1; t_valid := 1; - IF LENGTH(ltrim(rtrim(:text_item_first_name))) = 0 THEN t_valid := 0; ELSE --- --This is to check if each character in name lies in the valid ascii range t_counter := t_totallen; WHILE t_counter > 0 LOOP name_ch := upper(substr(:text_item_first_name,i,1)); --name_ch_ascii := convert(name_ch,'US7ASCII'); i := i+1; t_counter := t_counter -1; --IF name_ch_ascii not between 65 and 90 THEN IF name_ch not between 'A' and 'Z' THEN t_valid := 0; EXIT; END IF; END LOOP; --- END IF; if(t_valid=0) then message('Invalid First Name'); result:=show_alert('alert_first_name'); raise form_trigger_failure; end if; END; Em 4 de outubro de 2016 21:28, zfurq...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > Chiappa, > > Entendo e concordo com os pontos que você colocou, mas na verdade, o que > queremos é simplesmente uma função de validação de endereços de email. > > Colegas, alguém tem uma função para isso, preferencialmente que não > utilize o REGEXP_LIKE ? > > Grato a todos pela ajuda. > > Zilmar Furquim > Synchro Systems > > > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Ajuda - SQL
Desculpe: *INSTR é o caminho, rsrs. []'s Em 7 de abril de 2016 19:24, Gustavo Guedesescreveu: > Diego, tudo bem? > > Já fiz isso usando a função INSTR do PL/SQL. > Era algo que combinava as funções INSTR SUBSTR e REPLACE > Não tenho o exemplo aqui agora, mas a dinâmica é algo do tipo: > > Com o INSTR vc consegue obter a posição da ocorrência do "||" (duplo > pipe). No seu caso, retornaria 33, se não me engano. Daí, com o REPLACE e o > SUBSTR, vc consegue substituir os caracteres das posições 33 e 34 (||) por > um NULL, por exemplo. > Dê uma olhada na função REGEXP_INSTR tb. Ela pode ajudar. > > Abraços, e desculpe por não postar um exemplo aqui agora. Mas SUBSTR é o > caminho, rs. > > []'s > > Em 7 de abril de 2016 16:24, Diego Melo diegopm...@gmail.com [oracle_br] < > oracle_br@yahoogrupos.com.br> escreveu: > >> >> >> @Emerson, >> >> a sua função deu certo. Muito obrigado. >> >> @Angelo, >> quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me >> veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou >> null mesmo. >> >> Valeu >> >> 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] < >> oracle_br@yahoogrupos.com.br>: >> >>> >>> >>> Boa tarde, Diego, >>> >>> Será que ao invés de dar ruim na parada, não deu bom não? >>> >>> Pois não ficou claro sobre o que deveria acontecer no caso em que não >>> vier o cpf na string. >>> >>> To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os >>> pipes. >>> Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, >>> o que entraria no lugar ? ou tinha cpf e nao inseriu ? >>> >>> >>> 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| >>> >>> >>> >>> >>> >>> 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < >>> oracle_br@yahoogrupos.com.br>: >>> Olá galera, tudo bem ? Por gentileza, poderiam me ajudar em um SQL. Minha versão do Oracle é: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi PL/SQL Release 10.2.0.5.0 - Production "CORE 10.2.0.5.0 Production" TNS for Linux: Version 10.2.0.5.0 - Production Tenho uma tabela com uma string e diversos campos separados por | (pipe) Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o problema é que quando um registro não tem o campo preenchido e a string traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a string original Alguém teria uma solução em Oracle SQL ?? Fiz do seguinte modo: CREATE TABLE t_1 ( strings varchar2(4000)); /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); COMMIT; SELECT regexp_substr(strings,'[^|]+',1,1) identificador, regexp_substr(strings,'[^|]+',1,2) id, regexp_substr(strings,'[^|]+',1,3) nome, regexp_substr(strings,'[^|]+',1,4) cpf, regexp_substr(strings,'[^|]+',1,5) pais, regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba ocupando o espaço do CPF. Grato. Diego >>> >> >> > > > > -- > Atenciosamente, > *Gustavo Guedes de Sene* > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Ajuda - SQL
Diego, tudo bem? Já fiz isso usando a função INSTR do PL/SQL. Era algo que combinava as funções INSTR SUBSTR e REPLACE Não tenho o exemplo aqui agora, mas a dinâmica é algo do tipo: Com o INSTR vc consegue obter a posição da ocorrência do "||" (duplo pipe). No seu caso, retornaria 33, se não me engano. Daí, com o REPLACE e o SUBSTR, vc consegue substituir os caracteres das posições 33 e 34 (||) por um NULL, por exemplo. Dê uma olhada na função REGEXP_INSTR tb. Ela pode ajudar. Abraços, e desculpe por não postar um exemplo aqui agora. Mas SUBSTR é o caminho, rs. []'s Em 7 de abril de 2016 16:24, Diego Melo diegopm...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > @Emerson, > > a sua função deu certo. Muito obrigado. > > @Angelo, > quiando vem vazio, deve ficar null mesmo, o CPF foi só um exemplo que me > veio na cabeça, mas são outros campos na verdade, que tem que vir vazio ou > null mesmo. > > Valeu > > 2016-04-07 16:12 GMT-03:00 angelo angelolis...@gmail.com [oracle_br] < > oracle_br@yahoogrupos.com.br>: > >> >> >> Boa tarde, Diego, >> >> Será que ao invés de dar ruim na parada, não deu bom não? >> >> Pois não ficou claro sobre o que deveria acontecer no caso em que não >> vier o cpf na string. >> >> To entendendo que se nao veio nada, entraria vazio mesmo, melhor, os >> pipes. >> Você está importando isso de algum arquivo edi ? Campo cpf veio vazio, o >> que entraria no lugar ? ou tinha cpf e nao inseriu ? >> >> >> 99|152|LUCIANA XIMENES SILVA|o que fazer quando aqui for vazio? |BRA|0|| >> >> >> >> >> >> 2016-04-07 15:57 GMT-03:00 Diego Melo diegopm...@gmail.com [oracle_br] < >> oracle_br@yahoogrupos.com.br>: >> >>> >>> >>> Olá galera, tudo bem ? >>> >>> Por gentileza, poderiam me ajudar em um SQL. >>> >>> Minha versão do Oracle é: >>> >>> Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi >>> PL/SQL Release 10.2.0.5.0 - Production >>> "CORE 10.2.0.5.0 Production" >>> TNS for Linux: Version 10.2.0.5.0 - Production >>> >>> Tenho uma tabela com uma string e diversos campos separados por | (pipe) >>> >>> Preciso trazer cada campo em uma coluna. Eu até consegui uma maneira, o >>> problema é que quando um registro não tem o campo preenchido e a string >>> traz ||, ai da ruim na minha solução. Detalhe, eu não posso atlerar a >>> string original >>> >>> Alguém teria uma solução em Oracle SQL ?? >>> >>> Fiz do seguinte modo: >>> >>> >>> CREATE TABLE t_1 ( strings varchar2(4000)); >>> /INSERT INTO t_1VALUES ('99|151|JOANA PRADO |08227525490|BRA|0||'); >>> INSERT INTO t_1VALUES ('99|152|LUCIANA XIMENES SILVA||BRA|0||'); >>> INSERT INTO t_1VALUES ('99|153|JULIA ROBERTS|44303539805|USA|0||'); >>> COMMIT; >>> SELECT regexp_substr(strings,'[^|]+',1,1) identificador, >>>regexp_substr(strings,'[^|]+',1,2) id, >>>regexp_substr(strings,'[^|]+',1,3) nome, >>>regexp_substr(strings,'[^|]+',1,4) cpf, >>>regexp_substr(strings,'[^|]+',1,5) pais, >>>regexp_substr(strings,'[^|]+',1,6) tipoFROM t_1 >>> >>> >>> >>> Reparem que o registro id 152 não tem cpf e ai o campo de pais acaba >>> ocupando o espaço do CPF. >>> >>> Grato. >>> >>> Diego >>> >>> >>> >>> >> > > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Regra de negocio na aplicação ou no banco de dados?
Opa, bom dia Dalton! Confesso que não vi o vídeo (aqui no momento não é possível vê-lo...), mas pelos comentários do Ângelo, deu pra "captar" do que se trata, e compartilho da opinião/sugestão do Ângelo... Aqui onde trabalho, estamos migrando de Oracle Forms + SGBD Oracle, para C# (Microsoft Visual Studio) + SGBD Oracle. Há toneladas de Packages, Procedures e Functions no banco, o que facilita por um lado (questão de performance, transações de rede, etc). Mas a tendência é realmente esta que o Angelo comentou... Estamos abordando a arquitetura MVC, usando Webservices e rotas restful, em um novo sistema pra Web, e aos poucos estamos tirando as regras de negócio do banco, e migrando-as devidamente para as camadas Model/View/Controller. Ficando o SGBD mais com o papel de repositório de dados mesmo, e não repositório de lógica e regras. A princípio, o principal "medo" é que a aplicação se torne lenta. Mas com o tempo fica similar ou mais performática até, pois vc tem mais recursos para balancear a carga (API Back-End, Front-End, os Webservices, e o próprio SGBD também...). Depois de 15 anos trabalhando com banco Oracle e desenvolvimento procedural (Forms/Reports), eu admito que tinha uma certa resistência neste ponto de tirar a lógica e as Stored Procedures do banco... Mas com a abordagem Orientada a Objetos, e os fantásticos recursos da arquitetura MVC e de linguagens OO tipo C# ou Java, hoje eu conheço um pouco dos dois mundos, e posso dizer que a migração é igual injeção, rsrs: Dói, mas cura a sua aplicação ou Sistema de Gestão de uma forma muito impressionante e positiva. Minha sugestão: Vá para o caminho de migração da lógica para Webservices e para a arquitetura MVC, com abordagem restful, e aos poucos vá tirando a lógica e regras do SGBD, sempre aos poucos para ir analisando a curva de performance. Na ponta final, vc terá uma aplicação flexível, menos engessada ou amarrada ao banco, performática e através de um Hibernate ou nHibernate, vc fará o mapeamento com o banco, e como "mágica" tudo será devidamente recuperado, processado nas camadas supracitadas, e posteriormente salvo no banco, que terá um papel mais de repositório do que de lugar para lógica e regras negociais... PS: Mas é assunto que dá pano pra manga, viu? Toda mudança de abordagem, paradigma, tecnologias, tem este aspecto polêmico. Haja visto que o kernel de sistemas de muitas corporações gigantes, ainda seja o velho e bom COBOL... Abraços!! Em 5 de abril de 2016 09:30, angelo angelolis...@gmail.com [oracle_br] < oracle_br@yahoogrupos.com.br> escreveu: > > > Dalton, > > Prepare-se para receber diversas opinioes com visoes diferente do assunto. > > Muita gente tem essa visao de nao criar SPs no banco pra nao ficar muito > amarrado a plataforma. > > Por outro lado, usar e abusar dos recursos da plataforma trazem inumeras > vantagens, o custo é ficar amarrado. > > Interessante é a proposta do modelo mvc, ja viu? > > Melhor ainda se, no mundo perfeito, partissem pra webservices e o > aplicativo ficar agnóstico nao amarrado a ninguem só a metadado.. isso o > restful api ta matando a pau hoje em dia, por exemplo > > Mas pro dba que só administra a base no dia dia nao muda muito.. tudo isso > q falei la em cima vai cair numa insert ou select. > > On Tuesday, 5 April 2016, Dalton Oliveira dalton_olive...@hotmail.com > [oracle_br]wrote: > >> >> >> Pessoal, bom dia!!! >> >> Qual a opinião de vocês sobre regra de negocio no banco de dados? >> >> A empresa que trabalho contratou uma consultoria e o cara "detonou" nosso >> modelo de desenvolvimento, pois desenvolvemos muito no banco de dados. >> Temos diversas rotinas que processamos em procedures e funções para ter >> desempenho. Antes algumas dessas rotinas eram no aplicativo e demorava >> muito tempo, no banco de dados o processamento é muito mais rápido. >> >> Olhem o video do consultor. >> >> https://www.youtube.com/watch?v=9hYgzPZPFVY >> >> Na minha modesta opinião, acho que ele só sabe o que é select, insert e >> delete. Não tem nenhum conhecimento de BD. >> >> O que vcs acham ? >> >> Att, >> >> >> Dalton >> >> > -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Re: Livros oracle pdf
Olá, colega! No próprio site da Oracle, vc pode encontrar uma vasta e rica documentação. E mais: Oficial e Gratuita. Daí vc não cai nesta questão de pirataria, Violação de Direitos Autorais, etc. Por exemplo, uma ótima documentação de Oracle Forms Builder 6i: http://download.oracle.com/otn_hosted_doc/forms/forms/A73074_01.pdf E claro, há documentações para todos os produtos da Oracle também, como das diferentes versões dos SGBD's, de Java, etc e etc... Dica: Entra neste link aqui abaixo, e na aba Seach, escolha por exemplo a opção Database, e na frente coloque para pesquisar Documentation (sem as aspas). Depois, clique na lupa, e vc verá que vai trazer bastante material: http://docs.oracle.com/en/ Espero ter ajudado... Abraços! Em 15 de agosto de 2015 18:09, Jose Neto jamn...@hotmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Isso ae, cara. Faz aí o que vc quiser. Vc é adulto, maior de idade, responsável. Só tô te avisando que isso é uma possibilidade. Boa sorte -- To: oracle_br@yahoogrupos.com.br From: oracle_br@yahoogrupos.com.br Date: Sat, 15 Aug 2015 18:25:03 + Subject: Re: [oracle_br] Re: Livros oracle pdf Aham... tá bom... também nunca vi, por isso perguntei, bane da onde? Do oracle_br? rsrsrsrs Quanto a conta de onde veio a nota, até poderia ser, mas até provar que não é cavalo já comeu dois sacos de milho, é como costumam dizer por aqui. Não vou fornecer link, pois sei que o grupo não é pra isso, mas pro amigo que tá procurando aí, só 'googlear' e vai achar uma PÁ de pdf's por aí. ;) Em sáb, 15 de ago de 2015 às 13:59, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Bane de onde puder, do Serviço dela que estava em uso para pirataria : por exemplo, se alguém usar os Fóruns dela para espalhar material com copyright é um ban na hora se ela descobrir, e ainda mais , em tese se ela pegar alguém copiando e distribuindo material interno dela (seja apostilas Oficiais, notas de Suporte, o que for) se ela identificar qual a conta de suporte/conta Oracle de onde veio o material e/ou que foi usada para distribuir, por Contrato ela tem direito a encerrar a conta/encerrar o Suporte unilateralmente, na cara, sem A nem B Eu nunca vi essa opção sendo usada MAS que é possível e normalmente tá presente nos contratos é uma certeza... []s Chiappa -- Att,/Regards, Vitor Jr. Infraestrutura / Infrastructure Team Oracle 12c DBA Certified Professional - OCP 12c Oracle 11g DBA Certified Professional - OCP 11g Oracle Certified Expert, Oracle Real Application Clusters 11g and Grid Infrastructure Administrator - OCE Oracle Database 11g Performance Tuning Certified Expert - OCE Oracle Exadata 11g Certified Implementation Specialist Oracle Certified Associate, MySQL 5 mail, gtalk e msn: vitorj...@gmail.com http://certificacaobd.com.br/ skype: vjunior1981 https://mybizcard.co/vitor.jr.385628 -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Re: Modelagem de Dados
Olá Alexssandro, boa noite! Primeiramente eu gostaria de dizer que reitero e ratifico tudo o que os demais colegas do grupo citaram e opininaram... Mas fiquei apenas com uma dúvida, sobre exatamente o que vc quis dizer com a sua pergunta... Vc quis dizer que a empresa vai deixar de utilizar alguma ferramenta de modelagem em específico? Como a Oracle Designer, por exemplo? Pq se este for o caso, existem várias outras ferramentas, incluindo algumas gratuitas e ótimas, que podem ajudar a vida aí do setor de vocês... Pq o conceito de modelagem em si, não se retira... Não tem como a empresa retirar.. Fazendo uma analogia, é como se a empresa estivesse tentando retirar as idéias ou o pensamento da cabeça das pessoas... A idéia de abstração do mundo real em um modelo lógico/computacional. Partindo deste princípio, eu supus (me corrija se eu estiver errado...) que a empresa deixou de dar importância ao registro ou documentação e formalização desta modelagem existente na cabeça, em algum tipo de documento ou ferramenta, por questões de custos, ou por achar que isso é perda de tempo, algo assim.. Se este for o caso, existem boas ferramentas de modelagem aí no mercado, algumas free e ótimas, e também as pagas... Seguem algumas: - Astah (antiga JUDE): Muito boa e gratuita, e com um foco um pouco maior em UML e OO; - Erwin; - Cacoo: Um pouco mais simples, porém funciona via web permitindo o armazenamento dos diagramas na nuvem; - Não sei se a Rational ainda disponibiliza a ferramenta Rational Rose, mas a IBM disponibiliza a IBM Rational Requisite Pro (pelo nome, acho que a IBM comprou a Rational, e atualmente deve manter a ferramenta): Deve ser muito poderosa, porém cara, creio eu. - *** DBDesigner ***: Esta é mais focada para a modelagem de Banco de Bados mesmo, talvez seja o seu caso: É excelente, gratuita e open source; - TOAD Data Modeler; Dá uma pesquisada sobre esta DBDesigner (para os DBA's), e sobre o Astah (para os Analistas/Desenvolvedores) ;) Espero ter ajudado! ;) E caso eu tenha confundido o seu caso, a sua dúvida, ou algo relacionado à decisão da empresa, me desculpe... Grande abraço! Em 29 de maio de 2015 14:16, angelo angelolis...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Lamentável porque existem empresas de todos os tamanhos que agem dessa forma... não levam o TI a sério (acham que é só um quebra galho, que qq um vai la e faz).. 2015-05-29 11:06 GMT-03:00 jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br: Bom, quando vc diz que a modelagem de dados foi retirada, COM CERTEZA o que vc quer dizer é que não há um processo formal que registre, preferencialmente num software adequado, a análise e a transformação de entidades físicas, vindas do negócio, em entidades lógicas, bem como seus relacionamentos, né ? Pois necessariamente ** TUDO ** que está no banco de dados não está lá á toa - TUDO que ali está visa ser uma Representação de um objeto/processo/item REAL do negócio da Empresa, nada está lá a toa... Ninguém acorda um belo dia e do nada sai criando uma tabela NOTAS_FISCAIS, necessariamente alguém levantou a existência de uma NF real, descobriu quais informações a Empresa precisa, pensou na melhor maneira de as agregar e relacionar.. ISSO é que é MODELAGEM, e isso sempre existe, sem isso não se chega na representação informatizada de algo, que é o DATABASE Certamente o que a tua Empresa deve estar fazendo é que os procedimentos de MODELAGEM continuam existindo, claro, MAS são feitos num papel de pão qualquer, ou (ainda pior!) os Analistas o fazem mentalmente, apenas... Com certeza, não há NADA de bom nisso, não há uma palavra positiva que eu possa dizer a respeito de tal situação - eu só imagino por exemplo os MONTES de retrabalho por causa de levantamentos análises feitos por pessoas diferentes que não registraram seus trabalhos em lugar nenhum (tudo é mental, tudo é em papel de pão) Nem falo da questão da falta de Segurança por não se ter a info registrada, da má qualidade inerente a vc fazer algo menualmente e sem a mínima formalização... urgh...Meus pêsames... []s Chiappa -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br] Re: Sub Query
Boa noite! Não que as outras soluções não funcionem. Mas eu daria e recomendaria fortemente a sugestão já dada por Chiappa... Pois é meio que a essência, o conceito ou propósito de um banco de dados relacional: Simplesmente relacionar as tabelas desejadas, através dos devidos e respectivos campos-chave (FK's) das mesmas... E só. Neste caso, não precisa de sub-queries ou exists, etc. Só relacionar mesmo, e boa. Espero ter ajudado, abraços! Em 3 de fevereiro de 2015 17:24, jlchia...@yahoo.com.br [oracle_br] oracle_br@yahoogrupos.com.br escreveu: Claro, se eu usei d como alias para a tabela de detalhes, d. deveria ser o prefixo, substitua... []s Chiappa -- Atenciosamente, *Gustavo Guedes de Sene*
Re: [oracle_br]
Olá Alessandro, boa noite! Confesso que no momento não posso testar para afirmar com certeza... Mas a expressão abaixo não daria na mesma? SELECT * FROM C1_IMOVEL B WHEREB.FLG_END_ENTREGA = 'L' AND EXISTS (SELECT 1 FROM C1_END_COMP Z WHERE Z.IMO_NRO = B.NRO AND Z.NRO_PREDIO 'S/N' AND Z.CID_NRO = 22); Uma vez que no seu decode, vc está testando somente um valor, que seria o 'L'. Ou seja, em outras palavras, vc precisa dos registros onde B.FLG_END_ENTREGA seja igual a 'L', E AO MESMO TEMPO (AND) exista algum registro que atenda às condições da consulta do EXISTS... Ou seja, como o seu DECODE não tem um else (um segundo teste ou valor caso seja 'L') dá a entender que vc precisa somente de registros onde B.FLG_END_ENTREGA = 'L' e Exista(...Condição...). Espero ter ajudado... Abraços! Gustavo. Em 28 de janeiro de 2015 14:31, alessandro micromap alessandro.micro...@gmail.com [oracle_br] oracle_br@yahoogrupos.com.br escreveu: TEM COMO FAZER PRECISO QUE UMA WHERE POSSA FAZER UM DECODE E DENTRO DESTE DECODE FAZER UM SELECT EXISTS. ISSO É POSSÍVEL SELECT * FROM C1_IMOVEL B WHEREDECODE (B.FLG_END_ENTREGA,'L',EXISTS (SELECT 1 FROM C1_END_COMP Z WHERE Z.IMO_NRO = B.NRO AND Z.NRO_PREDIO 'S/N' AND Z.CID_NRO = 22)) -- Atenciosamente, *Gustavo Guedes de Sene*