[oracle_br] Re: Instalação Oracle Standard - Espelhamento de Discos
okdoc : fosse uma aplicação DW e com um porte maior em termos de dados, eu iria para a sugestão de um disco local especificamente para a temp area, mas não sendo o caso vai pro SAME mesmo - Stripe (o RAID-0) And Mirror (o RAID-1) Everything... Taca tudo , inclusive temp, no volume RAID-10 e boa - no máximo, sugira para o cara, se for possível(ou seja, SE o hardware em uso suportar, se houver espaço em gabinete, etc), ter um quinto disco como hot-spare, ie, um disco que Automaticamente substitui um disco do array em caso de falha... A minha única Recomendação adicional, já que vejo que será usado num hospital, é : 1) levantar e oferecer para o teu Cliente alguma opção de HA : isso Certamente envolve a compra de um novo servidor similar, mas se o sistema apesar de pequeno em volume for crítico o suficiente (quando se fala de Hospital normalmente é) pode ser justificado... Poderia ser HA via standby manual (já que com o capadinho do Standard dataguard tá fora), pode ser Cluster do SO (ativo/passivo) com automação sua via script ou via tools específicas, ou talvez mesmo RAC One, SE a infra de rede for boa... 2) backup e arquivamento : ao menos nas ocasiões em que trabalhei dentro de hospitais, o pessoal tinha necessidade de voltar dados on-demand de vários anos : era um tal de neguim querendo saber de cirurgia de não sei quando que é um negócio... E além do arquyivamento de dados, backup é um negócio que o pessoal dificilmente lembra, cabe a vc incluir uma Recomendação sólida para isso... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Emerson Martins escreveu > > Chiappa! > > Esse é um servidor novo que estar sendo comprado para atender um cliente > que estar com a corda no pescoço rodando o bd num ambiente limitado, > inclusive citei o caso de ter possibilidade de adição de mais discos. > > No meu caso nao irei utilizar software, e estou ciente que nesse momento a > utilização de RAID implicaria na metade do espaço, no caso 600GB > Com relação aos arrays seria justamente a forma que você especificou, cada > array com dois discos. > > A ideia no momento seria utilizar o RAID 10 > > Detalhamento do ambiente: > Ambiente : OLTP > Tamanho BD: 160 GB > Acesso : 24 X 7 > Qtde usuarios aprox.:100 > Aplicação: Software de Hospital > > > Emerson Martins > DBA > Itec/AL > 82 9123-5504 > 82 9668-1283 > > > Em 25 de janeiro de 2013 13:47, J. Laurindo Chiappa > escreveu: > > > ** > > > > > > Bem, imagino que se vc não vai usar storage, vc tem 4 discos locais, e > > principalmente para maior performance (já que partes diferentes de um dado > > podem estar em discos diferentes, acionados paralelamente) vc quer montar > > um sistema RAID, correto ?? Muito bem : antes de mais nada, estude o > > material em > > http://www.clubedohardware.com.br/artigos/Como-Montar-um-Sistema-RAID/1296e > > em > > http://www.clubedohardware.com.br/dicionario/termo/147 para ficar por > > dentro dos diversos tipos de RAID. Em segundo lugar, veja que para boa > > performance vc VAI estar usando RAID por HARDWARE, ie, vc tem uma > > controladora e um hardware capazes de acessar/controlar/criar volumes RAID > > diretamente, *** sem *** nenhum tipo de emulação/dependência de software, > > ok ? RAID por software é um negócio Inferior por padrão, ainda estou para > > ver um caso aonde a abismalmente inferior performance em relação ao RAID > > por hardware justifique o menor preço do RAID por software > > > > Isso estudado, e os requisitos verificados, partindo para o planejamento : > > SE realmente vc quer ter Espelhamento de discos (que seria a segurança / > > disponibilidade máximas), isso Necessariamente Implica que vc vai ter a > > METADE da capacidade total de espaço disponível - no seu caso, se vc tem 4 > > discos, vc teria os discos 1 e 2 ligados num array E os discos 3 e 4 seriam > > espelho do 1 e 2, não ficando disponíveis para uso... Isso ter atende , ter > > um volume de apenas 600 GB (dois discos de 300 GB) disponíveis para o > > banco, ficando os outros 600 GB (os outros dois discos) como o espelho ??? > > Se sim, okdoc, mas se não, 600 GB apenas não te atende, OU vc compra mais > > discos (se o teu hardwre Suportar) OU vc passa a não usar espelhamento, yes > > ?? Sem espelhamento, vc provavelmente estaria usando blocos de paridade > > (ie, a cada Gravação feita num pedaço qquer de um disco o RAID grava, num > > outro disco qualquer, dedicado a isso ou não, os metadados necessários para > > reconstruir essa informação) - ou seja, RAID-5 ou 6 ou 7 ... Aí vc poderia > > ter os 4 discos num só volume, com espaço bruto de 1.2 TB (ie, 300 GB + 300 > > GB + 300 GB + 300 GB), e desses 1.2 Tb vc perderia uma pequena porção > > apenas para as infos de paridade, provavelmente ficando disponível para os > > usuários efetivamente por volta de 1 TB... ÓBVIO, isso tem um Custo a se > > pagar, que vai ser composto de : > > > > - Performance reduzida para Gravaçã
[oracle_br] Assistente de Configuração do Oracle Net
Caros amigos! su absolutamente inexperiente em Oracle. Estou em uma luta ferrenha aqui, instalando o 11g sobre Oracle Linux 6.3, estava indo tudo bem seguindo o tutorial http://aprenderoracle.com/2011/04/instalacao-do-oracle-11g-no-oracle-linux-6-0/. Ja no final do processo na configuração recebi uma msg de erro: "[INS-20802] Assistente de Configuração do Oracle Net falhou." estou ai sem saber o que fazer, alguem tem alguma ajuda? terei que esperar acordado uma boa em alto mar. Obrigado
Re: [oracle_br] [Oracle - SGA_TARGET]
Boa Tarde. Veja se te ajuda http://www.oraclehome.com.br/2011/08/31/perdeu-spfile-e-pfile-do-oracle-e-agora/ Abss Att Michel Duarte Santos De: Flaviano de Figueiredo Oliveira Para: oracle_br@yahoogrupos.com.br Enviadas: Sexta-feira, 25 de Janeiro de 2013 14:36 Assunto: [oracle_br] [Oracle - SGA_TARGET] Boa tarde! Alterei, os valores de SGA_TARGET e SGA_MAX_SIZE, dentro do limite que tenho na maquina, mas sou informado que nao ha memoria no servidor. agora, preciso voltar para os valores de memoria anteriores. Assim como voltar estes valores sem o banco subir? Atenciosamente; Flaviano de Figueiredo Oliveira :+55 85 87254758 :flaviano_fis...@hotmail.com :flaviano.olive...@gmail.com :FlavianoOliveira :fecsys [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: [Oracle - SGA_TARGET]
Claro, há outros Truques que vc pode tentar se vc não tiver o obrigatório e necessário backup do spfile em modo-texto, antes de partir para Edição do spile manualmente e/ou da extração de valores via string : tenha em mente que são TRUQUEs, work-arounds, absolutamente não garantidos de funcionar E que podem ou não ser relevantes no seu So e na sua versão de banco... Seriam : a) pedir um startup nomount e tentar criar o pfile a partir do spfile errado que foi lido, cfrem http://logbuffer.wordpress.com/2010/04/12/create-pfile-from-spfile/ ou b) tentar se aproveitar do fato que o Oracle permite que vc tenha um pfile E um spfile ao mesmo tempo : a idéia é criar um pfile com o parâmetro corrigido, a teoria é que o pfile é lido primeiro, o valor corrigido será usado, aí os demais valores virão do spfile - veja http://www.shutdownabort.com/quickguides/spifles_and_pfiles_trick.php para o trucão em ação Tenta isso se vc não tiver um backup atualizado em texto do spfile, se não funfar é mesmo extrair os valores e criar um pfile a partir do spfile []s Chiappa --- Em oracle_br@yahoogrupos.com.br, "J. Laurindo Chiappa" escreveu > > Vc não diz, mas ** suponho ** que o seu "problema" é que vc está > trabalhando com SPFILE nesse database, e SPFILEs não são editáveis fora do > database, e o seu database não sobe agora,portanto vc ficou impossibilitado > de editar o SPFILE, né ? Bem, EXATAMENTE POR ISSO é que vc TEM que fazer um > backup do seu spfile em formato texto, ie, um PFILE, guardadinho E ATUALIZADO > a cada alteração do spfile , com o comando CREATE > PFILE='/pathparabackups/nomedoarquivo' FROM SPFILE; sim ??? Isso é ** BÁSICO > ** na Administração de um database Oracle >Então a pergunta é, vc TEM um pfile bem atualizado para esse database ??? > SE sim, edite ele colocando os valores necessários, suba o banco com startup > pfile=/pathdoarquivo/nomedoarquivo e depois Recria o spfile com CREATE > SPFILE > > Já SE vc ** falhou ** e não tem um backup em texto ASCII atualizado e > editável desse spfile, o que vc Pode tentar é extrair os valores necessários > do spile e criar um pfile com eles : se o seu SO for Linux vc pode usar o > comando strings para obter só as strings de valores do spfile, se for Windows > vc abriria o spfile num editor de texto ASCII mas que exibe/permite > caracteres binários (textpad, notepad++, jedit, vim, há diversos), remove os > caracteres de controle e salva no formato initSID.ora , para usar como um > pfile e fazer startup pfile=xxx ... > >[]s > > Chiappa > > --- Em oracle_br@yahoogrupos.com.br, Flaviano de Figueiredo Oliveira escreveu > > > > Boa tarde! > > > > Alterei, os valores de SGA_TARGET e SGA_MAX_SIZE, dentro do limite que > > tenho na maquina, mas sou informado que nao ha memoria no servidor. > > agora, preciso voltar para os valores de memoria anteriores. Assim como > > voltar estes valores sem o banco subir? > > > > > > Atenciosamente; > > > > > > Flaviano de Figueiredo Oliveira > > > > :+55 85 87254758 > >:flaviano_fisica@ > > :flaviano.oliveira@ > >:FlavianoOliveira > >:fecsys > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > >
[oracle_br] Re: [Oracle - SGA_TARGET]
Vc não diz, mas ** suponho ** que o seu "problema" é que vc está trabalhando com SPFILE nesse database, e SPFILEs não são editáveis fora do database, e o seu database não sobe agora,portanto vc ficou impossibilitado de editar o SPFILE, né ? Bem, EXATAMENTE POR ISSO é que vc TEM que fazer um backup do seu spfile em formato texto, ie, um PFILE, guardadinho E ATUALIZADO a cada alteração do spfile , com o comando CREATE PFILE='/pathparabackups/nomedoarquivo' FROM SPFILE; sim ??? Isso é ** BÁSICO ** na Administração de um database Oracle Então a pergunta é, vc TEM um pfile bem atualizado para esse database ??? SE sim, edite ele colocando os valores necessários, suba o banco com startup pfile=/pathdoarquivo/nomedoarquivo e depois Recria o spfile com CREATE SPFILE Já SE vc ** falhou ** e não tem um backup em texto ASCII atualizado e editável desse spfile, o que vc Pode tentar é extrair os valores necessários do spile e criar um pfile com eles : se o seu SO for Linux vc pode usar o comando strings para obter só as strings de valores do spfile, se for Windows vc abriria o spfile num editor de texto ASCII mas que exibe/permite caracteres binários (textpad, notepad++, jedit, vim, há diversos), remove os caracteres de controle e salva no formato initSID.ora , para usar como um pfile e fazer startup pfile=xxx ... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Flaviano de Figueiredo Oliveira escreveu > > Boa tarde! > > Alterei, os valores de SGA_TARGET e SGA_MAX_SIZE, dentro do limite que > tenho na maquina, mas sou informado que nao ha memoria no servidor. > agora, preciso voltar para os valores de memoria anteriores. Assim como > voltar estes valores sem o banco subir? > > > Atenciosamente; > > > Flaviano de Figueiredo Oliveira > > :+55 85 87254758 >:flaviano_fisica@... > :flaviano.oliveira@... >:FlavianoOliveira >:fecsys > > > [As partes desta mensagem que não continham texto foram removidas] >
[oracle_br] Re: Instalação Oracle Standard - Espelhamento de Discos
Bem, imagino que se vc não vai usar storage, vc tem 4 discos locais, e principalmente para maior performance (já que partes diferentes de um dado podem estar em discos diferentes, acionados paralelamente) vc quer montar um sistema RAID, correto ?? Muito bem : antes de mais nada, estude o material em http://www.clubedohardware.com.br/artigos/Como-Montar-um-Sistema-RAID/1296 e em http://www.clubedohardware.com.br/dicionario/termo/147 para ficar por dentro dos diversos tipos de RAID. Em segundo lugar, veja que para boa performance vc VAI estar usando RAID por HARDWARE, ie, vc tem uma controladora e um hardware capazes de acessar/controlar/criar volumes RAID diretamente, *** sem *** nenhum tipo de emulação/dependência de software, ok ? RAID por software é um negócio Inferior por padrão, ainda estou para ver um caso aonde a abismalmente inferior performance em relação ao RAID por hardware justifique o menor preço do RAID por software Isso estudado, e os requisitos verificados, partindo para o planejamento : SE realmente vc quer ter Espelhamento de discos (que seria a segurança / disponibilidade máximas), isso Necessariamente Implica que vc vai ter a METADE da capacidade total de espaço disponível - no seu caso, se vc tem 4 discos, vc teria os discos 1 e 2 ligados num array E os discos 3 e 4 seriam espelho do 1 e 2, não ficando disponíveis para uso... Isso ter atende , ter um volume de apenas 600 GB (dois discos de 300 GB) disponíveis para o banco, ficando os outros 600 GB (os outros dois discos) como o espelho ??? Se sim, okdoc, mas se não, 600 GB apenas não te atende, OU vc compra mais discos (se o teu hardwre Suportar) OU vc passa a não usar espelhamento, yes ?? Sem espelhamento, vc provavelmente estaria usando blocos de paridade (ie, a cada Gravação feita num pedaço qquer de um disco o RAID grava, num outro disco qualquer, dedicado a isso ou não, os metadados necessários para reconstruir essa informação) - ou seja, RAID-5 ou 6 ou 7 ... Aí vc poderia ter os 4 discos num só volume, com espaço bruto de 1.2 TB (ie, 300 GB + 300 GB + 300 GB + 300 GB), e desses 1.2 Tb vc perderia uma pequena porção apenas para as infos de paridade, provavelmente ficando disponível para os usuários efetivamente por volta de 1 TB... ÓBVIO, isso tem um Custo a se pagar, que vai ser composto de : - Performance reduzida para Gravação - lógico, cada I/O de gravação além de gravar o necessário via ter de gravar também os dados de paridade - segurança e disponibilidade reduzida - em caso de crash de um disco, já que vc não tem um espelo exato do conteúdo desse disco, depois de trocar o disco falhado vc vai ter que fazer o REBUILD, isso é : vai ter que procurar e acessar TODOS os blocos de paridade em todos os outrs discos sobreviventes para reconstruir a informação que estava no disco perdido no novo disco... Nem preciso dizer que isso interfere PROFUNDAMENTE na performance do array, é uma Operação longa e complexa. okdoc ?? Essa é a sua primeira decisão, QUAL tipo de RAID usar Blz ? DEPOIS de ter se decidido, numa outra msg conta pra gente como ficou o seu Planejamento, tamanho/tipo do seu RAID, se vc terá discos não-RAID que possam ser usados/alocados, nos dê uma idéia de qtdade de usuários simultâneos, volume de dados acessado, tipo da Aplicação (se OLTP ou Batch) e infos do tipo, que a gente pode palpitar mais em cima de como/onde distribuir os arquivos no(s) seu(s) volume(s) RAID... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Emerson Martins escreveu > > Olá pessoal! > > Estou precisando de dicas com relação a espelhamento de discos no SO para > um servidor de banco de dados.Quais são as recomendações em relação a RAID > para um banco de dados que nao irá utilizar storage no momento. > > > Ambiente: > Windows Server 2008R2 > Oracle Standard > 4 discos de 300GB > > > > Atenciosamente, > > Emerson Martins > DBA Jr > > > [As partes desta mensagem que não continham texto foram removidas] >
Re: [oracle_br] Re: Exportar CLOB
Resolvi está parte, fiz o replace ( ', ''), funcionou. Obrigado pelos scripts e as dicas... De: Jales Jose Moraes Para: "oracle_br@yahoogrupos.com.br" Enviadas: Sexta-feira, 25 de Janeiro de 2013 12:16 Assunto: Re: [oracle_br] Re: Exportar CLOB Blz, a questão é que tenho no insert do CLOB várias aspas simples, e só estou conseguindo inserir quando faço os replaces por ' ', nó mais está tudo correto... De: J. Laurindo Chiappa mailto:jlchiappa%40yahoo.com.br> Para: mailto:oracle_br%40yahoogrupos.com.br Enviadas: Sexta-feira, 25 de Janeiro de 2013 11:50 Assunto: [oracle_br] Re: Exportar CLOB Colega, ficou em branco o espaço, não veio o texto do seu programa - plz manda, Em texto apenas, no corpo da mensagem como eu fiz, um programa-exemplo CURTO mas completo e nos diga exatamente o que vc quer realizar, em qual ambiente o seu programa vai rodar Eu Suponho, porém, pelo jeitão, que vc tenha um bloco PL/SQL e no comando INSERT INTO tabela VALUES (xxx, yyy, zzz) vc quira passar MAIS de um valor escalar para xxx, yyy ou zzz, é isso ??? SE Sim, de cara posso dizer que o comando INSERT ** não ** funciona assim, veja a entrada para INSERT no manual de SQL []s Chiappa --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas > simples, do tipo: > insert into teste > > > > > > > > > > > > > É possível inserir exatametne da forma como está acima, o comando inteiro, > inclusive com as suas aspas?values ('in('02','03','04','05')'); > > > > De: J. Laurindo Chiappa > Para: mailto:oracle_br%40yahoogrupos.com.br > Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 > Assunto: [oracle_br] Re: Exportar CLOB > > > > E um detalhe adicional, falando sobre programação dentro do Excel, que me > Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo > não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me > mandou para alguns sites (como > http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, > http://www.xtremevbtalk.com/showthread.php?t=206066 , > http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e > http://support.microsoft.com/?id=185958) que parecem indicar que o > "built-in/comando" necessário para se trabalhar com large strings, se vc > estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as > refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no > sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... > > Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que > 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo > num programinha PL/SQL, veja só : > > ==> Primeiro, criar tabela e uma massinha de dados : > > SQL> create table TAB_TEST_CLOB ( > 2 c1 number, > 3 c2 clob); > > Tabela criada. > > SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) > 2 as > 3 l_clob clob; > 4 BEGIN > 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into > l_clob; > 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); > 7* END; > > Procedimento criado. > > SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 2, '%') || ':fim clob2'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> commit; > > Commit concluÝdo. > > ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas > menores que o limite de 32 KB do UTL_FILE e do PL/SQL : > > SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; > > C1 TAMANHO > -- -- > 1 24 > 2 20018 > 2 22018 > > SQL> > > => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas > separadas por CHR(9), que é o TAB : > > SQL> DECLARE > 2 l_output utl_file.file_type; > 3 BEGIN > 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); > 5 for R in (select c1, c2 from TAB_TEST_CLOB) > 6 loop > 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); > 8 end loop; > 9 utl_file.fclose(l_output); > 10* END; > SQL> / > > Procedimento PL/SQL concluÝdo com sucesso. > > => veja que gerou direitinho : > > C:\Windows\system32>dir c:\admin\*.txt > O volume na unidade C é HD NOVO 320 GB > O Número de Série do Volume é C8A2-9666 > > Pasta de c:\admin > > 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT > 1 arquivo(s) 42.072 bytes > 0 pasta(s) 66.144.690.176 bytes disponíveis > > C:\Windows\system32> > > ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um > Arquivo/Abrir, escolho o meu arquivo
Re: [oracle_br] Re: Exportar CLOB
Blz, a questão é que tenho no insert do CLOB várias aspas simples, e só estou conseguindo inserir quando faço os replaces por ' ', nó mais está tudo correto... De: J. Laurindo Chiappa Para: oracle_br@yahoogrupos.com.br Enviadas: Sexta-feira, 25 de Janeiro de 2013 11:50 Assunto: [oracle_br] Re: Exportar CLOB Colega, ficou em branco o espaço, não veio o texto do seu programa - plz manda, Em texto apenas, no corpo da mensagem como eu fiz, um programa-exemplo CURTO mas completo e nos diga exatamente o que vc quer realizar, em qual ambiente o seu programa vai rodar Eu Suponho, porém, pelo jeitão, que vc tenha um bloco PL/SQL e no comando INSERT INTO tabela VALUES (xxx, yyy, zzz) vc quira passar MAIS de um valor escalar para xxx, yyy ou zzz, é isso ??? SE Sim, de cara posso dizer que o comando INSERT ** não ** funciona assim, veja a entrada para INSERT no manual de SQL []s Chiappa --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas > simples, do tipo: > insert into teste > > > > > > > > > > > > > É possível inserir exatametne da forma como está acima, o comando inteiro, > inclusive com as suas aspas?values ('in('02','03','04','05')'); > > > > De: J. Laurindo Chiappa > Para: mailto:oracle_br%40yahoogrupos.com.br > Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 > Assunto: [oracle_br] Re: Exportar CLOB > > > > E um detalhe adicional, falando sobre programação dentro do Excel, que me > Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo > não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me > mandou para alguns sites (como > http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, > http://www.xtremevbtalk.com/showthread.php?t=206066 , > http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e > http://support.microsoft.com/?id=185958) que parecem indicar que o > "built-in/comando" necessário para se trabalhar com large strings, se vc > estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as > refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no > sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... > > Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que > 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo > num programinha PL/SQL, veja só : > > ==> Primeiro, criar tabela e uma massinha de dados : > > SQL> create table TAB_TEST_CLOB ( > 2 c1 number, > 3 c2 clob); > > Tabela criada. > > SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) > 2 as > 3 l_clob clob; > 4 BEGIN > 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into > l_clob; > 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); > 7* END; > > Procedimento criado. > > SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 2, '%') || ':fim clob2'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> commit; > > Commit concluÝdo. > > ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas > menores que o limite de 32 KB do UTL_FILE e do PL/SQL : > > SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; > > C1 TAMANHO > -- -- > 1 24 > 2 20018 > 2 22018 > > SQL> > > => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas > separadas por CHR(9), que é o TAB : > > SQL> DECLARE > 2 l_output utl_file.file_type; > 3 BEGIN > 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); > 5 for R in (select c1, c2 from TAB_TEST_CLOB) > 6 loop > 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); > 8 end loop; > 9 utl_file.fclose(l_output); > 10* END; > SQL> / > > Procedimento PL/SQL concluÝdo com sucesso. > > => veja que gerou direitinho : > > C:\Windows\system32>dir c:\admin\*.txt > O volume na unidade C é HD NOVO 320 GB > O Número de Série do Volume é C8A2-9666 > > Pasta de c:\admin > > 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT > 1 arquivo(s) 42.072 bytes > 0 pasta(s) 66.144.690.176 bytes disponíveis > > C:\Windows\system32> > > ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um > Arquivo/Abrir, escolho o meu arquivo .TXT acima, escolho na importação a > opção "Delimitedo", escolho TAB como o caracter delimitador, e avanço : > prontinho, tá feita a fofoca... Blz ? > Só para mostrar que Realmente importou tudinho, insiro uma coluna depois da > primeira, e coloco nela a Fórmula =NÚM.CARACT(C1) , e depois copia essa > fórmula para as outras
Re: [oracle_br] Re: Exportar CLOB
Há, é rac 11g... De: J. Laurindo Chiappa Para: oracle_br@yahoogrupos.com.br Enviadas: Sexta-feira, 25 de Janeiro de 2013 11:50 Assunto: [oracle_br] Re: Exportar CLOB Colega, ficou em branco o espaço, não veio o texto do seu programa - plz manda, Em texto apenas, no corpo da mensagem como eu fiz, um programa-exemplo CURTO mas completo e nos diga exatamente o que vc quer realizar, em qual ambiente o seu programa vai rodar Eu Suponho, porém, pelo jeitão, que vc tenha um bloco PL/SQL e no comando INSERT INTO tabela VALUES (xxx, yyy, zzz) vc quira passar MAIS de um valor escalar para xxx, yyy ou zzz, é isso ??? SE Sim, de cara posso dizer que o comando INSERT ** não ** funciona assim, veja a entrada para INSERT no manual de SQL []s Chiappa --- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes escreveu > > Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas > simples, do tipo: > insert into teste > > > > > > > > > > > > > É possível inserir exatametne da forma como está acima, o comando inteiro, > inclusive com as suas aspas?values ('in('02','03','04','05')'); > > > > De: J. Laurindo Chiappa > Para: mailto:oracle_br%40yahoogrupos.com.br > Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 > Assunto: [oracle_br] Re: Exportar CLOB > > > > E um detalhe adicional, falando sobre programação dentro do Excel, que me > Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo > não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me > mandou para alguns sites (como > http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, > http://www.xtremevbtalk.com/showthread.php?t=206066 , > http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e > http://support.microsoft.com/?id=185958) que parecem indicar que o > "built-in/comando" necessário para se trabalhar com large strings, se vc > estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as > refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no > sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... > > Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que > 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo > num programinha PL/SQL, veja só : > > ==> Primeiro, criar tabela e uma massinha de dados : > > SQL> create table TAB_TEST_CLOB ( > 2 c1 number, > 3 c2 clob); > > Tabela criada. > > SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) > 2 as > 3 l_clob clob; > 4 BEGIN > 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into > l_clob; > 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); > 7* END; > > Procedimento criado. > > SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 2, '%') || ':fim clob2'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> commit; > > Commit concluÝdo. > > ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas > menores que o limite de 32 KB do UTL_FILE e do PL/SQL : > > SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; > > C1 TAMANHO > -- -- > 1 24 > 2 20018 > 2 22018 > > SQL> > > => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas > separadas por CHR(9), que é o TAB : > > SQL> DECLARE > 2 l_output utl_file.file_type; > 3 BEGIN > 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); > 5 for R in (select c1, c2 from TAB_TEST_CLOB) > 6 loop > 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); > 8 end loop; > 9 utl_file.fclose(l_output); > 10* END; > SQL> / > > Procedimento PL/SQL concluÝdo com sucesso. > > => veja que gerou direitinho : > > C:\Windows\system32>dir c:\admin\*.txt > O volume na unidade C é HD NOVO 320 GB > O Número de Série do Volume é C8A2-9666 > > Pasta de c:\admin > > 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT > 1 arquivo(s) 42.072 bytes > 0 pasta(s) 66.144.690.176 bytes disponíveis > > C:\Windows\system32> > > ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um > Arquivo/Abrir, escolho o meu arquivo .TXT acima, escolho na importação a > opção "Delimitedo", escolho TAB como o caracter delimitador, e avanço : > prontinho, tá feita a fofoca... Blz ? > Só para mostrar que Realmente importou tudinho, insiro uma coluna depois da > primeira, e coloco nela a Fórmula =NÚM.CARACT(C1) , e depois copia essa > fórmula para as outras linhas, óia o resultado beleza : > > 1 24 Linha 1 com clob pequeno > 2 20018 Linha > 2:$%%
[oracle_br] OFF TOPIC - Cursos EAD
Pessoal Alguém poderia indicar um curso EAD (extensão) que aborde SQL Fundamentals PL/SQL Administração Tudo num mesmo curso ou em cursos separados ... Obrigado! Mário Rodrigues Analista e Desenvolvedor de sistemas WEB ITIL Foundation Certificate Contato: 55 91 8245-0957 E-mail: marioirodrig...@gmail.com msn: marioirodrig...@hotmail.com Windows 7 user Ultimate [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Exportar CLOB
Colega, ficou em branco o espaço, não veio o texto do seu programa - plz manda, Em texto apenas, no corpo da mensagem como eu fiz, um programa-exemplo CURTO mas completo e nos diga exatamente o que vc quer realizar, em qual ambiente o seu programa vai rodar Eu Suponho, porém, pelo jeitão, que vc tenha um bloco PL/SQL e no comando INSERT INTO tabela VALUES (xxx, yyy, zzz) vc quira passar MAIS de um valor escalar para xxx, yyy ou zzz, é isso ??? SE Sim, de cara posso dizer que o comando INSERT ** não ** funciona assim, veja a entrada para INSERT no manual de SQL []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Jales Jose Moraes escreveu > > Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas > simples, do tipo: > insert into teste > > > > > > > > > > > > > É possível inserir exatametne da forma como está acima, o comando inteiro, > inclusive com as suas aspas?values ('in('02','03','04','05')'); > > > > De: J. Laurindo Chiappa > Para: oracle_br@yahoogrupos.com.br > Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 > Assunto: [oracle_br] Re: Exportar CLOB > > > > E um detalhe adicional, falando sobre programação dentro do Excel, que me > Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo > não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me > mandou para alguns sites (como > http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, > http://www.xtremevbtalk.com/showthread.php?t=206066 , > http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e > http://support.microsoft.com/?id=185958) que parecem indicar que o > "built-in/comando" necessário para se trabalhar com large strings, se vc > estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as > refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no > sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... > > Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que > 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo > num programinha PL/SQL, veja só : > > ==> Primeiro, criar tabela e uma massinha de dados : > > SQL> create table TAB_TEST_CLOB ( > 2 c1 number, > 3 c2 clob); > > Tabela criada. > > SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) > 2 as > 3 l_clob clob; > 4 BEGIN > 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into > l_clob; > 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); > 7* END; > > Procedimento criado. > > SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 2, '%') || ':fim clob2'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); > > Procedimento PL/SQL concluÝdo com sucesso. > > SQL> commit; > > Commit concluÝdo. > > ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas > menores que o limite de 32 KB do UTL_FILE e do PL/SQL : > > SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; > > C1 TAMANHO > -- -- > 1 24 > 2 20018 > 2 22018 > > SQL> > > => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas > separadas por CHR(9), que é o TAB : > > SQL> DECLARE > 2 l_output utl_file.file_type; > 3 BEGIN > 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); > 5 for R in (select c1, c2 from TAB_TEST_CLOB) > 6 loop > 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); > 8 end loop; > 9 utl_file.fclose(l_output); > 10* END; > SQL> / > > Procedimento PL/SQL concluÝdo com sucesso. > > => veja que gerou direitinho : > > C:\Windows\system32>dir c:\admin\*.txt > O volume na unidade C é HD NOVO 320 GB > O Número de Série do Volume é C8A2-9666 > > Pasta de c:\admin > > 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT > 1 arquivo(s) 42.072 bytes > 0 pasta(s) 66.144.690.176 bytes disponíveis > > C:\Windows\system32> > > ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um > Arquivo/Abrir, escolho o meu arquivo .TXT acima, escolho na importação a > opção "Delimitedo", escolho TAB como o caracter delimitador, e avanço : > prontinho, tá feita a fofoca... Blz ? > Só para mostrar que Realmente importou tudinho, insiro uma coluna depois da > primeira, e coloco nela a Fórmula =NÚM.CARACT(C1) , e depois copia essa > fórmula para as outras linhas, óia o resultado beleza : > > 1 24 Linha 1 com clob pequeno > 2 20018 Linha > 2:$%%%... > 3 22018 Linha > 3:+###... > > okdoc ? > > []s > > Chiappa > > OBS : é Claro, no meu caso não tinha new line
Re: [oracle_br] Re: Exportar CLOB
Cara funcionou corretamente. Agora apareceu um erro quando insiro aspas simples, do tipo: insert into teste É possível inserir exatametne da forma como está acima, o comando inteiro, inclusive com as suas aspas?values ('in('02','03','04','05')'); De: J. Laurindo Chiappa Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 24 de Janeiro de 2013 21:04 Assunto: [oracle_br] Re: Exportar CLOB E um detalhe adicional, falando sobre programação dentro do Excel, que me Indica que realmente é questão de Ajuste na sua programação : embora eu mesmo não programe nem no Excel nem no VBA e quejandos, uma googlada rápida me mandou para alguns sites (como http://www.utteraccess.com/forum/GetChunk-Method-DAO-t469091.html, http://www.xtremevbtalk.com/showthread.php?t=206066 , http://www.bigresource.com/VB-GetChunk-Output-to-Excel-KWT0sno79u.html e http://support.microsoft.com/?id=185958) que parecem indicar que o "built-in/comando" necessário para se trabalhar com large strings, se vc estiver conectando com ADO no banco Oracle, é o tal do getchunk - veja as refs e em cima disso, avalie a info e faça uma pesquisa mais detalhada no sites de Suporte, foruns e na Documentação do Excel e do VBA, como citei... Agora : aproveitando que vc confirma que os seus CLOBs são todos menores que 32 KB, vc Nem Sequer precisa do trucão do UTL_FILE.PUT para gerar o arquivo num programinha PL/SQL, veja só : ==> Primeiro, criar tabela e uma massinha de dados : SQL> create table TAB_TEST_CLOB ( 2 c1 number, 3 c2 clob); Tabela criada. SQL> create or replace procedure lob_ins(p_id IN number, p_text IN varchar2 ) 2 as 3 l_clob clob; 4 BEGIN 5 insert into TAB_TEST_CLOB values (p_id, empty_clob() ) returning c2 into l_clob; 6 dbms_lob.write( l_clob,length(p_text), 1,p_text); 7* END; Procedimento criado. SQL> exec lob_ins(1, 'Linha 1 com clob pequeno'); Procedimento PL/SQL concluÝdo com sucesso. SQL> exec lob_ins(2, 'Linha 2:' || rpad('$', 2, '%') || ':fim clob2'); Procedimento PL/SQL concluÝdo com sucesso. SQL> exec lob_ins(2, 'Linha 3:' || rpad('+', 22000, '#') || ':fim clob3'); Procedimento PL/SQL concluÝdo com sucesso. SQL> commit; Commit concluÝdo. ==> veja que tenha um CLOB menor que 4000 e dois CLOBs maiores que 4000 mas menores que o limite de 32 KB do UTL_FILE e do PL/SQL : SQL> select c1, dbms_lob.getlength(c2) tamanho from TAB_TEST_CLOB; C1 TAMANHO -- -- 1 24 2 20018 2 22018 SQL> => Passo 2, criar um arquivo com os dados do CLOB (e as outras colunas separadas por CHR(9), que é o TAB : SQL> DECLARE 2 l_output utl_file.file_type; 3 BEGIN 4 l_output := utl_file.fopen('DIR_ADMIN', 'ARQ_TESTE_CLOB.TXT', 'w', 32760); 5 for R in (select c1, c2 from TAB_TEST_CLOB) 6 loop 7 utl_file.put_line(l_output, R.c1 || chr(9) || R.c2); 8 end loop; 9 utl_file.fclose(l_output); 10* END; SQL> / Procedimento PL/SQL concluÝdo com sucesso. => veja que gerou direitinho : C:\Windows\system32>dir c:\admin\*.txt O volume na unidade C é HD NOVO 320 GB O Número de Série do Volume é C8A2-9666 Pasta de c:\admin 24/01/2013 20:42 42.072 ARQ_TESTE_CLOB.TXT 1 arquivo(s) 42.072 bytes 0 pasta(s) 66.144.690.176 bytes disponíveis C:\Windows\system32> ==> agora no Excel (Excel 2010, mas deve funcionar no 2007 teu) eu peço um Arquivo/Abrir, escolho o meu arquivo .TXT acima, escolho na importação a opção "Delimitedo", escolho TAB como o caracter delimitador, e avanço : prontinho, tá feita a fofoca... Blz ? Só para mostrar que Realmente importou tudinho, insiro uma coluna depois da primeira, e coloco nela a Fórmula =NÚM.CARACT(C1) , e depois copia essa fórmula para as outras linhas, óia o resultado beleza : 1 24 Linha 1 com clob pequeno 2 20018 Linha 2:$%%%... 3 22018 Linha 3:+###... okdoc ? []s Chiappa OBS : é Claro, no meu caso não tinha new lines dentro do CLOB, então não precisei tratar isso, ok ?? Se vc tem, provavelmente algum ajuste a mais será necessário --- Em mailto:oracle_br%40yahoogrupos.com.br, "J. Laurindo Chiappa" escreveu > > Acho que não : o que deve estar havendo é que a linguagem de script do Excel > (que afaik é o que vc está usando para conectar no RDBMS Oracle a partir do > Excel) deve exigir algum setting específico/alguma built-in própria para > permitir large strings > Enquanto vc pesquisa isso nos Fóruns e na documentação DO EXCEL (já que é uma > issue Excel, primeiramente), além dos sites/foruns/docs/fontes/refs de > especialistas na tal linguagem, o que eu Recomendo é o que já tinha falado na > outra resposta, ie : OU abandone a programação dentro do Excel e inverta a > ordem, conectando no banco com uma tool que seguramente permite export em > arquivo-texto de CLOBs, como a SQL Developer, e importe esse cara no Excel, > OU programe dentro do database e