Re: RES: RES: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Sim, não é incomum que os jobs/processos/configs default NÂO SIRVAM pra Todo e Qualquer Cenário, sim - até porque eles são pensados para os casos genéricos, mais comuns, né não ? Além disso, o coitado do RDBMS *** não sabe *** exatamente para o que vc usa seu banco e seus objetos, então normalmente ele tenta analisar tudo - não é impossível, por exemplo, que uma tabela AUDITORianãoseioque NÂO contenha dados de usuários, então não sei se faz muito sentido coletar stats dela Né ? []s Chiappa
Re: RES: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Vixe - rodar sem Suporte é uma coisa ruim mas q acontece mas sem Licença aí é danado... Então tá ** claro ** o que vc tem que fazer , é meter medo nesse pessoal de levar uma mega-ultra-master multa por pirataria (que é o que acontece se vc rodar sem licença, googla que vc acha uns tantos quantos casos pra servir de exemplo) e solicitar Suporte pra ter acesso aos patches e bugfixes, bem como ser atendido pelos técnicos do Suporte da Oracle - enquanto isso não acontece não tem jeito, é ir subindo na mão e quebrando o galho até que apareça um bugzão show-stopper que não deixa mais o banco levantar, é isso... []s Chiappa
Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
na verdade o colega diz que é Windows, então não é PSU mas sim bundle patch mas realmente, se saiu CPU ou PSU logo já vem o bundle para Windows... []s Chiappa
Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Complementando a informacao informacao... Patchset13390677 vulgo Oracle 11gr2 11.2.0.4 Sendo que ja tem depois dele tem o 23530402 ( cpu julho16) Tenho um servidor que foram aplicados..ta rodando já 2016-09-23 15:47 GMT-03:00 jlchia...@yahoo.com.br [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > Opa, pára tudo : > > "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -" > > 11.2.0.1, sério Depois do mundo de bugfixes introduzidos no 11.2.0.2, > 11.2.0.3 E 11.2.0.4 ??? Mega-ultra-biga-suspeito de vc estar caindo num bug > já conhecido, talvez no mesmo que indiquei, talvez num dos outros > Aposto e ganho que o Suporte vai mandar vc Aplicar o patchset mais recente > JUNTO com o último PSU - "Bundle" do caso de Windows > > []s > > Chiappa > >
Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Vixe babou então... Sugiro, documentar tudo que ta acontecendo e avisar a eles.. Nao ter licença já não é uma coisa boa, por motivos que extrapolam usar o Oracle e não é objeto da discussão aqui.. Ficar sem o Oracle, desatualizado é pior ainda porque podem ocorrer de topar em algum bug que ja foi resolvido e a empresa parar porque não resolveu o primeiro item na entrada.. 3 regras do DBA... (pegando emprestado do Fabio Telles) - 1ª O DBA deve educar o usuário. O DBA sempre diz o jeito certo de fazer as coisas. - 2ª Meta medo no cara. Coisas ruins vão acontecer se ele não ouvir o DBA deles. - 3ª Crie descontentamento. Se eles se recusarem a ouvir as 2 primeiras regras ferra eles, deixa o banco cair. http://savepoint.blog.br/3-regras-do-dba/ E o meu amigo la o problema dele é quase o mesmo.. nao tem licença e fica rebootando o servidor todo dia... e vai vivendo... 2016-09-23 15:54 GMT-03:00 'Yahoo' alisson...@yahoo.com.br [oracle_br] < oracle_br@yahoogrupos.com.br>: > > > Na verdade a empresa não tem licença para essa base... > > > > Esse é o grande problema.. L > > > > *De:* oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] > *Enviada em:* sexta-feira, 23 de setembro de 2016 15:48 > *Para:* oracle_br@yahoogrupos.com.br > *Assunto:* Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background > process "J000" did not start after 120 seconds > > > > > > Opa, pára tudo : > > "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -" > > 11.2.0.1, sério Depois do mundo de bugfixes introduzidos no 11.2.0.2, > 11.2.0.3 E 11.2.0.4 ??? Mega-ultra-biga-suspeito de vc estar caindo num bug > já conhecido, talvez no mesmo que indiquei, talvez num dos outros > Aposto e ganho que o Suporte vai mandar vc Aplicar o patchset mais recente > JUNTO com o último PSU - "Bundle" do caso de Windows > > []s > > Chiappa > > >
RES: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Na verdade a empresa não tem licença para essa base... Esse é o grande problema.. :( De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Enviada em: sexta-feira, 23 de setembro de 2016 15:48 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds Opa, pára tudo : "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -" 11.2.0.1, sério Depois do mundo de bugfixes introduzidos no 11.2.0.2, 11.2.0.3 E 11.2.0.4 ??? Mega-ultra-biga-suspeito de vc estar caindo num bug já conhecido, talvez no mesmo que indiquei, talvez num dos outros Aposto e ganho que o Suporte vai mandar vc Aplicar o patchset mais recente JUNTO com o último PSU - "Bundle" do caso de Windows []s Chiappa
Re: RES: [oracle_br] Re: Ajuda Erro ORA-00445: background process "J000" did not start after 120 seconds
Opa, pára tudo : "Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -" 11.2.0.1, sério Depois do mundo de bugfixes introduzidos no 11.2.0.2, 11.2.0.3 E 11.2.0.4 ??? Mega-ultra-biga-suspeito de vc estar caindo num bug já conhecido, talvez no mesmo que indiquei, talvez num dos outros Aposto e ganho que o Suporte vai mandar vc Aplicar o patchset mais recente JUNTO com o último PSU - "Bundle" do caso de Windows []s Chiappa
RES: [oracle_br] Re: Ajuda com trigger para incluir permissão
Voce tem que colocar VALUES(rec.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Enviada em: terça-feira, 2 de dezembro de 2014 16:43 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda com trigger para incluir permissão Pesquisando o erro consertei essa linha: VALUES( empregados.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); Agora só ficou o erro : PL/SQL: ORA-00984: column not allowed here Em 2 de dezembro de 2014 16:15, Eduardo Perdomo panc...@gmail.commailto:panc...@gmail.com escreveu: Boa tarde. Preciso criar uma trigger que ao cadastrar um novo fornecedor automaticamente inclua permissão de acesso. Tenho a tabela fornecedores, empregados e liberação. Preciso , que ao cadastrar um novo fornecedor, varrer todo o cadastro de empregados e incluir a permissão na tabela liberação para todos os empregados. Segue abaixo o que estou tentando: CREATE OR REPLACE TRIGGER insere_131 BEFORE INSERT ON fornecedores REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE cursor c_t is select matricula from empregados ; BEGIN for rec in c_t loop INSERT INTO liberacao(CODFUNC, CODTABELA, CODIGOA,CODIGON, CODFUNC_LIB, DATA_LIB) VALUES(c_t.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); end loop; END insere_131; Os erros: PLS-00225 ORA-00984 Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br
RES: [oracle_br] Re: Ajuda com trigger para incluir permissão
Sim, Sempre que você for ler um cursor, você vai usar o seu index. Syntax The syntax for the CURSOR FOR LOOP in Oracle/PLSQL is: FOR record_index in cursor_name LOOP {...statements...} END LOOP; Parameters or Arguments record_index is the index of the record. cursor_name is the name of the cursor that you wish to fetch records from. statements are the statements of code to execute each pass through the CURSOR FOR LOOP. Att Marlon De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Enviada em: terça-feira, 2 de dezembro de 2014 17:21 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Ajuda com trigger para incluir permissão Compilou aqui , mas esse rec são os dados que o cursor referencia ? Em 2 de dezembro de 2014 16:44, Marlon Pasquali - TI - Peccin S.A. marlon.pasqu...@peccin.com.brmailto:marlon.pasqu...@peccin.com.br [oracle_br] oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br escreveu: Voce tem que colocar VALUES(rec.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); De: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br] Enviada em: terça-feira, 2 de dezembro de 2014 16:43 Para: oracle_br@yahoogrupos.com.brmailto:oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda com trigger para incluir permissão Pesquisando o erro consertei essa linha: VALUES( empregados.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); Agora só ficou o erro : PL/SQL: ORA-00984: column not allowed here Em 2 de dezembro de 2014 16:15, Eduardo Perdomo panc...@gmail.commailto:panc...@gmail.com escreveu: Boa tarde. Preciso criar uma trigger que ao cadastrar um novo fornecedor automaticamente inclua permissão de acesso. Tenho a tabela fornecedores, empregados e liberação. Preciso , que ao cadastrar um novo fornecedor, varrer todo o cadastro de empregados e incluir a permissão na tabela liberação para todos os empregados. Segue abaixo o que estou tentando: CREATE OR REPLACE TRIGGER insere_131 BEFORE INSERT ON fornecedores REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE cursor c_t is select matricula from empregados ; BEGIN for rec in c_t loop INSERT INTO liberacao(CODFUNC, CODTABELA, CODIGOA,CODIGON, CODFUNC_LIB, DATA_LIB) VALUES(c_t.matricula, 3, ' ', :new.codfornec, 1, SYSDATE); end loop; END insere_131; Os erros: PLS-00225 ORA-00984 Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.brhttp://www.grupopc.com.br (21) 6845-8592 panc...@gmail.commailto:panc...@gmail.com eduardo.perd...@pcinformatica.com.brmailto:eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.brhttp://eduardo.perdomo.nom.br
RES: [oracle_br] Re: Ajuda
Oi Aninha, Via sqlplus podes fazer assim: column res new_value max_val SELECT MAX(ID_PK) + 1 res FROM sua_tabela; drop sequence seq_sua_tabela ; create sequence seq_sua_tabela start with max_val; Ricardo Ferro www.vitarella.com.br mailto:rfe...@vitarella.com.br -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Ana Cássia Japiassu Diniz Enviada em: quarta-feira, 11 de julho de 2012 14:58 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Ajuda Obrigada a todos pela ajuda. Consegui fazer praticamente toda a alteração que preciso. Falta apenas a criação da sequence para esta tabela, cujo o valor inicial deverá ser o último valor do novo atributo adicionado na tabela. Como eu posso definir o start with da sequence com este valor? Não posso colocar isso fixo, pois esta alteração precisarei fazer em três bancos que contêm dados diferentes. Muito obrigada. Ana Em 11 de julho de 2012 14:13, J. Laurindo Chiappa jlchia...@yahoo.com.br mailto:jlchia...@yahoo.com.br escreveu: ** Bom dia, Ana - não vejo grandes problemas, mas vc deverá saber que : a) no RDBMS Oracle vc normalmente não consegue mudar a PK, então ela tem que ser dropada e recriada com o novo atributo que vc quer : Obviamente, então, se essa PK a ser alterada é usada como origem para FK de outras tabelas, logicamente vc deverá dropar as FKs primeiro (quebrando o uso da PK como pai), e depois da nova PK criada, vc vai ter que recriar as FKs, apontando para a nova PK Obviamente também, se a PK vai ser em cima de uma nova coluna, essa nova coluna tem que ser Adicionada não só na tabela-pai MAS também nas tabelas-filhas, para servir de base para a nova FK referenciando a nova PK... É muito, muito frequente o pessoal se esquecer deste Importante detalhe e se dar mal na hora da implementação por causa das FKs.. b) vc até poderia, ao menos em parte, fazer via DBMS_REDEFINITION, mas imho é mais fácil/direto executar os comandos manualmente, e também já que vc quer a maneira mais segura, eu Recomendaria que vc solicitasse uma janela de manutenção, em que o banco estará inacessível para vc poder fazer as alterações todas sem se preocupar com locks eventuais, acessos de usuário, dados sendo entrados/alterados/removidos, etc... c) como é Normal em qquer alteração, vc Tem que Ter um backup o mais recente possível, Válido e testado, antes de proceder : muitas vezes se agenda alterações do tipo para depois da janela de backup Exatamente por esse motivo... Isto posto, um exemplo rápido - apenas notando que vc infelizmente Não nos Dá a versão, então estou supondo ao menos versão 10gr2 : = criação de tabela com PK e de algumas FKs que a referenciam : SYSTEM@O10GR2::SQLcreate table T_PAI (c1 number, c2 varchar2(40), c3 varchar2(80) ); Tabela criada. SYSTEM@O10GR2::SQLalter table T_PAI add constraint T_PAI_PK primary key (c1, c2); Tabela alterada. SYSTEM@O10GR2::SQLinsert into T_PAI values(1, 'Chave 1', 'Linha 1'); 1 linha criada. SYSTEM@O10GR2::SQLinsert into T_PAI values(2, 'Chave 2', 'Linha 2'); 1 linha criada. SYSTEM@O10GR2::SQLcreate table T_FILHA1 (c1 number, c2 varchar2(40), c3 varchar2(80) ); Tabela criada. SYSTEM@O10GR2::SQLcreate table T_FILHA2 (c1 number, c2 varchar2(40), c3 varchar2(80) ); Tabela criada. SYSTEM@O10GR2::SQLalter table T_FILHA1 add constraint T_FILHA1_FK foreign key (c1, c2) references T_PAI(c1, c2); Tabela alterada. SYSTEM@O10GR2::SQLalter table T_FILHA2 add constraint T_FILHA2_FK foreign key (c1, c2) references T_PAI(c1, c2); Tabela alterada. SYSTEM@O10GR2::SQLinsert into T_FILHA1 values(1, 'Chave 1', 'Filha 1'); 1 linha criada. SYSTEM@O10GR2::SQLinsert into T_FILHA2 values(2, 'Chave 2', 'Filha 2'); 1 linha criada. SYSTEM@O10GR2::SQLcommit; Commit concluido. == veja que Não Posso dropar PK usada por FKs : SYSTEM@O10GR2::SQLalter table T_PAI drop constraint T_PAI_PK; alter table T_PAI drop constraint T_PAI_PK * ERRO na linha 1: ORA-02273: esta chave exclusiva/primaria e referenciada por algumas chaves externas = vou então listar as FKs, já gerando os comandos de drop que eu só copio colo : SYSTEM@O10GR2::SQLselect 'alter table ' || table_name || ' drop constraint ' || constraint_name || ';' from dba_constraints where owner='SYSTEM' and r_constraint_name='T_PAI_PK'; 'ALTERTABLE'||TABLE_NAME||'DROPCONSTRAINT'||CONSTRAINT_NAME||';' -- alter table T_FILHA1 drop constraint T_FILHA1_FK; alter table T_FILHA2 drop constraint T_FILHA2_FK; = o copy/paste em ação : SYSTEM@O10GR2::SQLalter table T_FILHA1 drop constraint T_FILHA1_FK; Tabela alterada.
RES: [oracle_br] Re: AJUDA COM MERGE
Bom dia, Chiappa e Ricardo, É o seguinte, os dados de origem estão em um arquivo XML, e o programador não tem privilégios para criar as tabelas, inserir os dados nessas tabelas, para depois executar o MERGE. Sendo assim, gostaria de saber qual a melhor forma carregar os dados do XML para a tabela de destino, tendo em vista que essa tabela já possui dados. Atenciosamente, Giovanni. De: oracle_br@yahoogrupos.com.br em nome de José Laurindo Enviada: qui 12/1/2012 15:43 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: AJUDA COM MERGE É isso mesmo... O Colega vai explicar melhor, mas pelo jeito ele quer fazer um UPSERT (UPdate se o dado existe, inSERT se o dado não existe), e realmente pra se fazer isso via MERGE a origem e o destino tem que ser diferentes O que ele poderia fazer talvez é ** copiar ** os dados que servirão de origem (até pra uma GTT, talvez) e aí sim fazer o MERGE, aí especificando a GTT como fonte de dados para o MERGE e a tabela real tanto pra MATCH quanto pra NON-MATCH ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Ricardo Tajiri rhtajiri@... escreveu Oi Giovanni, A idéia do MERGE é que você tem dados que estão em uma origem e quer modificar um destino de acordo com estes dados. Se o dado não existe na origem então você não vai conseguir inserir na mão usando o MERGE... Agora, pra poder opinar melhor em alguma outra solução é necessário que você nos dê mais informações sobre o seu problema de verdade... Ricardo Hideyuki Tajiri LaRCom - FEEC - UNICAMP Em 11 de janeiro de 2012 16:44, Giovanni Ferreira de Sousa giovanni.sousa@... escreveu: ** Ricardo, É verdade, não estava atento a isso...vacilei ... Para este caso, se não existir, quero especificar (inserir) o dado na mão mesmo. Tem como fazer isso, utilizando o merge. O que você sugere? Desde já agradeço a sua colaboração... Atenciosamente Giovanni. De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br em nome de Ricardo Tajiri Enviada: qua 11/1/2012 15:28 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] AJUDA COM MERGE Oi Giovanni, A sua compreensão do comando MERGE que está incompleta... Como você mesmo disse, ele não existe na tabela dbfunasasiasiprod.tb_carga_siasi_new. O MERGE executa as modificações na tabela em que está sendo feito o MERGE de acordo com dados provenientes de outro local. A idéia do WHEN NOT MATCHED seria a seguinte: Se não existe na tabela com o álias carga do seu comando e *EXISTE* na tabela (subconsulta) com álias x ele executa o INSERT. Porém, como você está usando a mesma tabela, tanto para carga quanto para x o dado não vai retornar em x e tb não executar o insert. Ricardo Hideyuki Tajiri LaRCom - FEEC - UNICAMP Em 11 de janeiro de 2012 16:04, Giovanni Ferreira de Sousa giovanni.sousa@... escreveu: ** Prezados, Boa Tarde, Estou preparando o seguinte comando: merge into dbfunasasiasiprod.tb_carga_siasi_new carga using ( select * from dbfunasasiasiprod.tb_carga_siasi_new where dbfunasasiasiprod.tb_carga_siasi_new.comando = 'teste7' )x on(carga.comando = x.comando) WHEN MATCHED THEN UPDATE SET carga.lote = 'atualizou' WHEN NOT MATCHED THEN INSERT (carga.comando,carga.lote,carga.dt_atualizacao) values(x.COMANDO,'inseriu',sysdate). Quando o dado existe o update é feito corretamente. Neste caso, o registro 'teste7' não existe na tabela, então, deveria ser feito o insert. O que há de errado? Gostaria que me ajudassem. Atenciosamente Giovanni [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: AJUDA COM MERGE
Então : primeiro de tudo, é normal o programador não ter privilégios de criação de tabela : necessariamente num ambiente controlado e gerenciado, ** nunca ** é o programador que cria tabelas, e sim o DBA ou no mínimo um DA, ou quando muito um Analista-chefe Até por isso , o que sugerimos foi o programador *** usar *** apenas a nova tabela no programa dele, que (claro) necessariamente Teria que ser criada antes por alguém autorizado e dado o acesso para o programador poder usar... Porém, esse outro ponto que vc só agora nos dá muda ABSOLUTAMENTE tudo : cfrme nós dissemos, por definição o comando MERGE serve para ler uma ** TABELA ** origem, pesquisar a chave lida numa TABELA destino e se houve match fazer um UPDATE na tabela destino, e se não houve match fazer um INSERT na tabela destino - agora que vc fala que a origem dos dados NÂO é uma tabela mas sim um arquivo (XML, mas um ARQUIVO) isso MUDA a história, completamente, nos AFASTAMOS do paradigma do MERGE ... Em vista desse novo cenário, uma possibilidade pra se continuar usando o MERGE (isso SE o arquivo XML está criado no mesmo servidor Oracle aonde o RDBMS roda, E o usuário de SO que roda o RDBMS tem privilégio) é ** transformar ** (logicamente falando) o arquivo-texto numa 'tabela externa' : isso é um objeto que ao se fazer SELECT * dele , o banco busca os dados no arquivo-texto externo... Isso não cria nenhum segmento dentro do banco de dados, não exige de forma nenhuma que os dados do arquivo sejam importados pro database, o database é que vai abrir e ler o arquivo texto externo, como se estivesse fazendo FETCH de uma tabela via cursor, a transformação é LÓGICA, apenas... Isso funcionando, aí vc simplesmente usaria no MERGE como fonte de dados um SELECT * FROM tabelaexternaqueapontaproarquivoXML , e como destino no MATCH/NOMATCH a tabela real destino mesmo aonde os dados devem ser inseridos/updateados... Eu não tenho aqui comigo um exemplo, mas a criação da tabela-externa seria + ou - algo tipo o mostrado em http://www.packtpub.com/article/external-tables-oracle-10g-11g-database-part2 Caso vc tenha problemas com o fato do arquivo ser XML (por exemplo, os dados não estão num formato consolidado, ou vc está usando um database que não te dá direito às as funções XML todas, como o cacareco do XE, por exemplo) , uma opção pra vc continuar usando essa técnica de acessar o arquivo como tabela é transformar o xml em arquivo-texto flat via algum utilitário , como http://xmlstar.sourceforge.net/overview.php por exemplo. Numa última opção, se vc realmente não puder transformar o arquivo numa tabela com o recurso do external table, aí vc Fatalmente não conseguirá usar o MERGE, aí sim seria o caso do programador fazer um loop/cursor, lendo cada linha do arquivo e fazendo a lógica de match/nomatch manualmente... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Giovanni Ferreira de Sousa giovanni.sousa@... escreveu Bom dia, Chiappa e Ricardo, É o seguinte, os dados de origem estão em um arquivo XML, e o programador não tem privilégios para criar as tabelas, inserir os dados nessas tabelas, para depois executar o MERGE. Sendo assim, gostaria de saber qual a melhor forma carregar os dados do XML para a tabela de destino, tendo em vista que essa tabela já possui dados. Atenciosamente, Giovanni. De: oracle_br@yahoogrupos.com.br em nome de José Laurindo Enviada: qui 12/1/2012 15:43 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: AJUDA COM MERGE É isso mesmo... O Colega vai explicar melhor, mas pelo jeito ele quer fazer um UPSERT (UPdate se o dado existe, inSERT se o dado não existe), e realmente pra se fazer isso via MERGE a origem e o destino tem que ser diferentes O que ele poderia fazer talvez é ** copiar ** os dados que servirão de origem (até pra uma GTT, talvez) e aí sim fazer o MERGE, aí especificando a GTT como fonte de dados para o MERGE e a tabela real tanto pra MATCH quanto pra NON-MATCH ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Ricardo Tajiri rhtajiri@ escreveu Oi Giovanni, A idéia do MERGE é que você tem dados que estão em uma origem e quer modificar um destino de acordo com estes dados. Se o dado não existe na origem então você não vai conseguir inserir na mão usando o MERGE... Agora, pra poder opinar melhor em alguma outra solução é necessário que você nos dê mais informações sobre o seu problema de verdade... Ricardo Hideyuki Tajiri LaRCom - FEEC - UNICAMP Em 11 de janeiro de 2012 16:44, Giovanni Ferreira de Sousa giovanni.sousa@ escreveu: ** Ricardo, É verdade, não estava atento a isso...vacilei ... Para este caso, se não existir, quero especificar (inserir) o dado na mão mesmo. Tem como fazer isso, utilizando o merge. O que você
RES: [oracle_br] Re: Ajuda em Query
Eu nestes casos costumo usar bastante o Decode. Não sei se aplica ao teu caso. Ficaria assim select decode(to_char(trx_date,'MM'),'01',count(*),0) mes1, decode(to_char(trx_date,'MM'),'02',count(*),0) mes2, decode(to_char(trx_date,'MM'),'03',count(*),0) mes3, decode(to_char(trx_date,'MM'),'04',count(*),0) mes4, decode(to_char(trx_date,'MM'),'05',count(*),0) mes5, decode(to_char(trx_date,'MM'),'06',count(*),0) mes6, decode(to_char(trx_date,'MM'),'07',count(*),0) mes7, decode(to_char(trx_date,'MM'),'08',count(*),0) mes8, decode(to_char(trx_date,'MM'),'09',count(*),0) mes9, decode(to_char(trx_date,'MM'),'10',count(*),0) mes10, decode(to_char(trx_date,'MM'),'11',count(*),0) mes11, decode(to_char(trx_date,'MM'),'12',count(*),0) mes12 testa ai MARLON ALEXANDRE PASQUALI T.I. - ANALISTA DE DESENVOLVIMENTO Peccin S.A. [ Rua Dr. Sidney Guerra nº 1700 - CEP: 99700-000 - Erechim - Rio Grande do Sul Brasil ] :: http://www.peccin.com.br/ www.peccin.com.br ::marlon.pasqu...@peccin.com.br:: (54) 3520.9727 _ De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Paulo Petruzalek Enviada em: quarta-feira, 21 de dezembro de 2011 13:36 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Ajuda em Query Ou ao invés de criar uma tabela ele poderia fazer uma view inline com a query: select to_date('01/' || to_char(rownum) || '/2011', 'dd/mm/') data from dual connect by level = 12; Paulo --- Em ter, 20/12/11, José Laurindo jlchia...@yahoo.com.br mailto:jlchiappa%40yahoo.com.br escreveu: De: José Laurindo jlchia...@yahoo.com.br mailto:jlchiappa%40yahoo.com.br Assunto: [oracle_br] Re: Ajuda em Query Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Data: Terça-feira, 20 de Dezembro de 2011, 17:35 Élcio, como sempre o nosso amigo yahoo!groups fez um Péssimo serviço des-formatando a sua query, mas entendi o básico, creio : negócio é o seguinte, uma query normalmente traz os valores que existem, Não tem Como vc fazer a Query inventar valores, okdodoc ? Então vc tem duas possibilidades aí : 1. a mais fácil, imho : crie uma tabela, digamos, TAB_MESES com uma coluna C_DATA e contendo 12 registros, com os valores de 01/01/2011 até 01/12/2011, e faça um OUTER JOIN dessa nova tabela com a sua tabela CRD.CLIENTE : no outer join a informação presente numa tabela mas não presente na outra é lida naturalmente, apenas vindo com NULL na parte faltante, aí com NVL vc transforma o null em zero ou 2. usa funções analíticas : com elas vc pode processar a linha correntemente sendo lida E a linha anteriormente lida na query, aí seria só um caso de comparar o mês corrente com o Mês anteriormente lido, se tiver GAP vc introduz um zero É um tantinho mais trabalhoso e complexo de entender mas não exigiria a criação de nada extra no seu banco Tenta aí e se não conseguir, manda o CREATE TABLE e uns INSERTs (** E ** especifica mais detalhadamente a sua versão de banco, só 10g é insuficiente, a gente tem que saber a Edição e o release com 4 dígitos), que a gente pode olhar e palpitar mais... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Elcio Francisco elciofrancisco@... escreveu Pessoal tenho uma query aqui para montar uma estatistica anual. Alguns anos as vendas começa em Julho e tem mes que não possui vendas. Porem a estaticas é para o ano todo.Para os mes de janeiro a junho eu queria colocar 0 (zero) isso para a estatistica não ficar furada. Como colocar isso em uma query. Queryselect count(*) Qtde_ant --,to_char(data_cadastro,'Month') Mes_Ano_ant ,to_date(to_char(data_cadastro,'Month'),'mm') Mes_Ano_ant ,to_char(data_cadastro,'mm') mes from crd.cliente where to_char(data_cadastro,'') :2011 group by to_date(to_char(data_cadastro,'Month'),'mm'),to_char(data_cadastro,'mm') order by to_date(to_char(data_cadastro,'Month'),'mm'); Esta ficando conforme modelo abaixoQTDE_ANTMES_ANO_ANTMES101 1/7/201107132 1/8/201108103 1/9/2011 09129 1/10/201110195 1/11/201111267 1/12/201112 Eu preciso que fique assim QTDE_ANTMES_ANO_ANTMES0 1/1/2011010 1/2/2011020 1/3/2011030 1/4/2011040 1/5/2011050 1/6/201106101 1/7/201107132 1/8/201108103 1/9/201109129 1/10/2011 10195 1/11/201111267 1/12/201112 Alguem podera me ajudar? Versão do Banco : 10G Muito Obrigado Elcio Analista de Sistemas P Antes de imprimir pense em sua responsabilidade com o MEIO AMBIENTE Adote os 3Rs na sua vida: Reduza, Reutilize, Recicle! [As partes desta mensagem que não continham texto foram removidas] --
RES: [oracle_br] Re: Ajuda Expdp
Chiappa, Minha idéia seria gerar dois export, um com metadata apenas, e o outro com os dados. Eu importaria o medata data, desabilitaria as constraints de referecia. Depois disso eu iria fazer o import com os dados. Depois disso posso fazer um novalidate nas constraints e rodar um rebuild nos indices. Só que o lixo do banco não é EE. sendo assim não consigo rodar nada com parallel apenas com nologging. Agora, isso funcionaria? Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail:welvis_doug...@hotmail.com, wel...@stcruz.com.br Messenger: welvis_doug...@hotmail.com Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de José Laurindo Enviada em: terça-feira, 20 de abril de 2010 17:01 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda Expdp Braga, pelo que eu entendi o Welvis queria exportar sem constraints pra depois importar sem constraints, por dois motivos provavelmente : a) ele não pretende seguir a ordem na importação, assim quando os dados das tabs em questão estão sendo importados as tabelas-pai menores não estão presentes ainda, daria erro de FK e/ou b) já que as tabelas são grandes, importar sem constraints (ou com constraints desabilitadas) poupa o tempo que o bd leva pra fazer check das constraints quando vc importa (o fato dos dados virem de outro banco , onde se presume que estejam íntegros, permite esse approach) então o procedimento seria em tese fazer um export SEM constraints (só dados), outro SEM dados mas com as consraints, importar o import só dos dados e só depois que as tabs PK e tudo mais tiverem ok, importar o import com as constraints PORÉM, dou outro conselho pro Welvis : colega, pra variar vc não diz mas SE há comunicação de rede entre os dois servidores (normalmente há entre prod e desenv) , e as tabelas são grandes, COM QUASE CERTEZA posso dizer que esse procedimento que descrevi é não-ótimo : se vc extrair os DDLs (com expdp, com DBMS_METADATA, com expor full sem dados lido pelo freeware DDL Wizard, por software que faça isso como o Oracle SQL developer, não importa), fazer os CREATE TABLEs com cláusula NOLOGGING e PARALLEL e mandar um INSERT /*+ APPEND /* into tabelanobancodestino AS (select * from tabelao...@dblinkapontabndopraorigem) . com SQL Paralelo ativado e modo NOLOG, e sem índices/constraints, isso deve ser Extremamente mais performático do que import dos dados... feito isso aí sim vc implanta as constraints adicionando a cláusula NOVALIDATE pra que o banco não cheque os dados trazidos do bd origem... []s Chiappa --- Em oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br, Marcos Braga braga.mar...@... escreveu Welvis, Efetuo import constantemente e não desabilito constraints. Não sei se esse é o caso. Para efetuar um export somente da estrutura utiliza a opção CONTENT. Ex: $ expdp usuario/senha directory=diretorio_do_db content=metadata_only schemas=schema_name include=tables:\in\(\'TABELA1\',\'TABELA2\'\)\ Na minha página tem alguns exemplos bem toscos, você pode consultar também: http://sites. http://sites.google.com/site/universodobraga/oracle/datapump google.com/site/universodobraga/oracle/datapump creio que é isso []s Braga Em 20 de abril de 2010 13:36, Welvis Douglas wel...@...escreveu: Olá pessoal, estou precisando de uma ajudinha. Tenho que voltar uma base de produção para um ambiante em homolog. O complicado que tenho umas 5 tabelas que são bem grandes, porem estas tabelas são de LOG'S. Queria fazer um export apenas das extruturas, e logo após o import da extrutura fazer um import apenas dos dados. Andei pesquisando, vi que preciso desabilitar todas as constraints do banco para que não de erro no import. É este o caminho, alguem tem alguma sugestão de como fazer o expdp normal = (mata_data/data) e excluir os dados destas 5 tabelas? Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail: welvis_doug...@... welvis_douglas%40hotmail.com, wel...@... welvis%40stcruz.com.br Messenger: welvis_doug...@... welvis_douglas%40hotmail.com Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: Ajuda Expdp
Teria boa performance? Tem algum parametro de posso alterar para aumentar a performance do impdp Obrigado pela ajuda. Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail:welvis_doug...@hotmail.com, wel...@stcruz.com.br Messenger: welvis_doug...@hotmail.com Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Welvis Douglas Enviada em: terça-feira, 20 de abril de 2010 17:35 Para: oracle_br@yahoogrupos.com.br Assunto: RES: [oracle_br] Re: Ajuda Expdp Chiappa, Minha idéia seria gerar dois export, um com metadata apenas, e o outro com os dados. Eu importaria o medata data, desabilitaria as constraints de referecia. Depois disso eu iria fazer o import com os dados. Depois disso posso fazer um novalidate nas constraints e rodar um rebuild nos indices. Só que o lixo do banco não é EE. sendo assim não consigo rodar nada com parallel apenas com nologging. Agora, isso funcionaria? Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail: welvis_douglas@ mailto:welvis_douglas%40hotmail.com hotmail.com, wel...@stcruz. mailto:welvis%40stcruz.com.br com.br Messenger: welvis_douglas@ mailto:welvis_douglas%40hotmail.com hotmail.com Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br [mailto:oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br] Em nome de José Laurindo Enviada em: terça-feira, 20 de abril de 2010 17:01 Para: oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br Assunto: [oracle_br] Re: Ajuda Expdp Braga, pelo que eu entendi o Welvis queria exportar sem constraints pra depois importar sem constraints, por dois motivos provavelmente : a) ele não pretende seguir a ordem na importação, assim quando os dados das tabs em questão estão sendo importados as tabelas-pai menores não estão presentes ainda, daria erro de FK e/ou b) já que as tabelas são grandes, importar sem constraints (ou com constraints desabilitadas) poupa o tempo que o bd leva pra fazer check das constraints quando vc importa (o fato dos dados virem de outro banco , onde se presume que estejam íntegros, permite esse approach) então o procedimento seria em tese fazer um export SEM constraints (só dados), outro SEM dados mas com as consraints, importar o import só dos dados e só depois que as tabs PK e tudo mais tiverem ok, importar o import com as constraints PORÉM, dou outro conselho pro Welvis : colega, pra variar vc não diz mas SE há comunicação de rede entre os dois servidores (normalmente há entre prod e desenv) , e as tabelas são grandes, COM QUASE CERTEZA posso dizer que esse procedimento que descrevi é não-ótimo : se vc extrair os DDLs (com expdp, com DBMS_METADATA, com expor full sem dados lido pelo freeware DDL Wizard, por software que faça isso como o Oracle SQL developer, não importa), fazer os CREATE TABLEs com cláusula NOLOGGING e PARALLEL e mandar um INSERT /*+ APPEND /* into tabelanobancodestino AS (select * from tabelao...@dblinkapontabndopraorigem) . com SQL Paralelo ativado e modo NOLOG, e sem índices/constraints, isso deve ser Extremamente mais performático do que import dos dados... feito isso aí sim vc implanta as constraints adicionando a cláusula NOVALIDATE pra que o banco não cheque os dados trazidos do bd origem... []s Chiappa --- Em oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br, Marcos Braga braga.mar...@... escreveu Welvis, Efetuo import constantemente e não desabilito constraints. Não sei se esse é o caso. Para efetuar um export somente da estrutura utiliza a opção CONTENT. Ex: $ expdp usuario/senha directory=diretorio_do_db content=metadata_only schemas=schema_name include=tables:\in\(\'TABELA1\',\'TABELA2\'\)\ Na minha página tem alguns exemplos bem toscos, você pode consultar também: http://sites. http://sites. http://sites.google.com/site/universodobraga/oracle/datapump google.com/site/universodobraga/oracle/datapump google.com/site/universodobraga/oracle/datapump creio que é isso []s Braga Em 20 de abril de 2010 13:36, Welvis Douglas wel...@...escreveu: Olá pessoal, estou precisando de uma ajudinha. Tenho que voltar uma base de produção para um ambiante em homolog. O complicado que tenho umas 5 tabelas que são bem grandes, porem estas tabelas são de LOG'S. Queria fazer um export apenas das extruturas, e logo após o import da extrutura fazer um import apenas dos dados. Andei pesquisando, vi que preciso desabilitar todas as constraints
RES: [oracle_br] Re: Ajuda Expdp
ixe,realmente iirc Standard implica em sem paralelismo... Bem, o procedimento que vc cita é uma variação do que eu disse em primeiro lugar na nota (ao invés de criar os objs vazios sem constraints vc os cria normal e desabilita as constraints, ok) deve funcionar normal, sim O ponto maior que pode pegar em termos de performance no impdp e favorecer o INSERT direto é que é garantido que o INSERT /*+ APPEND */ numa tabela NOLOGGING e sem índices/constraints vai usar direct mode e gerar o mínimo de logging, enquanto pro impdp já vi uns bugs impedindo isso aí o import acabava sendo logado e sem usar direct, teste aí Bem Direitinho se no seu caso dá diferença de perf ou não... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas wel...@... escreveu Chiappa, Minha idéia seria gerar dois export, um com metadata apenas, e o outro com os dados. Eu importaria o medata data, desabilitaria as constraints de referecia. Depois disso eu iria fazer o import com os dados. Depois disso posso fazer um novalidate nas constraints e rodar um rebuild nos indices. Só que o lixo do banco não é EE. sendo assim não consigo rodar nada com parallel apenas com nologging. Agora, isso funcionaria? Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail:welvis_doug...@..., wel...@... Messenger: welvis_doug...@... Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de José Laurindo Enviada em: terça-feira, 20 de abril de 2010 17:01 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda Expdp Braga, pelo que eu entendi o Welvis queria exportar sem constraints pra depois importar sem constraints, por dois motivos provavelmente : a) ele não pretende seguir a ordem na importação, assim quando os dados das tabs em questão estão sendo importados as tabelas-pai menores não estão presentes ainda, daria erro de FK e/ou b) já que as tabelas são grandes, importar sem constraints (ou com constraints desabilitadas) poupa o tempo que o bd leva pra fazer check das constraints quando vc importa (o fato dos dados virem de outro banco , onde se presume que estejam íntegros, permite esse approach) então o procedimento seria em tese fazer um export SEM constraints (só dados), outro SEM dados mas com as consraints, importar o import só dos dados e só depois que as tabs PK e tudo mais tiverem ok, importar o import com as constraints PORÉM, dou outro conselho pro Welvis : colega, pra variar vc não diz mas SE há comunicação de rede entre os dois servidores (normalmente há entre prod e desenv) , e as tabelas são grandes, COM QUASE CERTEZA posso dizer que esse procedimento que descrevi é não-ótimo : se vc extrair os DDLs (com expdp, com DBMS_METADATA, com expor full sem dados lido pelo freeware DDL Wizard, por software que faça isso como o Oracle SQL developer, não importa), fazer os CREATE TABLEs com cláusula NOLOGGING e PARALLEL e mandar um INSERT /*+ APPEND /* into tabelanobancodestino AS (select * from tabelao...@dblinkapontabndopraorigem) . com SQL Paralelo ativado e modo NOLOG, e sem índices/constraints, isso deve ser Extremamente mais performático do que import dos dados... feito isso aí sim vc implanta as constraints adicionando a cláusula NOVALIDATE pra que o banco não cheque os dados trazidos do bd origem... []s Chiappa --- Em oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br, Marcos Braga braga.marcos@ escreveu Welvis, Efetuo import constantemente e não desabilito constraints. Não sei se esse é o caso. Para efetuar um export somente da estrutura utiliza a opção CONTENT. Ex: $ expdp usuario/senha directory=diretorio_do_db content=metadata_only schemas=schema_name include=tables:\in\(\'TABELA1\',\'TABELA2\'\)\ Na minha página tem alguns exemplos bem toscos, você pode consultar também: http://sites. http://sites.google.com/site/universodobraga/oracle/datapump google.com/site/universodobraga/oracle/datapump creio que é isso []s Braga Em 20 de abril de 2010 13:36, Welvis Douglas welvis@escreveu: Olá pessoal, estou precisando de uma ajudinha. Tenho que voltar uma base de produção para um ambiante em homolog. O complicado que tenho umas 5 tabelas que são bem grandes, porem estas tabelas são de LOG'S. Queria fazer um export apenas das extruturas, e logo após o import da extrutura fazer um import apenas dos dados. Andei pesquisando, vi que preciso desabilitar todas as constraints do banco para que não de erro no import. É este o caminho, alguem tem alguma sugestão de como fazer o expdp normal =
RES: [oracle_br] Re: Ajuda Expdp
Normalmente bem setado/ajustado expdp/impdp não costuma ter uma performance abismalmente ruim, mas também via de regra o INSERT /*+ APPEND */ a sobrepuja, TESTE direitinho aí no seu ambiente : pra ser uma comparação Justa, estude antes as notas metalink : Export/Import DataPump Parameter ACCESS_METHOD - How to Enforce a Method of Loading and Unloading Data ? (Doc ID 552424.1) Checklist for Slow Performance of Export Data Pump (expdp) and Import DataPump (impdp) (Doc ID 453895.1) My Experience in Moving a 1 Terabyte Database Across Platforms With Minimal Downtime (Doc ID 431096.1) pra ver se vc não está caindo nalgum prob conhecido de performance com o data pump... Quanto à parâmetros, o principal é o ACCESS_METHOD (citado na primeira nota), e o PARALLEL - este último não sei se num banco Standard será aceito, já que nunca tive o desprazer de mexer com isso, toca a testar []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Welvis Douglas wel...@... escreveu Teria boa performance? Tem algum parametro de posso alterar para aumentar a performance do impdp Obrigado pela ajuda. Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail:welvis_doug...@..., wel...@... Messenger: welvis_doug...@... Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Welvis Douglas Enviada em: terça-feira, 20 de abril de 2010 17:35 Para: oracle_br@yahoogrupos.com.br Assunto: RES: [oracle_br] Re: Ajuda Expdp Chiappa, Minha idéia seria gerar dois export, um com metadata apenas, e o outro com os dados. Eu importaria o medata data, desabilitaria as constraints de referecia. Depois disso eu iria fazer o import com os dados. Depois disso posso fazer um novalidate nas constraints e rodar um rebuild nos indices. Só que o lixo do banco não é EE. sendo assim não consigo rodar nada com parallel apenas com nologging. Agora, isso funcionaria? Att, Welvis Douglas da Silva Moretto DBA - Oracle Certified (1ZO-042) Fone: (41) 9997-6297 E-mail: welvis_douglas@ mailto:welvis_douglas%40hotmail.com hotmail.com, wel...@stcruz. mailto:welvis%40stcruz.com.br com.br Messenger: welvis_douglas@ mailto:welvis_douglas%40hotmail.com hotmail.com Mestre em Engenharia de Produção e Sistemas - PUC/PR; Especializando em Banco de Dados - UNOPAR; Especialista Engenharia de Software - UNOPAR; Tecnólogo em Processamento de Dados - FACCAR. _ De: oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br [mailto:oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br] Em nome de José Laurindo Enviada em: terça-feira, 20 de abril de 2010 17:01 Para: oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br Assunto: [oracle_br] Re: Ajuda Expdp Braga, pelo que eu entendi o Welvis queria exportar sem constraints pra depois importar sem constraints, por dois motivos provavelmente : a) ele não pretende seguir a ordem na importação, assim quando os dados das tabs em questão estão sendo importados as tabelas-pai menores não estão presentes ainda, daria erro de FK e/ou b) já que as tabelas são grandes, importar sem constraints (ou com constraints desabilitadas) poupa o tempo que o bd leva pra fazer check das constraints quando vc importa (o fato dos dados virem de outro banco , onde se presume que estejam íntegros, permite esse approach) então o procedimento seria em tese fazer um export SEM constraints (só dados), outro SEM dados mas com as consraints, importar o import só dos dados e só depois que as tabs PK e tudo mais tiverem ok, importar o import com as constraints PORÉM, dou outro conselho pro Welvis : colega, pra variar vc não diz mas SE há comunicação de rede entre os dois servidores (normalmente há entre prod e desenv) , e as tabelas são grandes, COM QUASE CERTEZA posso dizer que esse procedimento que descrevi é não-ótimo : se vc extrair os DDLs (com expdp, com DBMS_METADATA, com expor full sem dados lido pelo freeware DDL Wizard, por software que faça isso como o Oracle SQL developer, não importa), fazer os CREATE TABLEs com cláusula NOLOGGING e PARALLEL e mandar um INSERT /*+ APPEND /* into tabelanobancodestino AS (select * from tabelao...@dblinkapontabndopraorigem) . com SQL Paralelo ativado e modo NOLOG, e sem índices/constraints, isso deve ser Extremamente mais performático do que import dos dados... feito isso aí sim vc implanta as constraints adicionando a cláusula NOVALIDATE pra que o banco não cheque os dados trazidos do bd origem... []s Chiappa --- Em oracle...@yahoogrup mailto:oracle_br%40yahoogrupos.com.br os.com.br, Marcos Braga braga.marcos@ escreveu Welvis
RES: [oracle_br] Re: Ajuda !! Enterprise Manager Não E xibe Paginas Administrativas
Comigo já aconteceu esse erro, e durante minhas investigações pude perceber que o usuário SYSMAN estava com a conta bloqueada. Veja se esse não é o seu caso. Atenciosamente, Dalton Oliveira | Database Administrator - OCP GLAUCO INFORMÁTICA * dal...@sd2000.com.brmailto:dal...@sd2000.com.br * 71 2103-5800 P Antes de imprimir pense em seu compromisso com o Meio Ambiente De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de jlchiappa Enviada em: terça-feira, 28 de julho de 2009 14:18 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda !! Enterprise Manager Não Exibe Paginas Administrativas Colega, sugestão : se é justamente o OEM que está sob suspeita, ** NÂO ** confie na tal janela que é aberta, VÁ PARA O SERVIDOR e faça as verificações necessárias MANUALMENTE, ok ? Seriam elas, SEMPRE lá no servidor, e claro, logado com o usuário dono do software Oracle e com as variáveis de ambiente setadas : a) lsnrctl status nomedolistener b) lsnrctl services nomedolistener c) sqlplus usuario/senha (** SEM ** @hoststring pois vc terá ORACLE_SID setada !!) d) sqlplus usario/se...@hoststring (aonde a hoststring é a usada na conexão) e) emctl status dbconsole (SE é que é a versão dbconsole do OEM, pra variar vc Não diz...) e) tentar conectar (via sqlplus, talvez) com o usuário SYSMAN , que é o que o oem precisa f) SE for windows no servidor (o que pra variar vc Não Diz também) confirmar que os serviços necessários estão up and running g) finalmente, confirmar que os arquivos de config todos (ie, targets.xml, tnsnames.ora, sqlnet.ora, etc) estão corretos pro seu ambiente []s Chiappa --- Em oracle_br@yahoogrupos.com.brmailto:oracle_br%40yahoogrupos.com.br, amorrimm ammo...@... escreveu Pior que o LISTENER esta no ar...nesta unica janela que é aberta, é exibido o status dele, do banco e tudo esta normal..travou mesmo...este é um banco de desenvolvimento..todos estão coinectados e trabalhando normalmente mas, não consigo de forma alguam abrir a janela de adm do OEM... --- Em oracle_br@yahoogrupos.com.brmailto:oracle_br%40yahoogrupos.com.br, Alex Rodrigues alrsilva@ escreveu Você já viu se o TNSLISTSNER está rodando? Acontecia isso comigo e eu precisava refazer o tnsnames pelo Oracle Assistant. Vai em serviços e ve se está rodando o serviço de listener. 2009/7/27 amorrimm ammorim@ colegas, Uma ajudinha por favor, Meu OEM travou em uma janela onde ele diz: O Enterprise Manager não consegue estabelecer conexão com a instância do banco de dados... Tudo qu eé listado esta OK mas não consigo acessar nenhuma pagina administrativa..nem digitar senha nem nada... Alguem sabe como resolver isso ? -- Alex Rodrigues da Silva Analista de Sistemas 11i10 Applications Developer alrsilva@ [As partes desta mensagem que não continham texto foram removidas] A Informação Confidencial deverá ser utilizada única e exclusivamente no âmbito da relação com a Glauco Informática e não poderá ser repassada, reproduzida de qualquer outra forma, e nem revelada a terceiros. La información confidencial se utilizará única y exclusivamente en relación con Glauco Informática, y no se puede pasar, reproduce en modo alguno, ni revelada a terceros. The Confidential Information will be used solely and exclusively in relation to the Glauco Informatica and not be passed, reproduced in any way, nor disclosed to third parties. [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: Ajuda
Chiappa, só uma correção. O Oracle 8.1.7 teve patch de correção até 8.1.7.4. Até mais. _ De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa Enviada em: terça-feira, 13 de novembro de 2007 18:49 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda Colega, é tal como eu falei, se vc ** REALMENTE ** tem tudo aí nesse HD, e os arqs estiverem legíveis, não vai ter o que, vai ser facílimo e garantido vc instalar os binários e abrir esse banco A única coisa que eu tinha dito e repito, é que vc preferencialmente TEM QUE TER os binários na versão rigorosamente exata que criou o banco, ou no máximo com patchset superior : assim, normalmente no CD de instalação vem release 1.0, os patches são adicionados `a parte, muito provavelmente esse CD que vc conseguiu deve contem o bd 8.1.7.0, se o banco foi criado por binários 8.1.7.3, vc após a instalação com o CD ainda terá o patch a aplicar. Já que a compatibilidade é com o passado, binários 8.1.7.3 conseguem ler e abrir na boa um banco criado com 8.1.7.0 (digamos), o que eu recomendaria então é que vc já botasse patch 8.1.7.3(o último que saiu pro banco 8.1.7). Quanto aos erros sim, não é difícil vc ver coisas do tipo (ie, falta de backup, de documentação de versão instalada e patches, desconhecimento total na hora de se gerar um backup, etc) , até em empresas de porte, sim É algo infelizmente quase rotineiro no mercado... []s Chiappa --- Em [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br, Eduardo Nunes De Souza Seixas [EMAIL PROTECTED] escreveu chiapa, fico muito agredecido por seu tempo. realmente os datafiles estão aqui, os control e tudo mais. existem erros bastante acentuados, muito graves, pois este hd passou pelas mãos de técnicos que chegaram a dizer que o problema era de disco com defeito. Realmente será uma tarefa árdua e longa, pois o banco é muito grande. 40 GB. estou fazendo backus desse hd antes de começar o trabalho. o detalhe é que a empresa proprietária desse hd é referência no ramo de distribuidoras de medicamentos em goiás. é coisa séria mesmo. pra vc ter uma idéia, são 7 anos de vida dentro desse hd. obrigado pelas dicas, e, felizmente, eu consegui o cd oracle 8.1.7 com a propria empresa. Obrigado - Original Message - From: jlchiappa To: [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br Sent: Monday, November 12, 2007 8:28 PM Subject: [oracle_br] Re: Ajuda Eduardo, ** desconheço ** versão 9.0.2, assumirei que na verdade é versão 9.2.0, mas de qquer maneira, observa-se que : a) um banco Oracle é composto (no mínimo) por datafiles + controlfiles + initfiles + redo log files a cada versão, esse hd tem TODOS esses arqs ? SE não, é ** lixo informata ** o que vc tem em mãos, tal como qquer latão de lixo EM TESE vc pode mergulhar nele e ver o que dá pra salvar, mas não é fácil nem rápido nem limpo... b) os arqs de um banco Oracle são CONSTANTEMENTE lidos e gravados em background, mesmo quando não há NENHUM usuário ativo : vc tem CERTEZA que os arqs desse hd foram copiados com o banco baixado, OU se não se banco em modo archive os archived logs estão junto ??? Cópia de arqs de um banco NOARCHIVE ativo SÓ PODE resultar em lixo informata, de novo... c) a cada novo patch, o formato dos arquivos do banco *** PODE SIM *** mudar, então em princípio vc TEM QUE abrir um banco com a MESMA versão ** EXATA ** de binário que criou os arqs todos... Da mesma forma, a EDIÇÃO conta também - mesmo numa dada versão, em tese os arqs de um banco Enterprise podem ser diferentes de um banco de mesma versão mas Standard... Assim, é quase 100% garantido que vc NÃO poderá abrir arqs versão 8i com binários 9i, PONTO. A maneira GARANTIDA e RECOMENDADA de vc abrir um banco Oracle , DESDE QUE todos os reqs acima estejam OK é, numa máquina de MESMO SISTEMA OPERACIONAL em que ele foi criado, tendo acessíveis TODOS os arqs necessários, vc ter instalado a MESMA VERSÃO EXATA de binários que criou o banco, é isso : em vc tendo Contrato de Suporte prum software Oracle qquer, basta vc abrir um chamado no Suporte da Oracle que eles te enviam CDs com versão de qquer banco pra qquer SO que já existiu, sendo Oracle = 7.3.x. O que vc PODE TENTAR, se não puder por qquer motivo obter os binários 8i, E SE o banco está fechado e íntegro (ie, todos os reqs acima foram atendidos) , é ter os binários 9i instalados e tentar uma MIGRAÇÃO desse banco 8i, o manual Oracle9i Database Migration Release 2 (9.2) cap. 3 - Upgrading a Database to the New Oracle9i Release mostra os detalhes. []s Chiappa --- Em [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br, Eduardo Nunes De Souza Seixas eduardoseixas2007@ escreveu Caros Tenho um hd com o banco oracle 8.1.7 (linux), e preciso recuperar esse banco e depois fazer um exm (gerar dm). Mas a questão é que não tenho o cd oracle 8.1.7. Eu tenho o 9.0.2
RES: [oracle_br] Re: Ajuda - Oratab e Emtab
Apenas complementando, oratab é como se fosse um arquivo de controle para o serviço dbora geralmente criado no Linux/Unix para definir quais as bases devem ser iniciadas automaticamente ao carregar o sistema operacional. Como é utilizado apenas em Linux e Unix com certeza não é causa do seu problema por utilizar Win 2003. Quanto o emtab eu realmente não conheço sua funcionalidade. []s Clayton De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa Enviada em: quinta-feira, 15 de fevereiro de 2007 14:13 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda - Oratab e Emtab Seguinte : oratab sei que é um arquivo-texto opcional, com os SIDs das instâncias que vc tem na máquina, que é usado principalmente SE vc sobe e pára o banco pelos scripts fornecidos pela Oracle (como dbastart / dbshut) Oracle. Como é opcional, imagino que o Agent NÃO esteja falhando por isso... Já quanto ao emtab, não o conheço, mas sei que COM CERTEZA não é algo obrigatório ao banco, já que não o tenho nas minhas máquinas - provavelmente deve ser parte do OEM e/ou do Agent em si, já que esses dois caras eu não uso. Numa googlada, em http://www.dbforums.com/showthread.php?t=1294355 um dos threaders afirma que esse erros de could not open emtab e similares (imagino que deve ser o seu também) são um WARNING apenas, então TAMBÉM não deve ser esse o seu problema. Sugestão, goto manual Intelligent Agent User's Guide, eu vi que ele tem lá entradas para troubleshoting, para configuração, pré-reqs, talvez ele te ajude mais. []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Fabio Barbosa Ribeiro Gomes [EMAIL PROTECTED] escreveu Alguém poderia me ajudar ? Os arquivos oratab e emtab servem para que? Qual a importância deles? Onde devem ficar?...Não encontrei-os nos meus bancos!!! Os bancos (9.2.0.6 Win 2003 Server) estão no ar e funcionando, mas estou recebendo msgs de erro relacionadas ao agente desta máquina!!! DBSNMP for 32-bit Windows: release 9.2.0.6.0 - Production on 28-DEC- 06 09:32:08 Discovering services on B01 configured on host addresses {B01.xxx.xxx.xx.xxx.xxr yy.y.yy.yyy} Could not determine location of emtab. Desde já agradeço a ajuda de vocês. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: Ajuda URGENTE.
Bom, eu já fiz algo que acredito que seja o que o Edevaldo pretende fazer. Pra isso, criamos uma tabela chamada ERRO_USUARIO, assim: CREATE TABLE ERRO_USUARIO ( ERR_ID VARCHAR2(10 BYTE)NOT NULL, ERR_SOLUCAO VARCHAR2(150 BYTE), ERR_MSG VARCHAR2(200 BYTE) ) INSERT INTO ERRO_USUARIO ( ERR_ID, ERR_SOLUCAO, ERR_MSG ) VALUES ( '-2291', 'Seleccione un valor válido', 'No fue posible insertar/actualizar este registro debido al campo %col% contener un valor inválido.'); INSERT INTO ERRO_USUARIO ( ERR_ID, ERR_SOLUCAO, ERR_MSG ) VALUES ( '-1400', 'Llene los campos obligatorios', 'El campo %col% debe ser informado'); INSERT INTO ERRO_USUARIO ( ERR_ID, ERR_SOLUCAO, ERR_MSG ) VALUES ( '-2292', 'Excluya primero los registros relacionados', 'No es posible excluir este registro pues el aún está siendo usado'); INSERT INTO ERRO_USUARIO ( ERR_ID, ERR_SOLUCAO, ERR_MSG ) VALUES ( '-1', 'Informe otro valor', 'No es posible incluir este registro debido a existir otro registro con el mismo valor'); COMMIT; Com essa tabela criada, criar uma função que retorne mensagem personalizada que está na tabela acima. Abaixo um trecho da função, que trata o sqlcode e o sqlerrm que vc passa por parâmetro: SELECT e.err_msg INTO v_err_msg FROM erro_usuario e WHERE e.err_id = p_sqlcode; IF p_sqlcode = '-1' THEN v_aux1 := instr(p_sqlerrm, '.', 30, 1); v_aux2 := instr(p_sqlerrm, ')', 30, 1); v_constraint := substr(p_sqlerrm, v_aux1 + 1, v_aux2 - v_aux1 - 1); --dbms_output.put_line(v_constraint); SELECT table_name INTO v_table FROM sys.dba_constraints WHERE constraint_name = v_constraint AND owner = _user; RESULT := v_err_msg; A partir daí, vc tem uma noção de como desenvolver para os outros códigos de maior ocorrência. Em todas as SP's, coloco então no exception: EXCEPTION WHEN OTHERS THEN ROLLBACK; raise_application_error(-20001, f_erro(SQLCODE, SQLERRM)); Se fui muito confuso, me perguntem, espero ter ajudado! Milton Bastos Henriquis Junior Oracle Database Administrator Equipe de Tecnologia [EMAIL PROTECTED] Smartn ® IT Solutions Rua Candido de Abreu, 651 - 16º andar Centro Cívico - Curitiba CEP 80.530-907. Tel: ++ 55 41 3313-8613 Fax: ++ 55 41 3313-8620 www.smartn.com.br De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de jlchiappa Enviada em: quinta-feira, 28 de dezembro de 2006 09:26 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda URGENTE. Bem, há ** muito POUCOS ** erros específicos a uma dada coluna, os poucos que se habilitam a isso seriam caras como o 01401, 0, inserted value too large for column ou o ORA-01400: cannot insert NULL into ... , eu SUPONHO que é um desses caras que vc quer saber a coluna a que se refere o erro. Muito bem, isso totalmente DEPENDE da versão do seu banco, no bd 10g a msg de erro já diz qual é a coluna, como mostrado em http://asktom.oracle.com/pls/asktom/f? http://asktom.oracle.com/pls/asktom/f? p=100:11:0P11_QUESTION_ID:60444718781024#60504563049629 , muito certamente vc poderia formatar o stack de erros com DBMS_UTILITY.FORMAT_ERROR_STACK, consulte o manual de referência das packages PL/SQL que vc acha a sintaxe desse cara. Já nas versões 9i e anteriores a msg de erro não te dá isso, não tem como vc capturar isso , o que vc pode fazer é, quando estiver investigando um erro do tipo, setar um evento tipo alter session set events '1401 trace name processstate level 10'; e re-executar a rotina, que aí vc obterá no servidor um arquivo com a info mais detalhada... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Edevaldo da Fontoura Soares [EMAIL PROTECTED] escreveu Pessoal, há uma forma de pegar o nome do campo, no qual um erro em um insert / update, na exception ? Lá eu tenho a sqlcode e a sqlerrm, mas preciso saber exatamente onde ocorreu o erro. Agradeço a ajuda. Abraços. Edevaldo Soares. http://br.geocities.com/edevaldosoares/edevaldo.html http://br.geocities.com/edevaldosoares/edevaldo.html MSN: [EMAIL PROTECTED] e-mail: [EMAIL PROTECTED] ADVERTENCIA: Esta mensagem (incluindo quaisquer anexos) e confidencial e de uso restrito. Se voce recebeu esta mensagem por engano, por favor notifique ao emitente por meio do retorno do e-mail e delete (remova) esta mensagem de seu sistema. Qualquer uso nao autorizado ou distribuicao desta mensagem em
RES: [oracle_br] Re: Ajuda com conversao de caracteres VARCHAR2-CLOB
Caro Luiz, Monte uma Trigger de LOGON com as configurações necessárias de NLS_SORT, NLS_NUMERIC_CHARACTERS, NLS_DATE_FORMAT e assim por diante. Com isso você garante que sua aplicação irá rodar em qualquer NLS*. Atenciosamente, Anderson Haertel Rodrigues Administrador de Banco de Dados Florianópolis/SC - [EMAIL PROTECTED] -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de Luis Cabral Enviada em: segunda-feira, 17 de julho de 2006 11:04 Para: oracle_br@yahoogrupos.com.br Assunto: RE: [oracle_br] Re: Ajuda com conversao de caracteres VARCHAR2-CLOB Obrigado Chiappa, vou investigar o que vc sugeriu. Porém, o problema é que a aplicação é desenvolvida aqui, mas temos diversos clientes rodando diferentes versoes de Oracle 9i em diferentes sistemas operacionais etc. Mesmo que eu consiga resolver o problema aqui alterando alguma configuração no front-end, não temos controle sobre o ambiente nos clientes (apesar de podermos fazer recomendações). Eu precisava de uma solucao mais robusta, independente do front-end, afinal a aplicação vai ser disparada e rodar dentro do banco de dados, tendo como resultado o envio de email. Basicamente eu só precisava que o valor atribuido ao CLOB mantivesse os caracteres acentuados. Só uma última coisa - o codigo abaixo não deveria funcionar (repare nas 2 aspas simples fechando a string) mas aqui funciona sem erro de sintaxe! Vai entender... SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jul 17 15:00:50 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options JServer Release 9.2.0.7.0 - Production SQL BEGIN 2clob_test(i_text = 'aei - aá eé iía''); 3 end; 4 / PL/SQL procedure successfully completed. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa Sent: 17 July 2006 14:46 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Ajuda com conversao de caracteres VARCHAR2-CLOB Taí, *** DE CARA *** vc tem no banco NLS_LANGUAGE=AMERICAN e na sessão NLS_LANGUAGE=ENGLISH, são DIFERENTES, né não, provavelmente VAI ter alguma conversão aí, e se a lígua está diferente, pode ser que o characterset também esteja, né não faz o teste com o loader e experimente setar as vars de NLS no teu ambiente TODAS corretamente cfrme mostrado em outra msg []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Luis Cabral [EMAIL PROTECTED] escreveu Ai vai... SQL select * from nls_session_parameters; PARAMETER VALUE -- - NLS_LANGUAGE ENGLISH NLS_TERRITORY UNITED KINGDOM NLS_CURRENCY £ NLS_ISO_CURRENCY UNITED KINGDOM NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMATDD-MON-RR NLS_DATE_LANGUAGE ENGLISH NLS_SORT BINARY NLS_TIME_FORMATHH24.MI.SSXFF NLS_TIMESTAMP_FORMAT DD-MON-RR HH24.MI.SSXFF NLS_TIME_TZ_FORMAT HH24.MI.SSXFF TZR NLS_TIMESTAMP_TZ_FORMATDD-MON-RR HH24.MI.SSXFF TZR NLS_DUAL_CURRENCY â'¬ NLS_COMP BINARY NLS_LENGTH_SEMANTICS CHAR NLS_NCHAR_CONV_EXCPFALSE Obrigado! Luis From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of jlchiappa Sent: 17 July 2006 14:08 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Ajuda com conversao de caracteres VARCHAR2- CLOB Como já dito algumas vezes e agora será repetido, os params NLS do database servem como DEFAULT, ie, serão usados ** APENAS ** SE e somente SE o cliente não fornecer nada... Manda aí um select * from nls_session_parameters; conectado com esse cara onde vc está tentando executar a procedure []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Luis Cabral [EMAIL PROTECTED] escreveu Olá a todos Considerem a seguinte procedure: create or replace procedure clob_test(i_text in varchar2) IS v_text CLOB; BEGIN v_text := i_text; dbms_output.put_line(v_text); end clob_test; Teste da procedure: BEGIN clob_test(i_text = 'aei x áéí'); end; O resultado é: aei x � Gostaria que o conteudo do CLOB refletisse o conteudo do parametro. O que esta errado/faltando? Parece ser algo na conversao de varchar2 para CLOB, mas nao consegui encontrar a solucao em lugar algum. Obrigado Luis -- Oracle 9.2.0.7.0 SQL select * from nls_database_parameters; PARAMETER
RES: [oracle_br] Re: Ajuda com Query Urgente
Oi chiappa, Vamos aos parametros NAME TypeVALUE --- -- optimizer_dynamic_sampling integer 1 optimizer_features_enablestring 9.2.0 optimizer_index_caching integer 0 optimizer_index_cost_adj integer 100 optimizer_max_permutations integer 2000 optimizer_mode string CHOOSE pga_aggregate_target big integer 83886080 workarea_size_policy string AUTO Fiz alguns testes com histogramas nas colunas utilizadas e não tive exito. A tabela tem 126000 registros. Se trocar o in por exists será que melhora? Na base em oracle 8.1.7.4 a query voa da mesma maneira. O Negocio é que o plano de execução do oracle 8i para o 9i está diferente. Obrigado desde já pela atenção Atenciosamente, Nelson Cartaxo DBA ORACLE -Mensagem original- De: jlchiappa [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 4 de abril de 2006 13:06 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda com Query Urgente Como já dito algumas vezes por aqui mesmo, CBO ** implica ** diversas configurações a mais, como por exemplo os parâmetros optimizer_nnn, os parâmetros de PGA (seja sort_area e hash se for workspace manual, seja os param de aggregate se work=AUTO), db_multiblock_read, vc os ajustou ??? Rodar CBO sem eles normalmente SÓ PODE dar enrosco, o coitado do otimizador via estar sem algumas infos importantes, vai chutar e muitas vezes erra... Além disso, não basta só dizer tabela analizada , de que maneira vc coletou essas stats ? Vc ** MANDOU ** serem montados HISTOGRAMAS nas colunas com valores de distribuição irregular ??? Histogramas são outro ponto-CHAVE em muitos casos... Vamos começar por aí, só faço duas obs para essa query : 1. IN significa que vai haver MUITOS valores, e vc está pedindo MAX, que SEMPRE traz um só, alguma coisa está estranha aí 2. pra achar o máximo valor, normalmente é MUITO mais negócio vc fazer : SELECT * FROM (SELECT campo from tabela order by campo desc NULLS LAST) WHERE rownum 2 do que o MAX, o MAX normalmente ** implica ** que vc quer ler todos os valores. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo [EMAIL PROTECTED] escreveu Pessoal mais uma vez vou tentar recorrer a voces. Oracle 9.2.0.7 RedHat 2.1 Seguinte ao rodar a query abaixo com a tabela analisada com dbms_stats e indices tambem analisados, o plano mostra um merge join (cartesian) e a query trava, ou seja, fica no limbo. Quando coloco um hint de RULE a query fica instantanea. Alguem poderia me dar uma luz como faço para resolver. De repente to comendo mosca em algum parametro do oracle, ou algo parecido. A query é SELECT /*+ RULE */st_tarefa FROM siops.tb_log_tarefa Text WHERE co_tarefa = 10 AND dt_inicio IN ( SELECT MAX(dt_inicio) FROM siops.tb_log_tarefa TInt WHERE tExt.co_tarefa = TInt.co_tarefa) Obrigado desde já pelo help. Atenciosamente, Nelson Cartaxo DBA ORACLE -Mensagem original- De: Anderson Haertel Rodrigues [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 4 de abril de 2006 11:16 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] ENC: Dúvida BLOB Ricardo, Eu respondi a sua questão no Sábado a noite. --- Ricardo Lyrio [EMAIL PROTECTED] escreveu: Pessoal, Estou com um impasse que é o seguinte: Tenho a seguinte estrutura: 36 telas de forms sendo que apenas 5 fazem tratamento de imagens Tabela 1 Campo01 Campo02 ... Campo0n Imagem01 Imagem02 ... Imagem12 As imagens são todas Blob Esta tabela tem mais ou menos 3.000.000 de registros O que seria melhor: Dividir a tabela, retirar as imagens e criar uma outra tabela Tabela 2 FK da tabela1 FK de Descrição da imagem Imagem Existe alguma limitação para o Oracle tratar em as imagens numa mesma tabela? Grato Ricardo Lyrio [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
RES: [oracle_br] Re: Ajuda com Query Urgente
optimizer_index_caching=0 e optimizer_index_cost_adj=100 são o default, isso mostra que vc não os ajustou, repito, SEM ajustar esses caras normalmente não rola direito CBO, use o paper THE SEARCH FOR INTELLIGENT LIFE IN THE COST-BASED OPTIMIZER, de Tim Gorman, online em http://www.evdbt.com/papers.htm que ele te dá boas dicas sobre como os ajustar, e porque/quando os ajustar. Recomendaria também o já clássico A LOOK UNDER THE HOOD OF CBO: THE 10053 EVENT, de Wolfgang Breitling, online em www.hotsos.com (é só se registrar, é grátis) pra vc testar se os seus ajustes de CBO estão bem, qual é o comportamento duma determinada query em CBO... Quanto ao EXISTS, não, eu repito : vc pediu MAX, MAX retorna só uma linha, então tanto IN (select max... ) como EXISTS (select max...) não fazem muito sentido, a comparação deveria ser campo = (select max). Quanto à diferença de versões, sim, é MUITO comum (já que são bancos absolutamente DIFERENTES!!) vc ter performances diferentes... No caso do 9i , além dos ajustes de CBO, em casos de performance com sub- queries vc pode checar os params citados nas notas 258167.1 e 258945.1, não parece ser o caso aqui, mas vale o check. Quanto aos histogramas, exatamente para QUAIS colunas vc o armazenou, pelo que vejo ao menos nas colunas que sofrem comparação (ie, co_tarefa e dt_inicio ) vc deveria, Já que é 9i, vc usou a feature de SIZE AUTO na hora de criar os histogramas, ou especificou um tamanho diretamente ? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo [EMAIL PROTECTED] escreveu Oi chiappa, Vamos aos parametros NAME TypeVALUE --- -- optimizer_dynamic_sampling integer 1 optimizer_features_enablestring 9.2.0 optimizer_index_caching integer 0 optimizer_index_cost_adj integer 100 optimizer_max_permutations integer 2000 optimizer_mode string CHOOSE pga_aggregate_target big integer 83886080 workarea_size_policy string AUTO Fiz alguns testes com histogramas nas colunas utilizadas e não tive exito. A tabela tem 126000 registros. Se trocar o in por exists será que melhora? Na base em oracle 8.1.7.4 a query voa da mesma maneira. O Negocio é que o plano de execução do oracle 8i para o 9i está diferente. Obrigado desde já pela atenção Atenciosamente, Nelson Cartaxo DBA ORACLE -Mensagem original- De: jlchiappa [mailto:[EMAIL PROTECTED] Enviada em: terça-feira, 4 de abril de 2006 13:06 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Ajuda com Query Urgente Como já dito algumas vezes por aqui mesmo, CBO ** implica ** diversas configurações a mais, como por exemplo os parâmetros optimizer_nnn, os parâmetros de PGA (seja sort_area e hash se for workspace manual, seja os param de aggregate se work=AUTO), db_multiblock_read, vc os ajustou ??? Rodar CBO sem eles normalmente SÓ PODE dar enrosco, o coitado do otimizador via estar sem algumas infos importantes, vai chutar e muitas vezes erra... Além disso, não basta só dizer tabela analizada , de que maneira vc coletou essas stats ? Vc ** MANDOU ** serem montados HISTOGRAMAS nas colunas com valores de distribuição irregular ??? Histogramas são outro ponto-CHAVE em muitos casos... Vamos começar por aí, só faço duas obs para essa query : 1. IN significa que vai haver MUITOS valores, e vc está pedindo MAX, que SEMPRE traz um só, alguma coisa está estranha aí 2. pra achar o máximo valor, normalmente é MUITO mais negócio vc fazer : SELECT * FROM (SELECT campo from tabela order by campo desc NULLS LAST) WHERE rownum 2 do que o MAX, o MAX normalmente ** implica ** que vc quer ler todos os valores. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Nelson Cartaxo [EMAIL PROTECTED] escreveu Pessoal mais uma vez vou tentar recorrer a voces. Oracle 9.2.0.7 RedHat 2.1 Seguinte ao rodar a query abaixo com a tabela analisada com dbms_stats e indices tambem analisados, o plano mostra um merge join (cartesian) e a query trava, ou seja, fica no limbo. Quando coloco um hint de RULE a query fica instantanea. Alguem poderia me dar uma luz como faço para resolver. De repente to comendo mosca em algum parametro do oracle, ou algo parecido. A query é SELECT /*+ RULE */st_tarefa FROM siops.tb_log_tarefa Text WHERE co_tarefa = 10 AND dt_inicio IN ( SELECT MAX(dt_inicio) FROM siops.tb_log_tarefa TInt WHERE tExt.co_tarefa = TInt.co_tarefa) Obrigado desde já pelo help. Atenciosamente, Nelson Cartaxo DBA ORACLE -Mensagem original- De: Anderson Haertel Rodrigues
RES: [oracle_br] Re: AJUDA SCRIPT - URGENTE
Verifique se este select traz as linhas de 1 a 10 de cada vigência: -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Carlos Eduardo Goncalves Enviada em: terça-feira, 1 de novembro de 2005 11:05 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: AJUDA SCRIPT - URGENTE Eu coloquei, porem, o valor so aprsenta na 1ª linha. Na 2ª linha no campo valor sai em branco. Ex: Nas 10 Primeiras linhas da tabela tenho valores na vigencia 20/08/2005 E nas linhas abaixo tenho outros 10 valores com vigencia 01/08/2002 Teria que sair na 1ª Linha os 10 valores da vigencia 20/08/2005 E na 2ª linha os 10 valores da vigencia 01/08/2002 Por favor, veja a estrutira da Tabela. Marcio Portes [EMAIL PROTECTED] escreveu: Coloque a vigencia no group by. select cd_contrato, dt_venda, dt_vigencia, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda, dt_vigencia --- Em oracle_br@yahoogrupos.com.br, cegoncalvesvr [EMAIL PROTECTED] escreveu Amigos, Na tabela Valores_Tabela_Contrato, tenho outros valores de outra vigência. Usando o comando MAX, estou trazendo apenas os valores que estão em vigencia, mas Preciso trazer os valores de vigencias passada. Teria que ter outra linha baixo com os valores antigo. Alguem poderia me ajudar? Abaixo o script que estou usando: select cd_contrato, dt_venda, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE var lrec_target=_blank;var lrec_URL=new Array();lrec_URL[1]=http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.7 924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750/R=0/i d=flashurl/SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_flashfile=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0901_lrec_cinema _calendario.swf?clickTAG=javascript:LRECopenWindow(1);var lrec_altURL=http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.7924794.2 369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750/R=1/id=altimg /SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_altimg=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0829_lrec_cinema_ca lendario.gif;var lrec_width=300;var lrec_height=250; - Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. Carlos Eduardo Gonçalves - [EMAIL PROTECTED] Analista de Suporte Casa de Saúde São José Plano de Saúde Amigo São Gonçalo - RJ - Brasil Tel: 21 - 2607-9212 - Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula cupons e concorre a mais de 500 prêmios! Participe! [As partes desta mensagem que não
Re: RES: [oracle_br] Re: AJUDA SCRIPT - URGENTE
Ivan, Esta trazendo SIM Mas somente os 10 valores da MAIOR Vigencia. Ivan Ricardo Schuster [EMAIL PROTECTED] escreveu: Verifique se este select traz as linhas de 1 a 10 de cada vigência: -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Carlos Eduardo Goncalves Enviada em: terça-feira, 1 de novembro de 2005 11:05 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: AJUDA SCRIPT - URGENTE Eu coloquei, porem, o valor so aprsenta na 1ª linha. Na 2ª linha no campo valor sai em branco. Ex: Nas 10 Primeiras linhas da tabela tenho valores na vigencia 20/08/2005 E nas linhas abaixo tenho outros 10 valores com vigencia 01/08/2002 Teria que sair na 1ª Linha os 10 valores da vigencia 20/08/2005 E na 2ª linha os 10 valores da vigencia 01/08/2002 Por favor, veja a estrutira da Tabela. Marcio Portes [EMAIL PROTECTED] escreveu: Coloque a vigencia no group by. select cd_contrato, dt_venda, dt_vigencia, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda, dt_vigencia --- Em oracle_br@yahoogrupos.com.br, cegoncalvesvr [EMAIL PROTECTED] escreveu Amigos, Na tabela Valores_Tabela_Contrato, tenho outros valores de outra vigência. Usando o comando MAX, estou trazendo apenas os valores que estão em vigencia, mas Preciso trazer os valores de vigencias passada. Teria que ter outra linha baixo com os valores antigo. Alguem poderia me ajudar? Abaixo o script que estou usando: select cd_contrato, dt_venda, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE var lrec_target=_blank;var lrec_URL=new Array();lrec_URL[1]=http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.7 924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750/R=0/i d=flashurl/SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_flashfile=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0901_lrec_cinema _calendario.swf?clickTAG=javascript:LRECopenWindow(1);var lrec_altURL=http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.7924794.2 369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750/R=1/id=altimg /SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_altimg=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0829_lrec_cinema_ca lendario.gif;var lrec_width=300;var lrec_height=250; - Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. Carlos Eduardo Gonçalves - [EMAIL PROTECTED] Analista de Suporte Casa de Saúde São José Plano de Saúde Amigo São Gonçalo - RJ - Brasil Tel: 21 - 2607-9212 - Promoção Yahoo! Acesso Grátis: a cada hora
RES: [oracle_br] Re: AJUDA SCRIPT - URGENTE
Isto é lógico, já que voce está ordenando pelo row_number() e apresentando somente 10 valores. Tá um pouco confuso o que voce tá querendo. --- Em oracle_br@yahoogrupos.com.br, Carlos Eduardo Goncalves [EMAIL PROTECTED] escreveu Ivan, Esta trazendo SIM Mas somente os 10 valores da MAIOR Vigencia. Ivan Ricardo Schuster [EMAIL PROTECTED] escreveu: Verifique se este select traz as linhas de 1 a 10 de cada vigência: -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Carlos Eduardo Goncalves Enviada em: terça-feira, 1 de novembro de 2005 11:05 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: AJUDA SCRIPT - URGENTE Eu coloquei, porem, o valor so aprsenta na 1ª linha. Na 2ª linha no campo valor sai em branco. Ex: Nas 10 Primeiras linhas da tabela tenho valores na vigencia 20/08/2005 E nas linhas abaixo tenho outros 10 valores com vigencia 01/08/2002 Teria que sair na 1ª Linha os 10 valores da vigencia 20/08/2005 E na 2ª linha os 10 valores da vigencia 01/08/2002 Por favor, veja a estrutira da Tabela. Marcio Portes [EMAIL PROTECTED] escreveu: Coloque a vigencia no group by. select cd_contrato, dt_venda, dt_vigencia, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda, dt_vigencia --- Em oracle_br@yahoogrupos.com.br, cegoncalvesvr [EMAIL PROTECTED] escreveu Amigos, Na tabela Valores_Tabela_Contrato, tenho outros valores de outra vigência. Usando o comando MAX, estou trazendo apenas os valores que estão em vigencia, mas Preciso trazer os valores de vigencias passada. Teria que ter outra linha baixo com os valores antigo. Alguem poderia me ajudar? Abaixo o script que estou usando: select cd_contrato, dt_venda, max(decode(rn, 1, vl_mensalidade, null)) vl1, max(decode(rn, 3, vl_mensalidade, null)) vl3, max(decode(rn, 4, vl_mensalidade, null)) vl4, max(decode(rn, 5, vl_mensalidade, null)) vl5, max(decode(rn, 6, vl_mensalidade, null)) vl6, max(decode(rn, 7, vl_mensalidade, null)) vl7, max(decode(rn, 8, vl_mensalidade, null)) vl8, max(decode(rn, 9, vl_mensalidade, null)) vl9, max(decode(rn, 10, vl_mensalidade, null)) vl10 from ( select c.cd_contrato, vl_mensalidade, dt_venda, dt_vigencia, row_number() over (partition by c.cd_contrato order by dt_venda ) rn from valores_tabela_contrato v, dbaps.contrato c where c.cd_contrato = v.cd_contrato(+) and c.cd_contrato = 45022 and tp_usuario = 'D' ) group by cd_contrato, dt_venda ORACLE_BR APOIA 2ºENPO-BR _ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Yahoo! Grupos, um serviço oferecido por:PUBLICIDADE var lrec_target=_blank;var lrec_URL=new Array();lrec_URL[1] =http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.7 924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750 /R=0/i d=flashurl/SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_flashfile=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0901_lrec_ cinema _calendario.swf?clickTAG=javascript:LRECopenWindow(1);var lrec_altURL=http://br.rd.yahoo.com/SIG=12flfr8o6/M=365837.7000707.792 4794.2 369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1130856578/A=2950750/R=1/id= altimg /SIG=10tift5qr/*http://br.movies.yahoo.com/;var lrec_altimg=http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0829_lrec_cin ema_ca lendario.gif;var lrec_width=300;var lrec_height=250; - Links do Yahoo! Grupos Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ Para sair deste grupo, envie um e-mail para: