Re: [oracle_br] Re: Inicio da carreira DBA
Obrigado pelas dicas Chiappa!! De: J. Laurindo Chiappa jlchia...@yahoo.com.br Para: oracle_br@yahoogrupos.com.br Enviadas: Sábado, 9 de Fevereiro de 2013 15:48 Assunto: [oracle_br] Re: Inicio da carreira DBA Ah, claro : hoje em dia muitas das melhores vagas disponíveis ainda estão em Consultorias : assim, além de se cadastrar não deixe de googlar por CONSULTORIAS ORACLE , de entrar na páginas da Oracle que listam Parceiros, e (principalmente) de montar uma rede de contatos no Linkedin - todas essas são fontes Excelentes de locais aonde vc mandar seu CV ou se oferecer/procurar vagas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa escreveu Colega, realmente mesmo para DBA Júnior o pessoal realmente exige alguma experiência e isso é até compreensível : não só hoje em dia a verba (e o Tempo) para Treinamento nas empresas estão cada vez mais minguados (então a idéia é alguém que já possa de imediato produzir alguma coisinha, mesmo em nível Jr.), mas também hoje em dia (dada a crescente exigência de produtividade) em todas as Equipes (TI não é diferente neste sentido) mesmo um DBA Júnior acaba tendo acesso e fazendo algumas tarefas simples em ambientes produtivos (dificilmente hoje em dia há DBA Sêniores suficientes na organização para fazerem pessoalmente todas as tarefas em prod), e aí em tese alguém que já carrega alguma experiência mesmo que pequena estaria menos sujeito a fazer besteira em prod... Sendo assim, realmente vai ser bastante difícil vc entra diretamente como DBA mesmo que Júnior : até há chance de vc conseguir como DBA Trainee ou Estagiário mas eu diria para vc considerar entrar na área de banco de dados como secundário - por exemplo : como programador e/ou Analista que desenvolvem em coma de RDBMS Oracle, ou como sysadmin de um ambiente fortemente utilizador de RDBMSs Oracle, coisas assim... Finalmente, sobre auto-promoção : o Grupo aqui é extremamente Focado em assuntos técnicos e em discussão geral do Mercado e dicas de carreira, então via de regra não é Efetivo (nem exatamente Aceito livremente) postar vagas e/ou requerer vagas, assim eu Sugiro que vc utilize os sites especializados... Alguns dos nacionais mais conhecidos afora o APINFO que vc já conhece e usa (alguns só mostram anúncios, outros permitem que vc cadastre CV) : http://www.efetividade.net/2008/11/03/emprego-um-curriculo-vencedor-esta-ao-seu-alcance/ (veja os links da página) http://noticias.uol.com.br/empregos/ http://www.trabalhando.com.br/ http://www.empregosti.com/ http://empregos.trovitbrasil.com.br/ http://br.jobrapido.com/ http://www.tihunter.com/ http://www.simplyhired.com.br/ http://www.careerjet.com.br/ http://novo.vagas.com.br/ http://www.trovit.com.br/ http://www.ceviu.com.br/ http://www.buscoempregos.com/ http://www.netcarreiras.com.br/ http://www.buscojobs.com.br/ http://www.emprega.info/ http://www.alertadeemprego.com.br/ http://www.boadica.com.br/ http://www.curriculum.com.br/ http://empregocerto.uol.com.br/ http://www.profissionaisti.com.br/ http://www.zap.com.br/empregos http://www.manager.com.br/ http://www.emprega.info/ http://www.netcarreiras.com.br/ E outra dica : hoje em dia o site-padrão para vc fazer contatos/networking profissional é ainda o Linkedin , em http://www.linkedin.com/ : deixe facebook, msn/skype, pinterest, etc, etc, para outros fins, há muito ruído nesses... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, carlos silva escreveu Possuo cadastro na Apinfo e inclusive todas as vagas que consegui foi através do site, continuo recebendo propostas mais estão exigindo muita experiência para um iniciante. Mais de qualquer forma obrigado pela atenção!! De: Fabricio Pedroso Jorge Para: oracle_br@yahoogrupos.com.br Enviadas: Sábado, 9 de Fevereiro de 2013 14:25 Assunto: Re: [oracle_br] Inicio da carreira DBA Cadastra teu curriculo na APINFO... já recebi algumas propostas cujos entrevistadores me disseram terem encontrado meu curriculo por lá. Acho que vale a pena. e em SP, sempre tem vaga pra DBA. Em 9 de fevereiro de 2013 14:17, carlos silva escreveu: ** Boa tarde Fabricio, Moro no Grande ABC, na cidade de São Paulo. No momento busco uma oportunidade para atuar em São Paulo. Att, Carlos De: Fabricio Pedroso Jorge fpjbito@ Para: oracle_br@yahoogrupos.com.br Enviadas: Sábado, 9 de Fevereiro de 2013 14:07 Assunto: Re: [oracle_br] Inicio da carreira DBA Em qual cidade você reside? E você teria possibilidade de mudar de cidade? Em 9 de fevereiro de 2013 12:53, carlos silva carlos_nsilva@escreveu: ** Boa tarde Pessoal, Estou buscando uma oportunidade para trabalhar na área de banco de dados Oracle como Júnior.
[oracle_br] FW: Como faço para salvar um .XML e uma pasta local?
Ola, pessoa! Fiz um processo de criar um xml, e inserir em uma tabela, como faço para extrair esse dado da tabela e jogar em uma pasta local do windows como .xml(arquivo). Se alguém tiver algum exemplo ajudaria bastante Abraços, [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Formspider
Oi pessoal. Alguém está usando ou fazendo testes com o formspider? Estou desenvolvendo uma aplicação aqui e gostaria de saber a opinião de quem está nas mesmas condições Ricardo [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Duvida
Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida em 20 colunas, teremos como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. Grato To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Sun, 10 Feb 2013 15:51:36 -0300 Subject: Re: [oracle_br] Duvida Gostaria de fazer usando o sql plus. -Original Message- From: Milton Bastos Henriquis Jr. Sent: 10 Feb 2013 17:53:04 GMT To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Duvida Gabriel, explique ONDE você quer fazer isso. Vc está estudando o que? SQL? Vc quer fazer isso aí no SQL*Plus? 2013/2/9 gabriel Tomaz gabriel_tom...@hotmail.com ** Caros , gostaria de saber se podem me ajudar estou iniciando com Oracle e estou resolvendo alguns exercícios para aprimorar meus conhecimentos. Estou com o seguinte dificuldade: Dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Gostaria de saber se existe algum comando para fazer a quebra de linha e como ficaria meu bloco? desde já agradeço. [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] -- 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 * 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: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[oracle_br] Re: Duvida
Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida em 20 colunas, teremos como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. Grato To: oracle_br@yahoogrupos.com.br From: gabriel_tomazc@... Date: Sun, 10 Feb 2013 15:51:36 -0300 Subject: Re: [oracle_br] Duvida Gostaria de fazer usando o sql plus. -Original Message- From: Milton Bastos Henriquis Jr. Sent: 10 Feb 2013 17:53:04 GMT To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Duvida Gabriel, explique ONDE você quer fazer isso. Vc está estudando o que? SQL? Vc quer fazer isso aí no SQL*Plus? 2013/2/9 gabriel Tomaz gabriel_tomazc@... ** Caros , gostaria de saber se podem me ajudar estou iniciando com Oracle e estou resolvendo alguns exercícios para aprimorar meus conhecimentos. Estou com o seguinte dificuldade: Dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Gostaria de saber se existe algum comando para fazer a quebra de linha e como ficaria meu bloco? desde já agradeço. [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]
[oracle_br] Re: FW: Como faço para salvar um .XML e uma pasta local?
Explica melhor pra gente : na tal tabela vc já tem o documento XML completo e formatado, é isso ? Ou ainda prtecisa de algum parse, alguma complementação ? Outra coisa : ele está gravado num único registro (numa coluna CLOB ou XML, talvez) , ou numa coluna VARCHAR com dados em vários registros ?? Mas de qquer maneira o negócio é : SE o documento XML está completo, ele é nada mais que um TEXTO, e TEXTO OU vc grava em disco com o UTL_FILE no servidor Oracle (e depois transfere, ou usa mapeamento/NFS), OU pela aplicação vc usa os comandos que existirem para gravar, okdoc ? Já SE o documento está incompleto e/ou necessita de algum parse/formatação/adição, aí vc nos diga o que falta que a gente pode tentar palpitar/demonstrar... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Carlos Silva escreveu Ola, pessoa! Fiz um processo de criar um xml, e inserir em uma tabela, como faço para extrair esse dado da tabela e jogar em uma pasta local do windows como .xml(arquivo). Se alguém tiver algum exemplo ajudaria bastante Abraços, [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Re: Duvida
Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida em 20 colunas, teremos como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. Grato To: oracle_br@yahoogrupos.com.br From: gabriel_tomazc@... Date: Sun, 10 Feb 2013 15:51:36 -0300 Subject: Re: [oracle_br] Duvida Gostaria de fazer usando o sql plus. -Original Message- From: Milton Bastos Henriquis Jr. Sent: 10 Feb 2013 17:53:04 GMT To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Duvida Gabriel, explique ONDE você quer fazer isso. Vc está estudando o que? SQL? Vc quer fazer isso aí no SQL*Plus? 2013/2/9 gabriel Tomaz gabriel_tomazc@... ** Caros , gostaria de saber se podem me ajudar estou iniciando com Oracle e estou resolvendo alguns exercícios para aprimorar meus conhecimentos. Estou com o seguinte dificuldade: Dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Gostaria de saber se existe algum comando para fazer a quebra de linha e como ficaria meu bloco? desde já agradeço. [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
Re: [oracle_br] Re: Duvida
Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida em 20 colunas, teremos como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. Grato To: oracle_br@yahoogrupos.com.br From: gabriel_tomazc@... Date: Sun, 10 Feb 2013 15:51:36 -0300 Subject: Re: [oracle_br] Duvida Gostaria de fazer usando o sql plus. -Original Message- From: Milton Bastos Henriquis Jr. Sent: 10 Feb 2013 17:53:04 GMT To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Duvida Gabriel, explique ONDE você quer fazer isso. Vc está estudando o que? SQL? Vc quer fazer isso aí no SQL*Plus? 2013/2/9 gabriel Tomaz gabriel_tomazc@... ** Caros , gostaria de saber se podem me ajudar estou iniciando com Oracle e estou resolvendo alguns exercícios para aprimorar meus conhecimentos. Estou com o seguinte dificuldade: Dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Gostaria de saber se existe algum comando para fazer a quebra de linha e como ficaria meu bloco? desde já agradeço. [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:
[oracle_br] Re: Duvida
Bem, a Documentação que eu citei são os manuais Oracle : todos eles estão online no site http://tahiti.oracle.com e há um DEDICADO à linguagem SQL e seus comandos/funções nativas, lá vc acha tanto a sintaxe quanto uns três ou quatro exemplos de cada coisa... Vc não diz a versão mas supondo 11gR2 http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions181.htm#SQLRF06114 é a ref Sobre o exemplo que vc digitou, se é este trecho : DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; Aonde vc vê SUBSTR nele ? Eu não vejo... Anyway, segue ainda outro exemplo exemplificando a utilização do SUBSTR , primeiro extraindo uma substring a partir da posição 1 até aonde achar um espaço em branco, e depois extraindo uma substring iniciando não em 1, mas aonde acahr um espaço em branco, E além disso essa última substring extraída eu coloca na variável v_frase , na prática Sobrepondo e perdendo o que eu tinha antes : SQL set serveroutput on size unlimited; SQL DECLARE 2 v_frase varchar2(200) := 'Frase de teste para Exemplo!'; 3 BEGIN 4 for i in 1..4 loop 5dbms_output.put_line(substr(v_frase, 1, instr(v_frase, ' '))); 6v_frase := substr(v_frase, instr(v_frase, ' ')+1); 7 end loop; 8 dbms_output.put_line(v_frase); 9 END; 10 / Frase de teste para Exemplo! Procedimento PL/SQL concluÝdo com sucesso. Mas repito, para vc poder entender esse exemplo, plz dá uma estudada no manual citado, faça antes os exemplinhos menores que estão no manual, escreva um exemplo seu simples variando com um FOR algum dos argumentos do SUBSTR.. É assim que se aprende... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchiappa@... Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida
RE: [oracle_br] Re: Duvida
Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas felizes. e pedirmos para ela ser exibida em 20 colunas, teremos como resposta:Um pequeno jabutixereta viu dezcegonhas felizes. Grato To: oracle_br@yahoogrupos.com.br From: gabriel_tomazc@... Date: Sun, 10 Feb 2013 15:51:36 -0300 Subject: Re: [oracle_br] Duvida Gostaria de fazer usando o sql plus. -Original Message- From: Milton Bastos Henriquis Jr.
RE: [oracle_br] Re: Duvida
Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar.DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_cert VARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END;To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 16:40:53 + Subject: [oracle_br] Re: Duvida Bem, a Documentação que eu citei são os manuais Oracle : todos eles estão online no site http://tahiti.oracle.com e há um DEDICADO à linguagem SQL e seus comandos/funções nativas, lá vc acha tanto a sintaxe quanto uns três ou quatro exemplos de cada coisa... Vc não diz a versão mas supondo 11gR2 http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions181.htm#SQLRF06114 é a ref Sobre o exemplo que vc digitou, se é este trecho : DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; Aonde vc vê SUBSTR nele ? Eu não vejo... Anyway, segue ainda outro exemplo exemplificando a utilização do SUBSTR , primeiro extraindo uma substring a partir da posição 1 até aonde achar um espaço em branco, e depois extraindo uma substring iniciando não em 1, mas aonde acahr um espaço em branco, E além disso essa última substring extraída eu coloca na variável v_frase , na prática Sobrepondo e perdendo o que eu tinha antes : SQL set serveroutput on size unlimited; SQL DECLARE 2 v_frase varchar2(200) := 'Frase de teste para Exemplo!'; 3 BEGIN 4 for i in 1..4 loop 5dbms_output.put_line(substr(v_frase, 1, instr(v_frase, ' '))); 6v_frase := substr(v_frase, instr(v_frase, ' ')+1); 7 end loop; 8 dbms_output.put_line(v_frase); 9 END; 10 / Frase de teste para Exemplo! Procedimento PL/SQL concluÝdo com sucesso. Mas repito, para vc poder entender esse exemplo, plz dá uma estudada no manual citado, faça antes os exemplinhos menores que estão no manual, escreva um exemplo seu simples variando com um FOR algum dos argumentos do SUBSTR.. É assim que se aprende... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchiappa@... Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o
Re: [oracle_br] Re: Duvida
Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);BEGINFOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA :=END; O exercício e o seguinte:Escreva um programa em que dado uma frase e a quantidade de colunas que podem ser exibidas na tela, faça a quebra de linhas sem quebrar as palavras. Por exemplo, se passarmos a frase Um pequeno jabuti xereta viu dez cegonhas
RE: [oracle_br] Re: Duvida
Qual seria o tipo de dados correto? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA
RE: [oracle_br] Re: Duvida
Gostaria de saber qual seria o tipo de dados correto para ser colocado nessas variáveis? Enquanto O problema com o fechamento do IF já corrigi. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda versão, e aí vai até vc conseguir - é Assim que se aprende, por tentativa e erro ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, gabriel Tomaz escreveu Alguem pode me ajudar na resolução desse exercício segue como esta ficando: estou usando sql*plus DECLAREL_VFRASE
Re: [oracle_br] Re: Duvida
Sugestão, antes de tenta executa no SQL*Plus, coloca o teu programa em um editor tipo bloco de notas e verifica ele. Aí vai começar a aparecer os erros. Usa a identação para melhorar a leitura do programa. []´s Roberto Em 11 de fevereiro de 2013 14:54, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Qual seria o tipo de dados correto? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13) - eu entendo que a idéia é que, se o fim da coluna não cai num espaço em branco, vc terá que finalizar a substring do SUBSTR no primeiro espaço em branco à esquerda da posição de fim da coluna e insreir uma quebra de linha após o espaço, fazendo o restante cair na linha de baixo quando exibido : provavelmente para isso vc vai precisar do INSTR, que procura a ocorrência de um caracter A minha dica portanto é : Dá uma estudada nesses comandos que citei e faz um esforço inicial, tenta escrever uma versão dessa lógica : não conseguindo, a gente pode palpitar/tentar mostrar onde vc falhou, aí vc escreve uma segunda
RE: [oracle_br] Re: Duvida
Valeu pela dica. Mas sabe informar qual tipo de dados seria essas minhas variáveis ? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:04:13 -0200 Subject: Re: [oracle_br] Re: Duvida Sugestão, antes de tenta executa no SQL*Plus, coloca o teu programa em um editor tipo bloco de notas e verifica ele. Aí vai começar a aparecer os erros. Usa a identação para melhorar a leitura do programa. []´s Roberto Em 11 de fevereiro de 2013 14:54, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Qual seria o tipo de dados correto? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida Bom, não vou me meter a codificar na prática (não serei desmancha-prazeres tirando a sua alegria) mas : Imaginando que o limite da linha é de 100 caracteres, E QUE o sql*plus já foi configurado com SET LINESIZE 100, temos que : - se a linha é de 100 caracteres e a qtdade de colunas está definida na variável V_QTD_COL (digamos), aí 100 / V_QTD_COL te dá o tamanho de cada coluna em caracteres , são pedaços desse tamanho da string original que vc vai ter que extrair - o principal comando para vc extrair uma substring a partir de uma string maior é o SUBSTR, consulte a Documentação para vc aprender o uso dele - não há um comando para quebrar linhas no PL/SQL, nem na package DBMS_OUTPUT (que é o que vc está usando) : o que vc vai ter que fazer é OU inserir na string a ser exibida o(s) caracteres de controle que sinalizam end of line (se o seu sistema operacional for Windows eles são CHR(13) || CHR(10) , enquanto no Linux/Unix é só o CHR(13)
RE: [oracle_br] Re: Duvida
Alguém sabe informar qual seria o tipo dessas variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase se alguém quiser fazer algum ajustar a melhorar o código fica a vontade. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.'; L_VFRASE_TEST VARCHAR2(240); L_VFRASE_NOVO VARCHAR2(240); L_VQBRLINHA VARCAHR2(240); L_valor_novo VARCAHR2(240); L_TESTE_QBR VARCAHR2(240); L_FRA_cert VARCAHR2(240); L_frase VARCAHR2(240); L_VFRASE_TEST1 VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); L_VFRASE := INSTR( L_VFRASE,' '); L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST; L_VFRASE_TEST := 0; L_VQBRLINHA := L_VFRASE + L_valor_novo; L_VQBRLINHA := -1; L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo); L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END IF; END LOOP:END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:04:13 -0200 Subject: Re: [oracle_br] Re: Duvida Sugestão, antes de tenta executa no SQL*Plus, coloca o teu programa em um editor tipo bloco de notas e verifica ele. Aí vai começar a aparecer os erros. Usa a identação para melhorar a leitura do programa. []´s Roberto Em 11 de fevereiro de 2013 14:54, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Qual seria o tipo de dados correto? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject: Re: [oracle_br] Re: Duvida Select subtr('teste',0,1) from dual; Nesse caso o resultado seria a letra 't' Enviado via iPhone Alisson Luz Em 11/02/2013, às 13:56, gabriel Tomaz gabriel_tom...@hotmail.com escreveu: Estou dando uma lida aqui. Alguém teria algum exemplo dessa função SUBTR ?No exemplo que digitei abaixo esta correto meu raciocínio? To: oracle_br@yahoogrupos.com.br From: jlchia...@yahoo.com.br Date: Mon, 11 Feb 2013 14:47:54 + Subject: [oracle_br] Re: Duvida
RE: [oracle_br] Re: Duvida
Alguém pode validar novamente para me onde pode estar errado?DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.'; L_VFRASE_TEST VARCHAR2(240); L_VFRASE_NOVO VARCHAR2(240); L_VQBR_LINHA VARCAHR2(240); L_VALOR_NOVO VARCAHR2(240); L_TESTE_QBR VARCAHR2(240); L_FRA_CERT VARCAHR2(240); L_FRASE VARCAHR2(240); L_VFRASE_TEST1 VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); L_VFRASE := INSTR( L_VFRASE,' '); L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST; L_VFRASE_TEST := 0; L_VQBRLINHA := L_VFRASE + L_valor_novo; L_VQBRLINHA := -1; L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo); L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END IF; END LOOP:END;To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:12:04 -0200 Subject: Re: [oracle_br] Re: Duvida Não te direi diretamente. Olha o teu código e vai ver que o tipo de dado está correto, mas a escrita está errada. Como eu disse, tem que analisar o código para ir descobrindo os erros. Desse jeito, irá aprender. []´s Roberto Em 11 de fevereiro de 2013 15:08, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Valeu pela dica. Mas sabe informar qual tipo de dados seria essas minhas variáveis ? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:04:13 -0200 Subject: Re: [oracle_br] Re: Duvida Sugestão, antes de tenta executa no SQL*Plus, coloca o teu programa em um editor tipo bloco de notas e verifica ele. Aí vai começar a aparecer os erros. Usa a identação para melhorar a leitura do programa. []´s Roberto Em 11 de fevereiro de 2013 14:54, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Qual seria o tipo de dados correto? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 14:47:57 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Antes de mais nada, esse teu código está funcionando? Dando uma olhada aqui eu reparei que: - a declaração das variáveis L_VQBRLINHA, L_valor_novo, L_TESTE_QBR, L_FRA_cert e L_frase estão incorretas - o tipo de dados foi escrito errado; - está faltando END LOOP e END IF; Corrige esse itens, executa o teu programa e se tiver dúvida posta de novo, com o programa funcionando, como está sendo a saída e como tu gostaria\entende que deveria ser. []´s Roberto Em 11 de fevereiro de 2013 14:42, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Com base no uso da SUBSTR alguém poderia validar ou aperfeiçoar o código ou da dicas para melhorar. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBRLINHA VARCAHR2(240);L_valor_novo VARCAHR2(240);L_TESTE_QBR VARCAHR2(240);L_FRA_certVARCAHR2(240);L_frase VARCAHR2(240);L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END; CC: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br From: alisson...@yahoo.com.br Date: Mon, 11 Feb 2013 13:24:44 -0200 Subject:
[oracle_br] Problemas com o Datapump
Senhores, boa tarde! Estou enfrentando alguns problemas utilizado o Datapump, gostaria de saber se já viu este problema: == Ambiente: Virtualizado com Oracle VM SO: Oracle Enterprise Linux 5.2 RAC 10.2.0.4 RDBMS 10.2.0.4 Ao iniciar o export do banco de dados o seguinte erro é encontrado: [oracle@prd migra]$ expdp system/xxx parfile=expdp.par Export: Release 10.2.0.4.0 - 64bit Production on Monday, 11 February, 2013 16:03:28 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production With the Real Application Clusters option Starting SYSTEM.SYS_EXPORT_SCHEMA_01: system/ parfile=expdp.par Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA UDE-8: operation generated ORACLE error 31626 ORA-31626: job does not exist ORA-06512: at SYS.KUPC$QUE_INT, line 536 ORA-25254: time-out in LISTEN while waiting for a message ORA-06512: at SYS.DBMS_DATAPUMP, line 2772 ORA-06512: at SYS.DBMS_DATAPUMP, line 3886 ORA-06512: at line 1 Conteúdo do arquivo de parâmetros: CONTENT=ALL DIRECTORY=dmpdir DUMPFILE=expdp_full_prd_%u.dmp FLASHBACK_TIME=to_timestamp(to_char(sysdate,'-mm-dd hh24:mi:ss'),'-mm-dd hh24:mi:ss') FULL=Y JOB_NAME=expdp_full_prd LOGFILE=expdp_full_prd.log EXCLUDE=STATISTICS FILESIZE=8G Fiz testes com o full e também por schema. Verifiquei que todos os componentes do banco de dados estão válidos. Segui a nota do metalink How To Cleanup Orphaned DataPump Jobs In DBA_DATAPUMP_JOBS ? [ID 336014.1]. Enfim, acredito ter feito a lição de casa, porem, não encontro resolução para este problema. Estou precisando migrar dois bancos de dados (LNX -- AIX) , que são grandes, e via exp/imp convencional está demorando muito, espero que possam me ajudar. Sei que posso utilizar outras formas de migração (RMAN convert + TTS), mas o cliente espera que os objetos sejam reorganizados, por isto o datapump me ajudaria bastante. OBS: o datapump via rede (dblink) funciona, mas, demora muito para executar. -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problemas com o Datapump
Complementado, encontrei os seguintes erros no trace do DM0: upprdp: Error 1422 detected in master process DM00. OPIRIP: Uncaught error 447. Error stack: ORA-00447: fatal error in background process ORA-31666: Master process DM00 had an unhandled exception. ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at SYS.KUPM$MCP, line 6115 ORA-06512: at SYS.KUPM$MCP, line 11587 ORA-06512: at SYS.KUPM$MCP, line 11520 ORA-06512: at SYS.KUPM$MCP, line 11338 ORA-06512: at SYS.KUPM$MCP, line 925 ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at line 2 -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist From: Régis Pradela pradel...@yahoo.com.br Reply-To: oracle_br@yahoogrupos.com.br Date: segunda-feira, 11 de fevereiro de 2013 16:12 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Problemas com o Datapump Senhores, boa tarde! Estou enfrentando alguns problemas utilizado o Datapump, gostaria de saber se já viu este problema: == Ambiente: Virtualizado com Oracle VM SO: Oracle Enterprise Linux 5.2 RAC 10.2.0.4 RDBMS 10.2.0.4 Ao iniciar o export do banco de dados o seguinte erro é encontrado: [oracle@prd migra]$ expdp system/xxx parfile=expdp.par Export: Release 10.2.0.4.0 - 64bit Production on Monday, 11 February, 2013 16:03:28 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production With the Real Application Clusters option Starting SYSTEM.SYS_EXPORT_SCHEMA_01: system/ parfile=expdp.par Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA UDE-8: operation generated ORACLE error 31626 ORA-31626: job does not exist ORA-06512: at SYS.KUPC$QUE_INT, line 536 ORA-25254: time-out in LISTEN while waiting for a message ORA-06512: at SYS.DBMS_DATAPUMP, line 2772 ORA-06512: at SYS.DBMS_DATAPUMP, line 3886 ORA-06512: at line 1 Conteúdo do arquivo de parâmetros: CONTENT=ALL DIRECTORY=dmpdir DUMPFILE=expdp_full_prd_%u.dmp FLASHBACK_TIME=to_timestamp(to_char(sysdate,'-mm-dd hh24:mi:ss'),'-mm-dd hh24:mi:ss') FULL=Y JOB_NAME=expdp_full_prd LOGFILE=expdp_full_prd.log EXCLUDE=STATISTICS FILESIZE=8G Fiz testes com o full e também por schema. Verifiquei que todos os componentes do banco de dados estão válidos. Segui a nota do metalink How To Cleanup Orphaned DataPump Jobs In DBA_DATAPUMP_JOBS ? [ID 336014.1]. Enfim, acredito ter feito a lição de casa, porem, não encontro resolução para este problema. Estou precisando migrar dois bancos de dados (LNX -- AIX) , que são grandes, e via exp/imp convencional está demorando muito, espero que possam me ajudar. Sei que posso utilizar outras formas de migração (RMAN convert + TTS), mas o cliente espera que os objetos sejam reorganizados, por isto o datapump me ajudaria bastante. OBS: o datapump via rede (dblink) funciona, mas, demora muito para executar. -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Problemas com o Datapump
Colega, muito provavelmente é bug Reconhecido : aqui no Grupo mesmo http://br.groups.yahoo.com/group/oracle_br/message/111598 mostra um caso aonde apareceu esse comportamento em 10.2.0.4, e http://arjudba.blogspot.com.br/2010/12/datapump-export-expdp-client-gets-ude-8.html também Veja a nota metalink referente e experimente aplicar o patchset 10.2.0.5 ao menos, esse cara corrigiu um caminhão de bugs referentes à datapump, Enormes chances desse daí estar listado nas correções do 10.2.0.5 também... Especificamente sobre performance, um outro ponto é que DE FORMA ALGUMA vc pode esperar meter um FULL=Y (o que IMPLICA ter apenas UMA sessão de exportação, além de exportar INCLUSIVE schemas eventualmente desnecessários) e esperar ter a máxima performance, okdoc ? PARALELISMO é o nome do jogo quando se fala de exportação em grandes volumes... Da mesma forma, para que vc está especificando um FLASHBACK_TIME ?? Via de regra, se vc vai fazer uma migração, isso é uma operação PLANEJADA, em que há uma Janela de Manutenção sem usuários ativos, sim ? Além disso eu recomendo (tanto na tentativa de melhorar performance quanto de tentar work-aroundar os bugs) que vc considere os pontos abaixo, COM A RESSALVA que tanto a quantidade de RAM a alocar, quanto o número de sessões de exportação simultâneas, quanto a qtdade de Parallelismo nos SQLs do datapump não podem ser NEM demasiados, sob pena de vc criar gargalos, nem inexistentes ou muito pequenas - alguma experimentação no SEU ambiente, com o SEU hardware, deve ser esclarecedora : - quando vc vc fazer o paralelismo de execução (ie, ter Múltiplas sessões de exportação simultâneas, cada qual fazendo um schema, talvez), tente NÃO usar o nome de arquivo com variável(como auquela %u) - tente usar nomes FIXOS , para tudo (dump files, logs, diretórios, Tudo) - não informe o nome de job - NÃO exporte índices e constraints, pois além de causarem mais I/Os eles podem causar má-performance se importados : é MUITO mais eficiente vc exportar APENAS e TÃO SOMENTE os dados, os importar, depois exportar o DDL de índices e constraints, e finalmente alterar esses DDLs para que eles possam ser Aplicados no banco-destino em modo PARALLEL DDL, com NOVALIDATE/NOLOGGING, cfrme necessário - use os parâmetros adequados para performance : no caso do datapump, principalmente PARALLEL (qtdade de paralelismo nos SQLs) e ajustes de banco (como aumento temporário de PGA e SGA, alocação de LARGE POOL, colocação de tabelas em modo NOLOGGING para permitir a IMPORTAÇÃO em direct-mode, etc), E no caso do exp tradicional principalmente é usar DIRECT=Y BUFFER=qtdade em bytes que vc VAI ter com certeza livre RECORDLENGTH=65535 10485760 , além das opções de Exclusão correspondentes... == Aliás, antes de descartar o exp tradicional, PLZ faça um teste JUSTO, colocando as opções de performance como necessário, para ver se Realmente o exp não serviria... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Régis Pradela escreveu Senhores, boa tarde! Estou enfrentando alguns problemas utilizado o Datapump, gostaria de saber se já viu este problema: == Ambiente: Virtualizado com Oracle VM SO: Oracle Enterprise Linux 5.2 RAC 10.2.0.4 RDBMS 10.2.0.4 Ao iniciar o export do banco de dados o seguinte erro é encontrado: [oracle@prd migra]$ expdp system/xxx parfile=expdp.par Export: Release 10.2.0.4.0 - 64bit Production on Monday, 11 February, 2013 16:03:28 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production With the Real Application Clusters option Starting SYSTEM.SYS_EXPORT_SCHEMA_01: system/ parfile=expdp.par Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA UDE-8: operation generated ORACLE error 31626 ORA-31626: job does not exist ORA-06512: at SYS.KUPC$QUE_INT, line 536 ORA-25254: time-out in LISTEN while waiting for a message ORA-06512: at SYS.DBMS_DATAPUMP, line 2772 ORA-06512: at SYS.DBMS_DATAPUMP, line 3886 ORA-06512: at line 1 Conteúdo do arquivo de parâmetros: CONTENT=ALL DIRECTORY=dmpdir DUMPFILE=expdp_full_prd_%u.dmp FLASHBACK_TIME=to_timestamp(to_char(sysdate,'-mm-dd hh24:mi:ss'),'-mm-dd hh24:mi:ss') FULL=Y JOB_NAME=expdp_full_prd LOGFILE=expdp_full_prd.log EXCLUDE=STATISTICS FILESIZE=8G Fiz testes com o full e também por schema. Verifiquei que todos os componentes do banco de dados estão válidos. Segui a nota do metalink How To Cleanup Orphaned DataPump Jobs In DBA_DATAPUMP_JOBS ? [ID 336014.1]. Enfim, acredito ter feito a lição de casa, porem, não encontro resolução para este problema. Estou precisando migrar dois bancos de dados (LNX -- AIX) , que são grandes, e via exp/imp convencional está demorando muito, espero que
RE: [oracle_br] Re: Duvida
Caros o jeito certo de declarar as variáveis seria a assim: L_NVFRASE VARCHAR2(240) := 'Digite uma Frase.';L_NVFRASE_TEST VARCHAR2(240);L_NVFRASE_NOVOVARCHAR2(240);L_NVQBR_LINHA VARCAHR2(240);L_NVALOR_NOVO VARCAHR2(240);L_NTESTE_QBR VARCAHR2(240);L_NFRA_CERT VARCAHR2(240);L_NFRASE VARCAHR2(240);L_NVFRASE_TEST1VARCHAR2(240); To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:44:04 -0200 Subject: Re: [oracle_br] Re: Duvida Aí embaixo está o teu programa, devidamente formatado - coisa que disse para que tu fizesse para enxergar melhor. O que está de errado aí: - declaração de variáveis errada. Não me refiro ao tipo de dados, mas como ele está escrito. Se procura na documentação que o Chiappa passou antes, vai ver os tipos de dados que o Oracle tem; - tem : no lugar ;. Isso gera erro e o teu programa não vai executa; - o primeiro IF tá estranho. O IF serve para comparar valores e decidir o quê irá fazer. Nesse caso ele não está fazendo isso, além de faltar coisa. DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.'; L_VFRASE_TEST VARCHAR2(240); L_VFRASE_NOVO VARCHAR2(240); L_VQBR_LINHA VARCAHR2(240); L_VALOR_NOVO VARCAHR2(240); L_TESTE_QBR VARCAHR2(240); L_FRA_CERTVARCAHR2(240); L_FRASE VARCAHR2(240); L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOP IF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); L_VFRASE := INSTR( L_VFRASE,' '); L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST; L_VFRASE_TEST := 0; L_VQBRLINHA := L_VFRASE + L_valor_novo; L_VQBRLINHA := -1; L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo); L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF: dbms_output.put_line(L_VFRASE); dbms_output.put_line (L_TESTE_QBR); dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END IF; END LOOP: END; Quando passar um código para que seja analisado, tenta sempre passar assim, pois fica mais fácil para o pessoal entender. Muitas vezes nem precisarão colocar em um editor para ver onde está o problema, podendo fazer isso no e-mail mesmo. []´s Roberto Em 11 de fevereiro de 2013 15:21, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Alguém pode validar novamente para me onde pode estar errado?DECLARE L_VFRASE VARCHAR2(240) := 'Digite uma Frase.'; L_VFRASE_TEST VARCHAR2(240); L_VFRASE_NOVO VARCHAR2(240); L_VQBR_LINHA VARCAHR2(240); L_VALOR_NOVO VARCAHR2(240); L_TESTE_QBR VARCAHR2(240); L_FRA_CERTVARCAHR2(240); L_FRASE VARCAHR2(240); L_VFRASE_TEST1VARCHAR2(240); BEGIN FOR L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); L_VFRASE := INSTR( L_VFRASE,' '); L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST; L_VFRASE_TEST := 0; L_VQBRLINHA := L_VFRASE + L_valor_novo; L_VQBRLINHA := -1; L_TESTE_QBR := SUBSTR(L_FRA_CERT,L_valor_novo); L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO + LENGTH(L_FRA_CERT)); IF L_VQBRLINHA 10 then L_L_TESTE_QBR := (CONCAT(L_VFRASE_TEST1,''),L_TESTE_QBR); END IF:dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE); dbms_output.put_line(L_VQBRLINHA); END IF; END LOOP:END;To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:12:04 -0200 Subject: Re: [oracle_br] Re: Duvida Não te direi diretamente. Olha o teu código e vai ver que o tipo de dado está correto, mas a escrita está errada. Como eu disse, tem que analisar o código para ir descobrindo os erros. Desse jeito, irá aprender. []´s Roberto Em 11 de fevereiro de 2013 15:08, gabriel Tomaz gabriel_tom...@hotmail.comescreveu: Valeu pela dica. Mas sabe informar qual tipo de dados seria essas minhas variáveis ? To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 15:04:13 -0200 Subject: Re: [oracle_br] Re: Duvida
Re: [oracle_br] Re: Problemas com o Datapump
Chiappa, boa tarde! Muito obrigado pela resposta, mas o bug indiciado nos links são diferentes do que enviei, vide mensagem de erro. Quanto a parte de paralelismo, infelizmente não é um ambiente EE, sendo assim, vou implementar o mesmo na unha, como tenho diversos schemas no banco de dados, vou quebrar em diversos processos de exp/imp, por schema. Quanto ao flashback_time, estou utilizando pois como estou montando uma homologação do ambiente, o atual produção está sendo utilizado e não posso para-lo agora, durante a migração não estarei utilizando este parâmetro. Porem, tenho boas noticias, acabei de encontrar um solução de contorno, em um forum chinês (god bless google translate!!) encontrei um usuário com o mesmo erro e dizendo algo do tipo, após ajustar o otimizador, o problema foi sanado, pois bem, este banco trabalha com o otimizador em modo regra, sendo assim, mudei o otimizador para custo, e o problema foi sanado. Como a aplicação recomenda utilizar modo regra, fiz uma trigger para alterar sempre que for uma sessão do datapump. Grande abs. -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist From: J. Laurindo Chiappa jlchia...@yahoo.com.br Reply-To: oracle_br@yahoogrupos.com.br Date: segunda-feira, 11 de fevereiro de 2013 16:55 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Problemas com o Datapump Colega, muito provavelmente é bug Reconhecido : aqui no Grupo mesmo http://br.groups.yahoo.com/group/oracle_br/message/111598 mostra um caso aonde apareceu esse comportamento em 10.2.0.4, e http://arjudba.blogspot.com.br/2010/12/datapump-export-expdp-client-gets-ude -8.html também Veja a nota metalink referente e experimente aplicar o patchset 10.2.0.5 ao menos, esse cara corrigiu um caminhão de bugs referentes à datapump, Enormes chances desse daí estar listado nas correções do 10.2.0.5 também... Especificamente sobre performance, um outro ponto é que DE FORMA ALGUMA vc pode esperar meter um FULL=Y (o que IMPLICA ter apenas UMA sessão de exportação, além de exportar INCLUSIVE schemas eventualmente desnecessários) e esperar ter a máxima performance, okdoc ? PARALELISMO é o nome do jogo quando se fala de exportação em grandes volumes... Da mesma forma, para que vc está especificando um FLASHBACK_TIME ?? Via de regra, se vc vai fazer uma migração, isso é uma operação PLANEJADA, em que há uma Janela de Manutenção sem usuários ativos, sim ? Além disso eu recomendo (tanto na tentativa de melhorar performance quanto de tentar work-aroundar os bugs) que vc considere os pontos abaixo, COM A RESSALVA que tanto a quantidade de RAM a alocar, quanto o número de sessões de exportação simultâneas, quanto a qtdade de Parallelismo nos SQLs do datapump não podem ser NEM demasiados, sob pena de vc criar gargalos, nem inexistentes ou muito pequenas - alguma experimentação no SEU ambiente, com o SEU hardware, deve ser esclarecedora : - quando vc vc fazer o paralelismo de execução (ie, ter Múltiplas sessões de exportação simultâneas, cada qual fazendo um schema, talvez), tente NÃO usar o nome de arquivo com variável(como auquela %u) - tente usar nomes FIXOS , para tudo (dump files, logs, diretórios, Tudo) - não informe o nome de job - NÃO exporte índices e constraints, pois além de causarem mais I/Os eles podem causar má-performance se importados : é MUITO mais eficiente vc exportar APENAS e TÃO SOMENTE os dados, os importar, depois exportar o DDL de índices e constraints, e finalmente alterar esses DDLs para que eles possam ser Aplicados no banco-destino em modo PARALLEL DDL, com NOVALIDATE/NOLOGGING, cfrme necessário - use os parâmetros adequados para performance : no caso do datapump, principalmente PARALLEL (qtdade de paralelismo nos SQLs) e ajustes de banco (como aumento temporário de PGA e SGA, alocação de LARGE POOL, colocação de tabelas em modo NOLOGGING para permitir a IMPORTAÇÃO em direct-mode, etc), E no caso do exp tradicional principalmente é usar DIRECT=Y BUFFER=qtdade em bytes que vc VAI ter com certeza livre RECORDLENGTH=65535 10485760 , além das opções de Exclusão correspondentes... == Aliás, antes de descartar o exp tradicional, PLZ faça um teste JUSTO, colocando as opções de performance como necessário, para ver se Realmente o exp não serviria... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Régis Pradela escreveu Senhores, boa tarde! Estou enfrentando alguns problemas utilizado o Datapump, gostaria de saber se já viu este problema: == Ambiente: Virtualizado com Oracle VM SO: Oracle Enterprise Linux 5.2 RAC 10.2.0.4 RDBMS
[oracle_br] Re: Problemas com o Datapump
Sobre o work-around, eu realmente ** jamais ** adivinharia , até porque vc Não Disse que era um banco usando o (obsoleto e não-Suportado no 10g) modo regra... Sobre o FLASHBACK, como eu disse, será que REALMENTE não teria uma janela para vc fazer o export ? Pois SQL por SCN ** tem ** o seu preço para performance, e não é desprezível, dependendo da carga/nível de utilização... Da mesma maneira, vc não disse que era banco não-EE, então paralelismo de SQL realmente tá fora... NÂO DEIXE de experimentar/testar as Outras opções de performance que citei, porém, BEM COMO de mensurar a performance do exp (bem-ajustado com todos os parãmetros que citei, etc) contra o expdp - teste AMBOS via exportação do mesmo schema (só dados, sem constraints/índices/nada), e veja o que vai ver... Finalmente : o objetivo aqui quando eu falo de quebrar a exportação (talvez por schema) é, além do fato de vc EVITAR exportar schemas presentes no seu banco mas irrelevantes para a aplicação (exemplo, schema de intermedia/text, schemas-exemplos, schemas internos como o SYSTEM, etc, e´como eu disse, vc ter múltiplas sessões fazendo exportação : o busílis é que se vc tiver uma sessão só, no momento em que ela começa a fazer a exportação de um objeto grande, só quando essa exportação terminar é que o próximo objeto é exportado - é MUITO mais eficiente vc ter outras sessões de exportação exportando outros objetos menores enquanto o grande está sendo cuidado por outra... O ponto a notar é que eu estou Imaginando que mais ou menos as tabelas grandes estao distribuídas pelos schemas : caso haja um schema especial que contenha quase todas as tabelas grandes, talvez seja mais eficiente vc ter uma sessão de export exportando a tabela grande A, outra exportando a tabela grande B, outra exportando a tabela grande C, e umas outras duas sessões, talvez, exportando os schemas que só tem tabelas pequenas O teu objetivo aqui é usar a capacidade do subsistema de I/O no máximo possível, sim ? POR ISSO também que seria muito, mas MUITO mesmo, recomendável vc fazer esse export numa janela de manutenção, EVITANDO concorrência com usuários, okdoc ? SE vc não tiver DE JEITO NENHUM uma janela de manutenção, aí vc VAI pagar o preço do FLASHBACK (ou do CONSISTENT=Y no exp tradicional), VAI pagar o preço de não ter todaa capacidade de I/O para vc, VAI pagar o preço de ter que ficar indo atrás de bloco de rollback/undo (se houver DML concorrente com os dados a exportar), não tem milagres... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Régis Pradela escreveu Chiappa, boa tarde! Muito obrigado pela resposta, mas o bug indiciado nos links são diferentes do que enviei, vide mensagem de erro. Quanto a parte de paralelismo, infelizmente não é um ambiente EE, sendo assim, vou implementar o mesmo na unha, como tenho diversos schemas no banco de dados, vou quebrar em diversos processos de exp/imp, por schema. Quanto ao flashback_time, estou utilizando pois como estou montando uma homologação do ambiente, o atual produção está sendo utilizado e não posso para-lo agora, durante a migração não estarei utilizando este parâmetro. Porem, tenho boas noticias, acabei de encontrar um solução de contorno, em um forum chinês (god bless google translate!!) encontrei um usuário com o mesmo erro e dizendo algo do tipo, após ajustar o otimizador, o problema foi sanado, pois bem, este banco trabalha com o otimizador em modo regra, sendo assim, mudei o otimizador para custo, e o problema foi sanado. Como a aplicação recomenda utilizar modo regra, fiz uma trigger para alterar sempre que for uma sessão do datapump. Grande abs. -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist From: J. Laurindo Chiappa Reply-To: Date: segunda-feira, 11 de fevereiro de 2013 16:55 To: Subject: [oracle_br] Re: Problemas com o Datapump Colega, muito provavelmente é bug Reconhecido : aqui no Grupo mesmo http://br.groups.yahoo.com/group/oracle_br/message/111598 mostra um caso aonde apareceu esse comportamento em 10.2.0.4, e http://arjudba.blogspot.com.br/2010/12/datapump-export-expdp-client-gets-ude -8.html também Veja a nota metalink referente e experimente aplicar o patchset 10.2.0.5 ao menos, esse cara corrigiu um caminhão de bugs referentes à datapump, Enormes chances desse daí estar listado nas correções do 10.2.0.5 também... Especificamente sobre performance, um outro ponto é que DE FORMA ALGUMA vc pode esperar meter um FULL=Y (o que IMPLICA ter apenas UMA sessão de
Re: [oracle_br] Re: Problemas com o Datapump
Chiappa, Sim, eu realmente falhei em não especificar estas informações. Quanto ao modo regra, eu também havia me esquecido, e como trabalho em consultoria, trabalho com muitos bancos, e neste caso este ponto acabou passando desapercebido, apenas ao ler o forum que lembrei deste ponto. Eu terei uma janela para o GO Live, onde poderei parar os bancos, mas por enquanto, para homologação, terei que me contentar com o flashback. Estou fazendo o export full, porem, durante o import estou levando apenas os schemas que preciso. No caso deste ambiente, 2 schemas detém 50% do tamanho do bd, então quebrei em 4 processos, 1 para cada schema grande o outros dois para os schemas menores. Grato pelas dicas! Grande abs. -- R.P. DBA Oracle Blog: www.rpradela.com.br Oracle Database 11g Administrator Certified Professional Oracle Database 11g Administrator Certified Associate Oracle Database 10g Real Applications Clusters Administrator Certified Expert (OCE) Oracle Enterprise Linux Certified Implementation Specialist (OCE) Oracle Database 11g Data Warehousing Certified Implementation Specialist Oracle Exadata 11g Certified Implementation Specialist From: J. Laurindo Chiappa jlchia...@yahoo.com.br Reply-To: oracle_br@yahoogrupos.com.br Date: segunda-feira, 11 de fevereiro de 2013 18:49 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Problemas com o Datapump Sobre o work-around, eu realmente ** jamais ** adivinharia , até porque vc Não Disse que era um banco usando o (obsoleto e não-Suportado no 10g) modo regra... Sobre o FLASHBACK, como eu disse, será que REALMENTE não teria uma janela para vc fazer o export ? Pois SQL por SCN ** tem ** o seu preço para performance, e não é desprezível, dependendo da carga/nível de utilização... Da mesma maneira, vc não disse que era banco não-EE, então paralelismo de SQL realmente tá fora... NÂO DEIXE de experimentar/testar as Outras opções de performance que citei, porém, BEM COMO de mensurar a performance do exp (bem-ajustado com todos os parãmetros que citei, etc) contra o expdp - teste AMBOS via exportação do mesmo schema (só dados, sem constraints/índices/nada), e veja o que vai ver... Finalmente : o objetivo aqui quando eu falo de quebrar a exportação (talvez por schema) é, além do fato de vc EVITAR exportar schemas presentes no seu banco mas irrelevantes para a aplicação (exemplo, schema de intermedia/text, schemas-exemplos, schemas internos como o SYSTEM, etc, e´como eu disse, vc ter múltiplas sessões fazendo exportação : o busílis é que se vc tiver uma sessão só, no momento em que ela começa a fazer a exportação de um objeto grande, só quando essa exportação terminar é que o próximo objeto é exportado - é MUITO mais eficiente vc ter outras sessões de exportação exportando outros objetos menores enquanto o grande está sendo cuidado por outra... O ponto a notar é que eu estou Imaginando que mais ou menos as tabelas grandes estao distribuídas pelos schemas : caso haja um schema especial que contenha quase todas as tabelas grandes, talvez seja mais eficiente vc ter uma sessão de export exportando a tabela grande A, outra exportando a tabela grande B, outra exportando a tabela grande C, e umas outras duas sessões, talvez, exportando os schemas que só tem tabelas pequenas O teu objetivo aqui é usar a capacidade do subsistema de I/O no máximo possível, sim ? POR ISSO também que seria muito, mas MUITO mesmo, recomendável vc fazer esse export numa janela de manutenção, EVITANDO concorrência com usuários, okdoc ? SE vc não tiver DE JEITO NENHUM uma janela de manutenção, aí vc VAI pagar o preço do FLASHBACK (ou do CONSISTENT=Y no exp tradicional), VAI pagar o preço de não ter todaa capacidade de I/O para vc, VAI pagar o preço de ter que ficar indo atrás de bloco de rollback/undo (se houver DML concorrente com os dados a exportar), não tem milagres... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Régis Pradela escreveu Chiappa, boa tarde! Muito obrigado pela resposta, mas o bug indiciado nos links são diferentes do que enviei, vide mensagem de erro. Quanto a parte de paralelismo, infelizmente não é um ambiente EE, sendo assim, vou implementar o mesmo na unha, como tenho diversos schemas no banco de dados, vou quebrar em diversos processos de exp/imp, por schema. Quanto ao flashback_time, estou utilizando pois como estou montando uma homologação do ambiente, o atual produção está sendo utilizado e não posso para-lo agora, durante a migração não estarei utilizando este parâmetro. Porem, tenho boas noticias, acabei de encontrar um solução de contorno, em um forum chinês (god bless google translate!!) encontrei um usuário com o mesmo erro e dizendo algo do tipo, após ajustar o otimizador, o problema foi sanado, pois bem, este banco trabalha com o otimizador em modo regra, sendo assim, mudei o otimizador para custo, e o problema foi sanado. Como a aplicação recomenda utilizar modo
[oracle_br] criar job em outro schema
Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSECOND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END;
[oracle_br] Re: criar job em outro schema
Bom, o manual correspondente (Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)) no cap. 128 - DBMS_SCHEDULER diz que : Usage Notes To create a job in your own schema, you need to have the CREATE JOB privilege. A user with the CREATE ANY JOB privilege can create a job in any schema. If the job being created will reside in another schema, the job name must be qualified with the schema name. ... Então eu imagino que é possível, MAS sinceramente nunca usei : se vc é só o DBA (e por isso só tem um usuário DBA, e não sabe a senha do usuário-dono dos objetos da Aplicação, até para haver algum tipo de SEPARAÇÂO DE RESPONSABILIDADES) não faz sentido vc sair criando seja o que for no schema da Aplicação (que imagino ser o seu caso) - teria que ser o responsável pela Aplicação a fazer isso []s Chiappa --- Em oracle_br@yahoogrupos.com.br, netodba escreveu Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSECOND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END;
Re: [oracle_br] Re: Duvida
Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br From: ro.wars...@gmail.com mailto:ro.warstat%40gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: criar job em outro schema
Vlw Chiappa, no caso eu estou migrando uma base, e esse job nao migrou legal. Por isso que eu queria criar na mão. Mas te entendi vlw. --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa escreveu Bom, o manual correspondente (Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)) no cap. 128 - DBMS_SCHEDULER diz que : Usage Notes To create a job in your own schema, you need to have the CREATE JOB privilege. A user with the CREATE ANY JOB privilege can create a job in any schema. If the job being created will reside in another schema, the job name must be qualified with the schema name. ... Então eu imagino que é possível, MAS sinceramente nunca usei : se vc é só o DBA (e por isso só tem um usuário DBA, e não sabe a senha do usuário-dono dos objetos da Aplicação, até para haver algum tipo de SEPARAÇÂO DE RESPONSABILIDADES) não faz sentido vc sair criando seja o que for no schema da Aplicação (que imagino ser o seu caso) - teria que ser o responsável pela Aplicação a fazer isso []s Chiappa --- Em oracle_br@yahoogrupos.com.br, netodba escreveu Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSECOND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END;
RE: [oracle_br] Re: Duvida
Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [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 * 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: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Re: Duvida
Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [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]
Re: [oracle_br] Re: Duvida
Gabriel, Coloca todo o teu código modificado. Só uma parte é difícil, pois não sabemos o quê foi substituído pelo quê. []´s Roberto Em 11/02/2013 22:35, gabriel Tomaz escreveu: Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br From: gabriel_tom...@hotmail.com mailto:gabriel_tomazc%40hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br From: ro.wars...@gmail.com mailto:ro.warstat%40gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br From: ro.wars...@gmail.com mailto:ro.warstat%40gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Re: Duvida
A alteração que fiz para contorna o erro não sortiu efeito . Peso ajuda. Segue código DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TESTVARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCHAR2(240);L_VALOR_NOVO VARCHAR2(240);L_TESTE_QBR VARCHAR2(240);L_FRA_CERT VARCHAR2(240);L_FRASE VARCHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);L_cont VARCHAR2(240); BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 22:51:19 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, Coloca todo o teu código modificado. Só uma parte é difícil, pois não sabemos o quê foi substituído pelo quê. []´s Roberto Em 11/02/2013 22:35, gabriel Tomaz escreveu: Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [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/
Re: [oracle_br] Re: Duvida
Gabriel, dei uma olhada no seu código e vi que você está cometendo erros muito básicos de programação: IF sem condição... WHILE sem pé nem cabeça... e infinito... Inicializando uma variável com texto, depois jogando valores numéricos por cima... Acho que você deveria dar uma estudada no básico antes de começar a escrever código... Pode até brincar no código, mas antes de perguntar em um grupo na Internet, deveria no mínimo dar uma pesquisada/estudada... e só perguntar se não conseguir mais andar para nenhum lado! Tem erros muito básicos aí... Peguei seu código, dei uma formatada e coloquei alguns comentários, pode pegar no link abaixo: https://dl.dropbox.com/u/6848776/query_gabriel.sql Att, -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [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] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse:
Re: [oracle_br] Re: criar job em outro schema
Olá Pessoal, Vou dar um palpite : Como o Neto usou a palavra migração, imagino que já aconteceu e precisa completar, levando o que existia num schema para outro schema em outra instance talvez. O que acha de usar dbms_metadata para extrair os jobs no schema source e criar manualmente no destino exatamente como ele existia ? dá certo? Espero ter ajudado. Att Eriovaldo 2013/2/11 netodba neto.lon...@gmail.com ** Vlw Chiappa, no caso eu estou migrando uma base, e esse job nao migrou legal. Por isso que eu queria criar na mão. Mas te entendi vlw. --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa escreveu Bom, o manual correspondente (Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)) no cap. 128 - DBMS_SCHEDULER diz que : Usage Notes To create a job in your own schema, you need to have the CREATE JOB privilege. A user with the CREATE ANY JOB privilege can create a job in any schema. If the job being created will reside in another schema, the job name must be qualified with the schema name. ... Então eu imagino que é possível, MAS sinceramente nunca usei : se vc é só o DBA (e por isso só tem um usuário DBA, e não sabe a senha do usuário-dono dos objetos da Aplicação, até para haver algum tipo de SEPARAÇÂO DE RESPONSABILIDADES) não faz sentido vc sair criando seja o que for no schema da Aplicação (que imagino ser o seu caso) - teria que ser o responsável pela Aplicação a fazer isso []s Chiappa --- Em oracle_br@yahoogrupos.com.br, netodba escreveu Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSECOND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END; [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 * 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: oracle_br-unsubscr...@yahoogrupos.com.br * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Re: Duvida
Obrigado pela ajuda pessoal estou apenas estudando e fazendo alguns exercícios.Mas valeu pelas dicas vou me aprimorar mais meu SQL e minha logica.Mas nesse caso como ficaria a resolução desse exercício? To: oracle_br@yahoogrupos.com.br From: eduardo.schu...@gmail.com Date: Mon, 11 Feb 2013 23:19:22 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, dei uma olhada no seu código e vi que você está cometendo erros muito básicos de programação: IF sem condição... WHILE sem pé nem cabeça... e infinito... Inicializando uma variável com texto, depois jogando valores numéricos por cima... Acho que você deveria dar uma estudada no básico antes de começar a escrever código... Pode até brincar no código, mas antes de perguntar em um grupo na Internet, deveria no mínimo dar uma pesquisada/estudada... e só perguntar se não conseguir mais andar para nenhum lado! Tem erros muito básicos aí... Peguei seu código, dei uma formatada e coloquei alguns comentários, pode pegar no link abaixo: https://dl.dropbox.com/u/6848776/query_gabriel.sql Att, -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [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 »
Re: [oracle_br] Re: Duvida
Consegue mandar seu código FORMATADO com comentários seus nos principais pontos, explicando-os? -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Obrigado pela ajuda pessoal estou apenas estudando e fazendo alguns exercícios.Mas valeu pelas dicas vou me aprimorar mais meu SQL e minha logica.Mas nesse caso como ficaria a resolução desse exercício? To: oracle_br@yahoogrupos.com.br From: eduardo.schu...@gmail.com Date: Mon, 11 Feb 2013 23:19:22 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, dei uma olhada no seu código e vi que você está cometendo erros muito básicos de programação: IF sem condição... WHILE sem pé nem cabeça... e infinito... Inicializando uma variável com texto, depois jogando valores numéricos por cima... Acho que você deveria dar uma estudada no básico antes de começar a escrever código... Pode até brincar no código, mas antes de perguntar em um grupo na Internet, deveria no mínimo dar uma pesquisada/estudada... e só perguntar se não conseguir mais andar para nenhum lado! Tem erros muito básicos aí... Peguei seu código, dei uma formatada e coloquei alguns comentários, pode pegar no link abaixo: https://dl.dropbox.com/u/6848776/query_gabriel.sql Att, -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Duvida
Sim. -Original Message- From: Eduardo Schurtz Sent: 12 Feb 2013 01:56:37 GMT To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Re: Duvida Consegue mandar seu código FORMATADO com comentários seus nos principais pontos, explicando-os? -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Obrigado pela ajuda pessoal estou apenas estudando e fazendo alguns exercícios.Mas valeu pelas dicas vou me aprimorar mais meu SQL e minha logica.Mas nesse caso como ficaria a resolução desse exercício? To: oracle_br@yahoogrupos.com.br From: eduardo.schu...@gmail.com Date: Mon, 11 Feb 2013 23:19:22 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, dei uma olhada no seu código e vi que você está cometendo erros muito básicos de programação: IF sem condição... WHILE sem pé nem cabeça... e infinito... Inicializando uma variável com texto, depois jogando valores numéricos por cima... Acho que você deveria dar uma estudada no básico antes de começar a escrever código... Pode até brincar no código, mas antes de perguntar em um grupo na Internet, deveria no mínimo dar uma pesquisada/estudada... e só perguntar se não conseguir mais andar para nenhum lado! Tem erros muito básicos aí... Peguei seu código, dei uma formatada e coloquei alguns comentários, pode pegar no link abaixo: https://dl.dropbox.com/u/6848776/query_gabriel.sql Att, -- Eduardo Schurtz 2013/2/11 gabriel Tomaz gabriel_tom...@hotmail.com ** Uma das alterações que fiz foi colocar um while mas também não deu certo, se alguém pode ajudar BEGINWHILE L_cont Length(L_VFRASE)+ 100 LOOPDBMS_OUTPUT.put_line('Frase é maior que 100 caracteres'); WHILE L_VFRASE 100 LOOPIF L_VFRASE := INSTR( L_VFRASE,' '); To: oracle_br@yahoogrupos.com.br From: gabriel_tom...@hotmail.com Date: Tue, 12 Feb 2013 00:20:08 + Subject: RE: [oracle_br] Re: Duvida Eu fiz algumas alterações no codigo mas não deu certo.Se alguém pode me ajudar O erro que aparece e o mesmo. To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 21:02:32 -0200 Subject: Re: [oracle_br] Re: Duvida Como eu havia falado em alguma mensagem lá atrás, o IF serve para testar valores e decidir qual caminho a ser seguido. Sugiro que procure pela documentação sobre IF e ajuste esse que está erro. Nota que o segundo IF que tu fez está certo. []´s Roberto Em 11/02/2013 20:56, gabriel Tomaz escreveu: O erro estar dando no Primeiro IF onde estar em negrito. O erro e o seguinte: ORA-06550:linha 15, coluna 61:PLS-00103: Encontrato o símbolo; quando um dos seguites símbolos era esperado: .(*%_=-+/ at is mod remainder not rem then or!+=or~===and or like like2_like4_likec_between||multiset member SUBMULTISET_ORA-06550:linha34,coluna5:PLS-00103:encontrado o símboloIF quando um dos seguintes símbolos esra esperado:loop DECLAREL_VFRASE VARCHAR2(240) := 'Digite uma Frase.';L_VFRASE_TEST VARCHAR2(240);L_VFRASE_NOVO VARCHAR2(240);L_VQBR_LINHA VARCAHAR2(240);L_VALOR_NOVO VARCAHAR2(240);L_TESTE_QBR VARCAHAR2(240);L_FRA_CERT VARCAHAR2(240);L_FRASE VARCAHAR2(240);L_VFRASE_TEST1 VARCHAR2(240);BEGINWHILE L_VFRASE 100 LOOPIF DBMS_OUTPUT.put_line('Frase é maior que 100 caracteres');L_VFRASE := INSTR( L_VFRASE,' ');L_VFRASE_TEST := L_VFRASE + L_VFRASE_TEST;L_VFRASE_TEST := 0;L_VQBRLINHA := L_VFRASE + L_valor_novo;L_VQBRLINHA := -1;L_TESTE_QBR := SUBSTR(NL_FRA_CERT,NL_valor_novo);L_FRASE := SUBSTR(L_FRA_CERT,L_VALOR_NOVO +LENGTH(L_FRA_CERT));IF L_VQBRLINHA 10 thenL_L_TESTE_QBR := CONCAT(concat(L_VFRASE_TEST1,''),L_TESTE_QBR);END IF;dbms_output.put_line(L_VFRASE);dbms_output.put_line (L_TESTE_QBR);dbms_output.put_line (L_FRASE);dbms_output.put_line(L_VQBRLINHA);END IF;END LOOP;END; To: oracle_br@yahoogrupos.com.br From: ro.wars...@gmail.com Date: Mon, 11 Feb 2013 20:37:04 -0200 Subject: Re: [oracle_br] Re: Duvida Gabriel, O grupo não aceita anexos. Cola o teu código aqui - FORMATADO - e coloca também a mensagem de erro. []´s Roberto [As partes desta mensagem que não continham texto foram
[oracle_br] Re: criar job em outro schema
Eriovaldo, eu ja usei a dbms_metadata pra extrair o ddl do job. Mas criar o job logado com usuario SYS, o mesmo vai ser o dono do objeto certo? Poisé, esse JOB tem que pertencer a outro schema, que era o schema original que ja foi importado na nova base de dados. Entendeu? Vlw --- Em oracle_br@yahoogrupos.com.br, Eriovaldo Andrietta escreveu Olá Pessoal, Vou dar um palpite : Como o Neto usou a palavra migração, imagino que já aconteceu e precisa completar, levando o que existia num schema para outro schema em outra instance talvez. O que acha de usar dbms_metadata para extrair os jobs no schema source e criar manualmente no destino exatamente como ele existia ? dá certo? Espero ter ajudado. Att Eriovaldo 2013/2/11 netodba ** Vlw Chiappa, no caso eu estou migrando uma base, e esse job nao migrou legal. Por isso que eu queria criar na mão. Mas te entendi vlw. --- Em oracle_br@yahoogrupos.com.br, J. Laurindo Chiappa escreveu Bom, o manual correspondente (Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)) no cap. 128 - DBMS_SCHEDULER diz que : Usage Notes To create a job in your own schema, you need to have the CREATE JOB privilege. A user with the CREATE ANY JOB privilege can create a job in any schema. If the job being created will reside in another schema, the job name must be qualified with the schema name. ... Então eu imagino que é possível, MAS sinceramente nunca usei : se vc é só o DBA (e por isso só tem um usuário DBA, e não sabe a senha do usuário-dono dos objetos da Aplicação, até para haver algum tipo de SEPARAÇÂO DE RESPONSABILIDADES) não faz sentido vc sair criando seja o que for no schema da Aplicação (que imagino ser o seu caso) - teria que ser o responsável pela Aplicação a fazer isso []s Chiappa --- Em oracle_br@yahoogrupos.com.br, netodba escreveu Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSECOND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END; [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Re: criar job em outro schema
Neto, já tentou usar ALTER SESSION SET CURRENT_SCHEMA ? Isto alteraria o current schema mas não o session user, não sei se resolveria o teu problema. Étore From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] On Behalf Of netodba Sent: terça-feira, 12 de fevereiro de 2013 00:12 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: criar job em outro schema Eriovaldo, eu ja usei a dbms_metadata pra extrair o ddl do job. Mas criar o job logado com usuario SYS, o mesmo vai ser o dono do objeto certo? Poisé, esse JOB tem que pertencer a outro schema, que era o schema original que ja foi importado na nova base de dados. Entendeu? Vlw --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Eriovaldo Andrietta escreveu Olá Pessoal, Vou dar um palpite : Como o Neto usou a palavra migração, imagino que já aconteceu e precisa completar, levando o que existia num schema para outro schema em outra instance talvez. O que acha de usar dbms_metadata para extrair os jobs no schema source e criar manualmente no destino exatamente como ele existia ? dá certo? Espero ter ajudado. Att Eriovaldo 2013/2/11 netodba ** Vlw Chiappa, no caso eu estou migrando uma base, e esse job nao migrou legal. Por isso que eu queria criar na mão. Mas te entendi vlw. --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , J. Laurindo Chiappa escreveu Bom, o manual correspondente (Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2)) no cap. 128 - DBMS_SCHEDULER diz que : Usage Notes To create a job in your own schema, you need to have the CREATE JOB privilege. A user with the CREATE ANY JOB privilege can create a job in any schema. If the job being created will reside in another schema, the job name must be qualified with the schema name. ... Então eu imagino que é possível, MAS sinceramente nunca usei : se vc é só o DBA (e por isso só tem um usuário DBA, e não sabe a senha do usuário-dono dos objetos da Aplicação, até para haver algum tipo de SEPARAÇÂO DE RESPONSABILIDADES) não faz sentido vc sair criando seja o que for no schema da Aplicação (que imagino ser o seu caso) - teria que ser o responsável pela Aplicação a fazer isso []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , netodba escreveu Pessoal, Oracle 11gR2. Estou logado como sys. Como eu faço pra criar esse job em outro schema, sem me logar no schema. BEGIN dbms_scheduler.create_job('OPTIMIZE_CTX_INDEXES', job_type='PLSQL_BLOCK', job_action= 'begin ctx_ddl.optimize_index (idx_name = ''EREVISTA.DESPACHO_CTX'', optlevel = ''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.AUTOTEXTO_CTX'', optlevel =''FULL''); ctx_ddl.optimize_index (idx_name = ''EREVISTA.BASES_JURIDICAS_CTX'', optlevel = ''FULL''); end;', number_of_arguments=0, start_date='30-AUG-07 11.00.00.00 PM -03:00', repeat_interval='FREQ=WEEKLY;INTERVAL=1;BYDAY=THU;BYHOUR=23;BYMINUTE=0;BYSE COND=0', end_date=NULL, job_class='DEFAULT_JOB_CLASS', enabled=FALSE, auto_drop=FALSE,comments=NULL); dbms_scheduler.enable('OPTIMIZE_CTX_INDEXES'); COMMIT; END; [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]