Re: [oracle_br] Re: total de cpu(%)
Amigos, Costumo utilizar a consulta abaixo: SELECT to_char(begin_time, 'DD-MON-RR HH24:MI:SS') begin_time, to_char(end_time, 'DD-MON-RR HH24:MI:SS') end_time, metric_name, value FROM v$sysmetric WHERE metric_name in ('CPU Usage Per Sec', 'Current OS Load', 'Host CPU Utilization (%)') ORDER BY begin_time A view V$SYSMETRIC coleta estatísticas de curta duração a cada 15s e de longa duração 60s. Existe um histórico em V$SYSMETRIC_HISTORY, que guarda as estatísticas de longa duração por 1 hora. Lembrando que a métrica CPU Usage Per Sec é em centésimo de segundo por segundo. Assim como o amigo Chiappa falou anteriormente. Ou seja, você vai ter o tempo consumido dentro da CPU, e não o percentual que o banco está consumindo. 2009/10/13 jlchiappa jlchia...@yahoo.com.br: Opa, intão, deixem-me dar uns palpites aí : primeiro, a query em questão lista as sessões fazendo muito I/Os, muitas vezes elas também são grandes consumidoras de CPU (já que CADA bloco lido necessariamente tem que ser 'gerenciado' em cache, muitas vezes há que se fazer uma leitura consistente, etc, isso custa CPU) mas é meio arriscado dizer que necessariamente essas são as tpo consumidoras de CPU, há várias outras tarefas (tais como compilação de Pl/SQL, parse de SQLs, contas/cálculos, context switch entre SQL e PL/SQL, entre muitas outras) que podem consumir muita CPU sem necessariamente fazer montes de I/Os Segundo, a pergunta original é quantos porcento de CPU uma sessão utilizou na sua atividade?, e isso ABSOLUTAMENTE NÃO É registrado nas views/tabelas internas : entre outras questões, o fato é que para se saber quanto um dado volume representa do total, vc TEM que conhecer o total, e por mais que nós DBAs não consideremos assim a verdade é que o bd Oracle num servidor é simplesmente um software a mais, ele ** NÃO ** necessariamente roda com privilégios administrativos diferenciados, ele é só um CONSUMIDOR dos recursos (ie, CPU, RAM, I/O, rede) , via de regra ele Não Tem Como saber o total de CPU da máquina como um todo pra poder extrapolar quantos % do 100% total cada sessão representa, isso em tese só um account Admin poderia fazer... Exatamente POR ISSO o pessoal do kernel do banco Oracle fez o seguinte : instrumentou cada chamada por recursos botando antes e depois dela um call ao clock do sistema, tipo : # quero fazer um I/O, portanto : getsystemclock1 pedeporumI/O quando recebeu o I/O, getsystemclock2 calcula a diferença de tempo entre as chamadas 1 e 2 # quero fazer uma operação em RAM do bloco lido (e portanto consumir CPU) : getsystemclock1 faz o processamento de mover o bloco quando recebeu o resultado de OK, getsystemclock2 calcula a diferença de tempo entre as chamadas 1 e 2 ... etc, etc, etc então a idéia por trás é : vc sabe sempre apenas o TEMPO que cada operação que consumiu CPU, I/O, rede ou o que for levou pra ser ATENDIDA, apenas e tão somente isso, assim praticamente TODAS as views/tabelas internas te dão ** TEMPO ** gasto com CPU, ** TEMPO ** gasto com I/O, etc... É sempre o TEMPO, e não % do total, ok ?? E isso nos leva a um OUTRO ponto crucial para o entendimento desse tipo de monitoração, que é o efeito cascata: já que na prática o que o banco mede é o tempo de resposta, digamos que o servidor está folgado, aí um I/O demora 10 milisegundos (digamos), então digamos que uma rotina periódica que esteja rodando e que faça 100 I/Os vai gastar 10*100=1000 milisegundos... Agora suponha que uma ** outra ** rotina pesada (até de fora do banco, talvez) comece a rodar nesse servidor e fazer montes de I/Os e satorou o sub-sistema de I/O da máquina : OBVIAMENTE, cada I/O vai ser mais lento, pois o servidor está ao mesmo tempo sendo acessado e atendendo aquele outro monstrão, então para esses mesmos 100 I/Os vai se gastar muito mais tempo Esse é o ponto, as views/tabelas do banco te mostram quem está demorando mais em gasto de tempo de CPU de I/O, de tudo *** MAS *** a priori consultando só elas vc NÂO TEM COMO identificar em quais os números estão aumentando por causa de espera por recurso indisponível e quais exatamente estão realmente usando demais o recurso. No banco 10g em diante vc pode ainda ativar o recurso das views V$OSSTAT e do histórico dela, ela ** também ** é por tempo mas é mais detalhada, listando o tempo que as CPUs do sistema ficaram IDLE, tempo de uso pelo kernel do banco, tempo de uso das CPUs pelo usuário, http://www.databasejournal.com/features/oracle/article.php/3799846/Looking-at-your-operating-system-with-the-help-of-Oracles-VOSSTAT-view.htm as relaciona Isso pode te ajudar, mas pra se identificar exatamente o consumo de CPU , com QUEM, QUANDO, AONDE e POR QUE, sorry mas não tem uma fonte só, uma vez consultadas as views tipo vc terá que : a) consultar repetidas vezes a V$SESSTAT/V$SESSION_WAIT e
+Res:Re: [oracle_br] replicação ORACLE
Bom dia Rodrigo respondendo suas perguntas a versão é 10g R2 SE, a filial só fara a leitura dos dados que a mesma inserir, agora a matriz deverá pegar todos os dados inseridos pela filial durante o dia e isso deve ocorrer entre 23 e 24hs. Com isso a matriz possui sempre o banco atualizado de todas unidades, e em caso de perca de conexão entre a filial e matriz a filial não pare os serviços por ter este banco local. Espero ter respondido ou complicado um pouco mais rs... Obrigado [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Off-Toppic
Alguem poderia me indicar um curso de JDeveloper ? Obrigado [] Barba [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Oracle + ASM
Sem ISCSI eu não conheço não. A documentação você encontra facilmente no google. Atenciosamente, Marcos Fontana 2009/10/14 Eli elidi...@ig.com.br Entendi Marcos, Se não for utilizado essa ferramenta o ISCSI, você conhece outra possibilidade de realizar este setup? Falando nisso você tem algum link com material sobre este ISCSI? Abraços! Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcos Fontana fontana.mar...@... escreveu Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidi...@... Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidias7@ Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Oracle + ASM
Pelo que eu entendi o colega lá quer ter um storage separado das máquinas-clientes, além das opções de SAN (que iirc são pagas, há opções baratas mas não grátis) talvez ele possa ter um NAS, aí o FreeNAS em http://www.freenas.org/ pode ser uma opção... Não o usei ainda (quando montei os meus ambientes de estudo em RAC usei VMs mesmo) mas já ouvi falar muito bem desse cara... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcos Fontana fontana.mar...@... escreveu Sem ISCSI eu não conheço não. A documentação você encontra facilmente no google. Atenciosamente, Marcos Fontana 2009/10/14 Eli elidi...@... Entendi Marcos, Se não for utilizado essa ferramenta o ISCSI, você conhece outra possibilidade de realizar este setup? Falando nisso você tem algum link com material sobre este ISCSI? Abraços! Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidias7@ Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidias7@ Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Oracle + ASM
E uma outra opção possível que me indicaram é http://www.openfiler.com/ , veja lá... E que fique ** BEM ** claro, estamos trocando idéias pra efeito de testes e curiosidade, pra uso suportado e suportável em Produção full plena a história é BEM diferente, CERTAMENTE vc vai ir pras opções comerciais da EMC, da Dell, da NetApp, todas via FIBRA, são animaizinhos ABSOLUTAMENTE diferentes em termos de performance, confiabilidade e (óbvio) preço... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, jlchiappa jlchia...@... escreveu Pelo que eu entendi o colega lá quer ter um storage separado das máquinas-clientes, além das opções de SAN (que iirc são pagas, há opções baratas mas não grátis) talvez ele possa ter um NAS, aí o FreeNAS em http://www.freenas.org/ pode ser uma opção... Não o usei ainda (quando montei os meus ambientes de estudo em RAC usei VMs mesmo) mas já ouvi falar muito bem desse cara... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Sem ISCSI eu não conheço não. A documentação você encontra facilmente no google. Atenciosamente, Marcos Fontana 2009/10/14 Eli elidias7@ Entendi Marcos, Se não for utilizado essa ferramenta o ISCSI, você conhece outra possibilidade de realizar este setup? Falando nisso você tem algum link com material sobre este ISCSI? Abraços! Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidias7@ Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidias7@ Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Off-Toppic
Tenta no SENAC (http://www.sp.senac.br/jsp/default.jsp?newsID=DYNAMIC,oracle.br.dataservers.CourseDataServer,selectCoursecourse=2419template=395.dwtunit=NONEtesteira=473 ) , ou com a própria Oracle (os treinamentos java dele são na esmagadora maioria feitos em cima do JDeveloper, veja em http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getsearchpage?page_id=13p_search_category_id=42 ), mas saiba que há mntes de informação, treinamentos, exemplos e materiais free sobre Jdeveloper (e periféricos, como ADF e quetais) no technet da Oracle , não deixe de os ver ... Aliás, a questão dos 'periféricos' já me falaram que é crítica, pra vc desenvolver corretamente vc TEM que conhecer além do Jdeveloper e da própria linguagem Java também o ADF (ou um similar), middlewares, extensões Oracle ao Java (como classes pré-definidas), e outras tantas coisinhas (que rapidamente viram COISONAS), então duvido que um treinamento só já resolva o seu problema... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Jose - Oracle jap_ora...@... escreveu Alguem poderia me indicar um curso de JDeveloper ? Obrigado [] Barba [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] erro asm
Estou com o seguinte erro: ORA-15063: ASM discovered an insufficient number of disks for diskgroup SISTEMA Mapei os discos pelo oracleasm do linux e criei todos os discos /etc/init.d/oracleasm createdisk ./dev/ Os parametros de asm_diskstring e asm_diskgroup estao assim asm_diskgroups string SISTEMA, BACKUP, DADOS, INDICE , REDO, CONTROL asm_diskstring string /dev/sdb5, /dev/sdb6, /dev/sdc 5, /dev/sdc6, /dev/sdd5, /dev/ sde5 Sabe me informar o que pode estar acontecendo para reclamar que n'ao tem discos suficientes?? tem algum outro parametro que tenho que estar alterando? obrigado _ Você sabia que com o Hotmail você tem espaço ilimitado para guardar seus e-mails? Começe a usar já! http://www.microsoft.com/brasil/windows/windowslive/products/hotmail.aspx [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] erro asm
Você pode tentar algumas coisas. Mas, antes, faça o seguinte: 1) Verifique se os discos que estão em /dev/oracleasm/disks/ estão com as permissões devidamente ajustadas (dono, grupo e permissões); 2) alter system set asm_diskstring = '/dev/oracleasm/disks/*'; 3) Se ao tentar subir o ASM isso ocorrer, tente montar os DG's na mão: alter diskgroup sistema mount; alter diskgroup backup mount; alter diskgroup dados mount; ... Abraço! Marcus Vinicius Miguel Pedro OCP Database 9i OCP Database 10g OCE RAC 10g mvmpe...@yahoo.com.br On 14/10/2009, at 10:46, orfeu lima wrote: Estou com o seguinte erro: ORA-15063: ASM discovered an insufficient number of disks for diskgroup SISTEMA Mapei os discos pelo oracleasm do linux e criei todos os discos /etc/init.d/oracleasm createdisk ./dev/ Os parametros de asm_diskstring e asm_diskgroup estao assim asm_diskgroups string SISTEMA, BACKUP, DADOS, INDICE , REDO, CONTROL asm_diskstring string /dev/sdb5, /dev/sdb6, /dev/sdc 5, /dev/sdc6, /dev/sdd5, /dev/ sde5 Sabe me informar o que pode estar acontecendo para reclamar que n'ao tem discos suficientes?? tem algum outro parametro que tenho que estar alterando? obrigado __ Você sabia que com o Hotmail você tem espaço ilimitado para guardar seus e-mails? Começe a usar já! http://www.microsoft.com/brasil/windows/windowslive/products/hotmail.aspx [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] MTMA -- Cursor para Update dentro de proc
Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] MTMA -- Cursor para Update dentro de proc
Matheus, A Coluna que receberá o valor o que entendi vai ser o conteudo de 2 colunas da própria tabela certo ? Se sim, acredito que apenas isso funcionária para vc update aux.teste_matheus set dt_final =(date_key - rt_qtde_retorno); 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.com Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [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] MTMA -- Cursor para Update dentro de proc
Veja se o select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus está retornando algo e tambem experimente trocar o 'apelido' (dt_final), já que este é campo é nome da tabela. - Original Message - From: Matheus Malta de Aguiar To: oracle_br@yahoogrupos.com.br Sent: Wednesday, October 14, 2009 11:04 AM Subject: [oracle_br] MTMA -- Cursor para Update dentro de proc Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [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: MTMA -- Cursor para Update dentro de proc
Colega, mesmo olhando só por cima, acho que a tua falha crítica está no trecho : update aux.teste_matheus set dt_final = v_dtf; CADÊ O WHERE Como nós sabemos, num UPDATE ou num DELETE se não filtrarmos os registros desejados o comando atual na tabela toda, e ** NÃO ** é isso que vc quer , vc quer fazer o update apenas no registro que acabou de ler, SEM um WHERE não haverá filtro algum a tabela toda vai ser atualizada E é claro, se não sabia fique sabendo que via de regra é MUITO mais performático em grandes volumes vc NÃO abrir loops, mas sim ter um único comando que já faça o que vc precisa : em vc tendo recursos (tais como área de rollback suficiente), e a lógica o permitindo, não tem o que pensar... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] problema backup com rman
Pessoal, estou com uma duvida sobre o backup online com rman: O banco oracle é 10.2.0.4 , com Linux o tamanho do banco é 150GB. O problema é que ao rodar o backup online , o rman cria muito arquivos e gostaria que criasse um único arquivo de backup. (vide abaixo) *-rw-r- 1 oracle oinstall 1078706176 Oct 14 00:32 WIS_BD_274_1_8ikro0dg.bkp -rw-r- 1 oracle oinstall 273956864 Oct 14 00:35 WIS_BD_275_1_8jkro0sv.bkp -rw-r- 1 oracle oinstall 451461120 Oct 14 00:41 WIS_BD_276_1_8kkro133.bkp -rw-r- 1 oracle oinstall 447250432 Oct 14 00:47 WIS_BD_277_1_8lkro1eq.bkp -rw-r- 1 oracle oinstall 451502080 Oct 14 00:54 WIS_BD_278_1_8mkro1q7.bkp -rw-r- 1 oracle oinstall 448495616 Oct 14 01:00 WIS_BD_279_1_8nkro25a.bkp -rw-r- 1 oracle oinstall 899497984 Oct 14 01:06 WIS_BD_280_1_8okro2gn.bkp -rw-r- 1 oracle oinstall 1196482560 Oct 14 01:12 WIS_BD_281_1_8pkro2sp.bkp -rw-r- 1 oracle oinstall 1144168448 Oct 14 01:18 WIS_BD_282_1_8qkro386.bkp -rw-r- 1 oracle oinstall 579731456 Oct 14 01:23 WIS_BD_283_1_8rkro3iv.bkp -rw-r- 1 oracle oinstall 289947648 Oct 14 01:25 WIS_BD_284_1_8skro3rs.bkp -rw-r- 1 oracle oinstall 279502848 Oct 14 01:28 WIS_BD_285_1_8tkro40o.bkp -rw-r- 1 oracle oinstall 301981696 Oct 14 01:31 WIS_BD_286_1_8ukro45j.bkp* segue as configurações e script de backup online : *RMAN show all ; RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS; CONFIGURE BACKUP OPTIMIZATION OFF; CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/BACKUP_ORACLE/WIS/rman/%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/BACKUP_ORACLE/WIS/rman/snapcf_WIS.f';* *run { sql 'alter system archive log current'; backup as compressed backupset database tag 'BKP-FULL-DIARIO' format '/u02/BACKUP_ORACLE/WIS/rman/%d_BD_%s_%p_%u.bkp' plus archivelog delete input tag 'ARCHIVE_LOG' format '/u02/BACKUP_ORACLE/WIS/rman/%d_arch_%s_%p_%u.bkp' ; delete noprompt obsolete ; }* desde já agradeço a ajuda Jose Carlos [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] problema backup com rman
No meu scrip eu coloco MAXPIECESIZE como no exemplo abaixo. allocate channel c1 type disk format '/backup/FULL_%d_%s_%p_%T.bkp' maxpiecesize 2g; Att. Marcelo E. Procksch 2009/10/14 jose carlos pinho jose...@gmail.com Pessoal, estou com uma duvida sobre o backup online com rman: O banco oracle é 10.2.0.4 , com Linux o tamanho do banco é 150GB. O problema é que ao rodar o backup online , o rman cria muito arquivos e gostaria que criasse um único arquivo de backup. (vide abaixo) *-rw-r- 1 oracle oinstall 1078706176 Oct 14 00:32 WIS_BD_274_1_8ikro0dg.bkp -rw-r- 1 oracle oinstall 273956864 Oct 14 00:35 WIS_BD_275_1_8jkro0sv.bkp -rw-r- 1 oracle oinstall 451461120 Oct 14 00:41 WIS_BD_276_1_8kkro133.bkp -rw-r- 1 oracle oinstall 447250432 Oct 14 00:47 WIS_BD_277_1_8lkro1eq.bkp -rw-r- 1 oracle oinstall 451502080 Oct 14 00:54 WIS_BD_278_1_8mkro1q7.bkp -rw-r- 1 oracle oinstall 448495616 Oct 14 01:00 WIS_BD_279_1_8nkro25a.bkp -rw-r- 1 oracle oinstall 899497984 Oct 14 01:06 WIS_BD_280_1_8okro2gn.bkp -rw-r- 1 oracle oinstall 1196482560 Oct 14 01:12 WIS_BD_281_1_8pkro2sp.bkp -rw-r- 1 oracle oinstall 1144168448 Oct 14 01:18 WIS_BD_282_1_8qkro386.bkp -rw-r- 1 oracle oinstall 579731456 Oct 14 01:23 WIS_BD_283_1_8rkro3iv.bkp -rw-r- 1 oracle oinstall 289947648 Oct 14 01:25 WIS_BD_284_1_8skro3rs.bkp -rw-r- 1 oracle oinstall 279502848 Oct 14 01:28 WIS_BD_285_1_8tkro40o.bkp -rw-r- 1 oracle oinstall 301981696 Oct 14 01:31 WIS_BD_286_1_8ukro45j.bkp* segue as configurações e script de backup online : *RMAN show all ; RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS; CONFIGURE BACKUP OPTIMIZATION OFF; CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/BACKUP_ORACLE/WIS/rman/%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/BACKUP_ORACLE/WIS/rman/snapcf_WIS.f';* *run { sql 'alter system archive log current'; backup as compressed backupset database tag 'BKP-FULL-DIARIO' format '/u02/BACKUP_ORACLE/WIS/rman/%d_BD_%s_%p_%u.bkp' plus archivelog delete input tag 'ARCHIVE_LOG' format '/u02/BACKUP_ORACLE/WIS/rman/%d_arch_%s_%p_%u.bkp' ; delete noprompt obsolete ; }* desde já agradeço a ajuda Jose Carlos [As partes desta mensagem que não continham texto foram removidas] -- Att. Marcelo E. Procksch cel. (11) 7960-6637 [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] problema backup com rman
Algumas regras definem também quantas peças de backup você terá. Backup de Controlfile e Spfile sempre estarão numa peça separada; Se você tiver tablespaces com blocagem diferente, isso também separará o backup em mais de uma peça... Marcus Vinicius Miguel Pedro OCP Database 9i OCP Database 10g OCE RAC 10g mvmpe...@yahoo.com.br On 14/10/2009, at 12:17, Marcelo Procksch wrote: No meu scrip eu coloco MAXPIECESIZE como no exemplo abaixo. allocate channel c1 type disk format '/backup/FULL_%d_%s_%p_%T.bkp' maxpiecesize 2g; Att. Marcelo E. Procksch 2009/10/14 jose carlos pinho jose...@gmail.com Pessoal, estou com uma duvida sobre o backup online com rman: O banco oracle é 10.2.0.4 , com Linux o tamanho do banco é 150GB. O problema é que ao rodar o backup online , o rman cria muito arquivos e gostaria que criasse um único arquivo de backup. (vide abaixo) *-rw-r- 1 oracle oinstall 1078706176 Oct 14 00:32 WIS_BD_274_1_8ikro0dg.bkp -rw-r- 1 oracle oinstall 273956864 Oct 14 00:35 WIS_BD_275_1_8jkro0sv.bkp -rw-r- 1 oracle oinstall 451461120 Oct 14 00:41 WIS_BD_276_1_8kkro133.bkp -rw-r- 1 oracle oinstall 447250432 Oct 14 00:47 WIS_BD_277_1_8lkro1eq.bkp -rw-r- 1 oracle oinstall 451502080 Oct 14 00:54 WIS_BD_278_1_8mkro1q7.bkp -rw-r- 1 oracle oinstall 448495616 Oct 14 01:00 WIS_BD_279_1_8nkro25a.bkp -rw-r- 1 oracle oinstall 899497984 Oct 14 01:06 WIS_BD_280_1_8okro2gn.bkp -rw-r- 1 oracle oinstall 1196482560 Oct 14 01:12 WIS_BD_281_1_8pkro2sp.bkp -rw-r- 1 oracle oinstall 1144168448 Oct 14 01:18 WIS_BD_282_1_8qkro386.bkp -rw-r- 1 oracle oinstall 579731456 Oct 14 01:23 WIS_BD_283_1_8rkro3iv.bkp -rw-r- 1 oracle oinstall 289947648 Oct 14 01:25 WIS_BD_284_1_8skro3rs.bkp -rw-r- 1 oracle oinstall 279502848 Oct 14 01:28 WIS_BD_285_1_8tkro40o.bkp -rw-r- 1 oracle oinstall 301981696 Oct 14 01:31 WIS_BD_286_1_8ukro45j.bkp* segue as configurações e script de backup online : *RMAN show all ; RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS; CONFIGURE BACKUP OPTIMIZATION OFF; CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/BACKUP_ORACLE/WIS/rman/%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/BACKUP_ORACLE/WIS/rman/snapcf_WIS.f';* *run { sql 'alter system archive log current'; backup as compressed backupset database tag 'BKP-FULL-DIARIO' format '/u02/BACKUP_ORACLE/WIS/rman/%d_BD_%s_%p_%u.bkp' plus archivelog delete input tag 'ARCHIVE_LOG' format '/u02/BACKUP_ORACLE/WIS/rman/%d_arch_%s_%p_%u.bkp' ; delete noprompt obsolete ; }* desde já agradeço a ajuda Jose Carlos [As partes desta mensagem que não continham texto foram removidas] -- Att. Marcelo E. Procksch cel. (11) 7960-6637 [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: Oracle + ASM
Muito obrigado pelas informações, isso é pra um teste mesmo, é pro TCC da faculdade, como temos que utilizar recursos de segurança com um baixo custo, pesquisei sobre isso! Vou testar todas essas opções fornecidas.. Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br, jlchiappa jlchia...@... escreveu E uma outra opção possível que me indicaram é http://www.openfiler.com/ , veja lá... E que fique ** BEM ** claro, estamos trocando idéias pra efeito de testes e curiosidade, pra uso suportado e suportável em Produção full plena a história é BEM diferente, CERTAMENTE vc vai ir pras opções comerciais da EMC, da Dell, da NetApp, todas via FIBRA, são animaizinhos ABSOLUTAMENTE diferentes em termos de performance, confiabilidade e (óbvio) preço... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, jlchiappa jlchiappa@ escreveu Pelo que eu entendi o colega lá quer ter um storage separado das máquinas-clientes, além das opções de SAN (que iirc são pagas, há opções baratas mas não grátis) talvez ele possa ter um NAS, aí o FreeNAS em http://www.freenas.org/ pode ser uma opção... Não o usei ainda (quando montei os meus ambientes de estudo em RAC usei VMs mesmo) mas já ouvi falar muito bem desse cara... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Sem ISCSI eu não conheço não. A documentação você encontra facilmente no google. Atenciosamente, Marcos Fontana 2009/10/14 Eli elidias7@ Entendi Marcos, Se não for utilizado essa ferramenta o ISCSI, você conhece outra possibilidade de realizar este setup? Falando nisso você tem algum link com material sobre este ISCSI? Abraços! Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidias7@ Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.marcos@ escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidias7@ Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Script para identificar nomes repetidos
Boa tarde! Preciso muito da ajuda dos amigos. 1.tenho uma tabela de forncedores, que existem nomes iguias ou pelo menos parecidos. Ex: código: 10 Joao Silva Cruz código: 11 Joao Silva Cruz Ou seja, o fornecedor possui 02 cadastros. Preciso identifica-los e desliga-los. podem me audar? obrigado.
Re: [oracle_br] MTMA -- Cursor para Update dentro de proc
Você colocou o Fetch antes da instrução LOOP. Dessa forma, a variável v_dtf recebe apenas o primeiro registro do cursor. Tente colocar o fetch dentro de seu laço loop. Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.com Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [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] MTMA -- Cursor para Update dentro de proc
E, achei desnecessário comentar alguns possíveis erros em seu código, como a falta de where na instrução update pois os colegas já os comentaram acima. De uma boa revisada na proc para ver se esses erros correspondem. Atenciosamente. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Evandro Giachetto evandrogiache...@gmail.com Você colocou o Fetch antes da instrução LOOP. Dessa forma, a variável v_dtf recebe apenas o primeiro registro do cursor. Tente colocar o fetch dentro de seu laço loop. Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.com Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [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] Script para identificar nomes repetidos
vc tem algum outro campo que posso identifica-los ? Como CNPJ por exemplo ? Outra informação importante é que se vc elimina-los do banco vai ter que refazer toda a amarração de dependencia que esse formcedor pode ter com outras tabelas ( Compras, Cta Pagar, etc ) Não conheço outro caminho que não tentar identificar algum outro campo cuja a igualdade seja mais fácil de identificação, pq pelo nome fica um pouco complicado, visto que cada registro pode ser escrito de várias formas, seguindo seu exemplo : Ex: código: 10 Jo*ã*o Silva Cruz código: 11 Joao Silva Cruz código 12 João S. Cruz ( a letra S não necessária mente pode ser SILVA, poder ser outro fornecedor que tenha o nome parecido ) código 13 Joao S. Cruz código 14 João S Cruz e por ai vai, depende muito da forma como foi cadastrado 2009/10/14 cegoncalvesvr cegoncalve...@yahoo.com.br Boa tarde! Preciso muito da ajuda dos amigos. 1.tenho uma tabela de forncedores, que existem nomes iguias ou pelo menos parecidos. Ex: código: 10 Joao Silva Cruz código: 11 Joao Silva Cruz Ou seja, o fornecedor possui 02 cadastros. Preciso identifica-los e desliga-los. podem me audar? obrigado. [As partes desta mensagem que não continham texto foram removidas]
Res: [oracle_br] Script para identificar nomes repetidos
Olá! Aqui tem o que você precisa. http://eduardolegatti.blogspot.com/2007/12/removendo-registros-duplicados-de-uma.html Você pode apagar, desde que os dados não estejam relacionados em outras tabelas. Tenha cuidado com a integridade referencial. Elis De: cegoncalvesvr cegoncalve...@yahoo.com.br Para: oracle_br@yahoogrupos.com.br Enviadas: Qua, Outubro 14, 2009 5:21:13 PM Assunto: [oracle_br] Script para identificar nomes repetidos Boa tarde! Preciso muito da ajuda dos amigos. 1.tenho uma tabela de forncedores, que existem nomes iguias ou pelo menos parecidos. Ex: código: 10 Joao Silva Cruz código: 11 Joao Silva Cruz Ou seja, o fornecedor possui 02 cadastros. Preciso identifica-los e desliga-los. podem me audar? obrigado. Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Script para identificar nomes repetidos
Tal qual o amigo do outro post disse, não conheço outra forma de fazer isso senão verificando caso a caso. Você pode tentar montar uma query para pegar os casos repetidos, eliminando os espaços dos textos e convertendo tudo para maiusculo ou minusculo. (Se a única forma de identificá-los for pelo nome). Realmente, o ideal seria existir algum campo tipo CNPJ cuja duplicidade é mais difícil. Após identificar os casos, você terá que alterar em todas as referências das tabelas que possuem uma chave estrangeira apontando para sua tabela de fornecedores para que referenciem para o registro que não será excluído. Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Roberto Oshikawa rcoshik...@gmail.com vc tem algum outro campo que posso identifica-los ? Como CNPJ por exemplo ? Outra informação importante é que se vc elimina-los do banco vai ter que refazer toda a amarração de dependencia que esse formcedor pode ter com outras tabelas ( Compras, Cta Pagar, etc ) Não conheço outro caminho que não tentar identificar algum outro campo cuja a igualdade seja mais fácil de identificação, pq pelo nome fica um pouco complicado, visto que cada registro pode ser escrito de várias formas, seguindo seu exemplo : Ex: código: 10 Jo*ã*o Silva Cruz código: 11 Joao Silva Cruz código 12 João S. Cruz ( a letra S não necessária mente pode ser SILVA, poder ser outro fornecedor que tenha o nome parecido ) código 13 Joao S. Cruz código 14 João S Cruz e por ai vai, depende muito da forma como foi cadastrado 2009/10/14 cegoncalvesvr cegoncalve...@yahoo.com.brcegoncalvesvr%40yahoo.com.br Boa tarde! Preciso muito da ajuda dos amigos. 1.tenho uma tabela de forncedores, que existem nomes iguias ou pelo menos parecidos. Ex: código: 10 Joao Silva Cruz código: 11 Joao Silva Cruz Ou seja, o fornecedor possui 02 cadastros. Preciso identifica-los e desliga-los. podem me audar? obrigado. [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: Script para identificar nomes repetidos
Colega, igualdade de strings é uma coisa, é RIDICULAMENTE simples, já SIMILARIDADE já é um problema computacional ** BEM ** mais complexo Pra igualdade poderia ser algo tipo : SELECT nnn FROM nomedatabela GROUP BY colunastring HAVING COUNT(*) 1; Para SIMILARIDADE, a primeira coisa é saber se uma similaridade GRÁFICA já te atende (ie, strings diferentes apenas nos acentos, em preposições/artigos, espaços em branco, etc) , pra isso vc poderia agrupar a coluna string REMOVENDO os espaços em branco 'extras' (ie, aonde houver mais de um) e demais caracteres citados, poderia ser via REPLACE ou TRANSLATE. Já se o que vc precisa é similaridade POR SOM (ie, HELENA e ELENA, ELIZABETH, ELISABETE e ELISABETH, strings diferentes mas com som semelhante), o bd Oracle tem a função built-in SOUNDEX mas ela não é para Português, se ela não o atender aí vc teria que escrever uma rotina pra isso ou comprar um pronto : http://www.fastway.com.br/fonografo/ é um fornecedor conhecido de rotina pronta, e pra vc escrever a sua um algoritmo fácil e com acerto razoável é o BuscaBR, http://www.linhadecodigo.com.br/Artigo.aspx?id=2237 tem umas dicas da implementação dele. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, cegoncalvesvr cegoncalve...@... escreveu Boa tarde! Preciso muito da ajuda dos amigos. 1.tenho uma tabela de forncedores, que existem nomes iguias ou pelo menos parecidos. Ex: código: 10 Joao Silva Cruz código: 11 Joao Silva Cruz Ou seja, o fornecedor possui 02 cadastros. Preciso identifica-los e desliga-los. podem me audar? obrigado.
Re: [oracle_br] MTMA -- Cursor para Update dentro de proc
Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento mesmo); - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. A coluna DT_FINAL foi inserida na tabela após a sua criação e população. Esse comando eu estou fazendo apenas para fazer um UPDATE geral utilizando para isso um cursor, com comando FOR UPDATE (na declaração do cursor) e, posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro. - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? O meu editor é o PL/SQL developer v 5. Grato! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@gmail.com E, achei desnecessário comentar alguns possíveis erros em seu código, como a falta de where na instrução update pois os colegas já os comentaram acima. De uma boa revisada na proc para ver se esses erros correspondem. Atenciosamente. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br evandro%40clickinterativa.com.br 2009/10/14 Evandro Giachetto evandrogiache...@gmail.comevandrogiachetto%40gmail.com Você colocou o Fetch antes da instrução LOOP. Dessa forma, a variável v_dtf recebe apenas o primeiro registro do cursor. Tente colocar o fetch dentro de seu laço loop. Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br evandro%40clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.commaltamatheus%40gmail.com Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Migração de banco de Oracle 9i para Oracle 10g - c riação e remoção de parâmetros
Pessoal, estou realizando a migração de um banco Oracle na seguinte plaforma/sistema: Origem: Suse enterprise Linux 9 (i586) Oracle 9i (9.2.0.4) Destino: Suse enterprise Linux 10 (x86_64) Oracle 10g Release 2 Antes de realizar a migração dos dados tive que realizar o upgrade do Oracle 9.2.0.1 para o 9.2.0.4, isso até que foi tranquilo. Porém, agora estou no passo da execução do script utlu102i.sql para verificar as pendências a serem realizadas antes do transporte dos dados: O script me da a seguinte mensagem: SQL @utlu102i.sql Oracle Database 10.2 Upgrade Information Utility10-14-2009 12:24:26 . ** Database: ** -- name:DBICARO -- version:9.2.0.4.0 -- compatible: 9.2.0.0.0 ** Update Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** WARNING: -- streams_pool_size is not currently defined and needs a value of at least 50331648 . ** Obsolete Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** -- hash_join_enabled . Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, porém não encontrei nenhuma forma de adiciona-lo. Pesquisando na internet descobri que o parâmetro streams_pool_size não existe no Oracle 9i [1][2]. A pergunta é: como eu faço para adicionar este parâmetro e remover o parâmetro hash_join_enabled que está obsoleto ? Apenas para constar estou seguindo o tópico de migração da página: http://download.oracle.com/docs/cd/B19306_01/server.102/b14238/upgrade.htm#CACHIDJD [1] http://www.orafaq.com/parms/parm1952.htm [2] http://www.juliandyke.com/Internals/Parameters/streams_pool_size.html Quem puder me ajugar, eu agradeço. Obrigado Fernando [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] MTMA -- Cursor para Update dentro de proc
Algo que talvez possa te ajudar. http://codigofonte.uol.com.br/codigo/sql/oracle/utilizando-cursor-com-plsql Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.com Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento mesmo); - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. A coluna DT_FINAL foi inserida na tabela após a sua criação e população. Esse comando eu estou fazendo apenas para fazer um UPDATE geral utilizando para isso um cursor, com comando FOR UPDATE (na declaração do cursor) e, posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro. - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? O meu editor é o PL/SQL developer v 5. Grato! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@gmail.comevandrogiachetto%40gmail.com E, achei desnecessário comentar alguns possíveis erros em seu código, como a falta de where na instrução update pois os colegas já os comentaram acima. De uma boa revisada na proc para ver se esses erros correspondem. Atenciosamente. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br evandro%40clickinterativa.com.brevandro% 40clickinterativa.com.br 2009/10/14 Evandro Giachetto evandrogiache...@gmail.comevandrogiachetto%40gmail.com evandrogiachetto%40gmail.com Você colocou o Fetch antes da instrução LOOP. Dessa forma, a variável v_dtf recebe apenas o primeiro registro do cursor. Tente colocar o fetch dentro de seu laço loop. Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br evandro%40clickinterativa.com.brevandro% 40clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.commaltamatheus%40gmail.com maltamatheus%40gmail.com Galera... Estou tentando desenvolver uma proc que tem por objetivo atualizar uma coluna nova que acaba de ser acrescida na tabela, ou seja, ela (a coluna) econtra-se sem registros. No entanto, quando do emprego do cursor (em tempo de execução) eu percebo que a proc está atualizando somente a primeira linha da tabela (ou seja, somente uma única célula). Estou encaminhando a proc... Quem puder ajudar, ficarei grato! Valew pessoal! Matheus Malta O certo é certo mesmo q ninguém o faça.. e o errado é errado mesmo q todo mundo faça... Procure fazer o certo para não explicar porque resolveu fazer errado.. *PROC* create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is --/*==*/ --|| PROC DE TESTE || --||--|| --|| AUTOR: Matheus || --|| MOTIVO: Treino || --|| TABELA: aux.teste_matheus || --/*==*/ v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; begin --Abrindo o cursor open mma_update; --Obtendo os dados do cursor fetch mma_update into v_dtf; while mma_update%isopen loop --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf; --sair quando não houver informações exit loop when mma_update%notfound; --end loop; --Fechando cursor close mma_update; --Salvando as informações commit; -- Tratando os erros EXCEPTION WHEN NO_DATA_FOUND then v_erro := 'Parâmetro não encontrado!'; dbms_output.put_line(v_erro); WHEN OTHERS THEN v_erro := 'Procedimento não executado - Erro: '||SQLERRM; dbms_output.put_line(v_erro); end; [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Datafile corrompido
Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53 Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. -- Abraços, Mária Cristina Cel: 031-8883-5543 E-mail: mariancrist...@gmail.com MSN: mcristinasil...@hotmail.com -- O começo é a parte mais importante do trabalho. - Platão [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Migração de banco de Oracle 9i para Oracle 10g - criação e remoção de parâmetros
Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, não, não, não : os parâmetros ajustáveis de databases Oracle *** não *** ficam 'dentro do banco' , e sim em ARQUIVOS EXTERNOS, que vc PODE SIM alterar (fazendo cópia antes é claro)... O que o script está te dizendo é que QUANDO vc for migrar o ARQUIVO EXTERNO com os params que vc for usar para inicializar a instãncia 10g deverá ter o tal parâmetro presente, é isso Esses arquivos podem ser do tipo TEXTO (os chamados pfiles), que vc simplesmente edita com um editor de textos ASCII puro, ou podem ser binários, caso em que vc os edita com a instância 9i ativa usando os comandos ALTER próprios : meu conselho é que vc se hoje tem spfiles no 9i crie um pfile texto com o comando CREATE PFILE e use esse como o arquivo externo de params da instância 10g []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Fernando Mariano gro...@... escreveu Pessoal, estou realizando a migração de um banco Oracle na seguinte plaforma/sistema: Origem: Suse enterprise Linux 9 (i586) Oracle 9i (9.2.0.4) Destino: Suse enterprise Linux 10 (x86_64) Oracle 10g Release 2 Antes de realizar a migração dos dados tive que realizar o upgrade do Oracle 9.2.0.1 para o 9.2.0.4, isso até que foi tranquilo. Porém, agora estou no passo da execução do script utlu102i.sql para verificar as pendências a serem realizadas antes do transporte dos dados: O script me da a seguinte mensagem: SQL @utlu102i.sql Oracle Database 10.2 Upgrade Information Utility10-14-2009 12:24:26 . ** Database: ** -- name:DBICARO -- version:9.2.0.4.0 -- compatible: 9.2.0.0.0 ** Update Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** WARNING: -- streams_pool_size is not currently defined and needs a value of at least 50331648 . ** Obsolete Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** -- hash_join_enabled . Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, porém não encontrei nenhuma forma de adiciona-lo. Pesquisando na internet descobri que o parâmetro streams_pool_size não existe no Oracle 9i [1][2]. A pergunta é: como eu faço para adicionar este parâmetro e remover o parâmetro hash_join_enabled que está obsoleto ? Apenas para constar estou seguindo o tópico de migração da página: http://download.oracle.com/docs/cd/B19306_01/server.102/b14238/upgrade.htm#CACHIDJD [1] http://www.orafaq.com/parms/parm1952.htm [2] http://www.juliandyke.com/Internals/Parameters/streams_pool_size.html Quem puder me ajugar, eu agradeço. Obrigado Fernando [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] bloco de dados foi corrompido
Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: MTMA -- Cursor para Update dentro de proc
Segue coments : ... posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro... reveja o código que vc nos enviou, pois nele ** NÃO ** está o WHERE CURRENT OF, ok ?? - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. não, colega, não, pelo jeito vc não entendeu, vamos tentar de novo : SEM um WHERE qquer no UPDATE (poderia sim ser o WHERE CURRENT OF), o valor lido/calculado na primeira linha do resultset do seu cursor vai ser gravado EM TODOS OS REGISTROS da sua tabela, de uma vez só, é DUVIDOSO que seja isso que vc quer A dedução que faço da sua lógica é que vc quer ler dados da linha 1 do cursor , fazer um cálculo e atualizar ESSA MESMA LINHA 1 apenas com o resultado, depois ler a linha 2 e atualizar APENAS ESSA LINHA 2 com o novo valor, assim por diante, e rigorosamente NÂO É isso que o seu UPDATE sem WHERE faz, yes ?? - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? Ao vc fazer um cursor explícito (cursor 'manual'), com OPEN/FETCH/CLOSE, necessariamente a lógica é : abra UMA VEZ SÓ, repita o FETCH até não haver mais registros (portanto apenas ELE está dentro do laço), e só quando todos foram lidos feche o cursor (portanto o CLOS está FORA do laço, também... Ficaria + ou - assim : create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; BEGIN --Abrindo o cursor open mma_update; loop --Obtendo os dados do cursor fetch mma_update into v_dtf; --sair quando não houver informações exit when mma_update%notfound; --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf WHERE CURRENT OF mma_update; end loop; --Fechando cursor close mma_update; --Salvando as informações commit; END; ululantemente óbvio, já que vc quis (para testes, ok) trabalhar com Cursor, sempre há a figura do cursor IMPLÍCITO (cursor 'automático'), aonde o OPEN/FETCH/CLOSE são feitos pra vc transparentemente, a VARIÁVEL DE RETORNO é criada transparentemente, veja como realmente ficaria mais simples : create or replace procedure aux.prc_teste_matheus_auto (v_erro out varchar2) is BEGIN --Abrindo o cursor for v_dtf in ( select (date_key - rt_qtde_retorno) dt_final, rowid v_row_id from aux.teste_matheus ) loop --Obtendo os dados do cursor --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf.dt_final WHERE rowid = v_dtf.v_row_id; end loop; commit; END; Os conceitos TODOS que comentei/usei aqui estão muito bem definidos no manual Oracle de PL/SQL, ele deveria ser se já não é a tua fonte principal... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento mesmo); - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. A coluna DT_FINAL foi inserida na tabela após a sua criação e população. Esse comando eu estou fazendo apenas para fazer um UPDATE geral utilizando para isso um cursor, com comando FOR UPDATE (na declaração do cursor) e, posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro. - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? O meu editor é o PL/SQL developer v 5. Grato! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@... E, achei desnecessário comentar alguns possíveis erros em seu código, como a falta de where na instrução update pois os colegas já os comentaram acima. De uma boa revisada na proc para ver se esses erros correspondem. Atenciosamente. Evandro Giachetto Oracle Certified Associate evan...@... evandro%40clickinterativa.com.br 2009/10/14 Evandro Giachetto evandrogiache...@...evandrogiachetto%40gmail.com Você colocou o Fetch antes da instrução LOOP. Dessa forma, a variável v_dtf recebe apenas o primeiro registro do cursor. Tente
Re: [oracle_br] Re: MTMA -- Cursor para Update dentro de proc
Obrigado Evandro...Valew mesmo... Vou testar essas dicas e te falo caso haja alguma outra novidade... Mesmo assim... Valew! Matheus 2009/10/14 jlchiappa jlchia...@yahoo.com.br Segue coments : ... posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro... reveja o código que vc nos enviou, pois nele ** NÃO ** está o WHERE CURRENT OF, ok ?? - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. não, colega, não, pelo jeito vc não entendeu, vamos tentar de novo : SEM um WHERE qquer no UPDATE (poderia sim ser o WHERE CURRENT OF), o valor lido/calculado na primeira linha do resultset do seu cursor vai ser gravado EM TODOS OS REGISTROS da sua tabela, de uma vez só, é DUVIDOSO que seja isso que vc quer A dedução que faço da sua lógica é que vc quer ler dados da linha 1 do cursor , fazer um cálculo e atualizar ESSA MESMA LINHA 1 apenas com o resultado, depois ler a linha 2 e atualizar APENAS ESSA LINHA 2 com o novo valor, assim por diante, e rigorosamente NÂO É isso que o seu UPDATE sem WHERE faz, yes ?? - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? Ao vc fazer um cursor explícito (cursor 'manual'), com OPEN/FETCH/CLOSE, necessariamente a lógica é : abra UMA VEZ SÓ, repita o FETCH até não haver mais registros (portanto apenas ELE está dentro do laço), e só quando todos foram lidos feche o cursor (portanto o CLOS está FORA do laço, também... Ficaria + ou - assim : create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; BEGIN --Abrindo o cursor open mma_update; loop --Obtendo os dados do cursor fetch mma_update into v_dtf; --sair quando não houver informações exit when mma_update%notfound; --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf WHERE CURRENT OF mma_update; end loop; --Fechando cursor close mma_update; --Salvando as informações commit; END; ululantemente óbvio, já que vc quis (para testes, ok) trabalhar com Cursor, sempre há a figura do cursor IMPLÍCITO (cursor 'automático'), aonde o OPEN/FETCH/CLOSE são feitos pra vc transparentemente, a VARIÁVEL DE RETORNO é criada transparentemente, veja como realmente ficaria mais simples : create or replace procedure aux.prc_teste_matheus_auto (v_erro out varchar2) is BEGIN --Abrindo o cursor for v_dtf in ( select (date_key - rt_qtde_retorno) dt_final, rowid v_row_id from aux.teste_matheus ) loop --Obtendo os dados do cursor --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf.dt_final WHERE rowid = v_dtf.v_row_id; end loop; commit; END; Os conceitos TODOS que comentei/usei aqui estão muito bem definidos no manual Oracle de PL/SQL, ele deveria ser se já não é a tua fonte principal... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento mesmo); - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. A coluna DT_FINAL foi inserida na tabela após a sua criação e população. Esse comando eu estou fazendo apenas para fazer um UPDATE geral utilizando para isso um cursor, com comando FOR UPDATE (na declaração do cursor) e, posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro. - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? O meu editor é o PL/SQL developer v 5. Grato! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@... E, achei desnecessário comentar alguns possíveis erros em seu código, como a falta de where na instrução update pois os colegas já os comentaram acima. De uma boa revisada na proc para ver se esses erros correspondem. Atenciosamente. Evandro Giachetto Oracle Certified Associate evan...@... evandro%40clickinterativa.com.br 2009/10/14 Evandro Giachetto evandrogiache...@...evandrogiachetto%
Re: [oracle_br] Re: MTMA -- Cursor para Update dentro de proc
Eita. Só falei do Fetch fora do laço Loop... Agradeça ao Chiapa por todas essas dicas... =] Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.com Obrigado Evandro...Valew mesmo... Vou testar essas dicas e te falo caso haja alguma outra novidade... Mesmo assim... Valew! Matheus 2009/10/14 jlchiappa jlchia...@yahoo.com.br jlchiappa%40yahoo.com.br Segue coments : ... posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro... reveja o código que vc nos enviou, pois nele ** NÃO ** está o WHERE CURRENT OF, ok ?? - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. não, colega, não, pelo jeito vc não entendeu, vamos tentar de novo : SEM um WHERE qquer no UPDATE (poderia sim ser o WHERE CURRENT OF), o valor lido/calculado na primeira linha do resultset do seu cursor vai ser gravado EM TODOS OS REGISTROS da sua tabela, de uma vez só, é DUVIDOSO que seja isso que vc quer A dedução que faço da sua lógica é que vc quer ler dados da linha 1 do cursor , fazer um cálculo e atualizar ESSA MESMA LINHA 1 apenas com o resultado, depois ler a linha 2 e atualizar APENAS ESSA LINHA 2 com o novo valor, assim por diante, e rigorosamente NÂO É isso que o seu UPDATE sem WHERE faz, yes ?? - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? Ao vc fazer um cursor explícito (cursor 'manual'), com OPEN/FETCH/CLOSE, necessariamente a lógica é : abra UMA VEZ SÓ, repita o FETCH até não haver mais registros (portanto apenas ELE está dentro do laço), e só quando todos foram lidos feche o cursor (portanto o CLOS está FORA do laço, também... Ficaria + ou - assim : create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; BEGIN --Abrindo o cursor open mma_update; loop --Obtendo os dados do cursor fetch mma_update into v_dtf; --sair quando não houver informações exit when mma_update%notfound; --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf WHERE CURRENT OF mma_update; end loop; --Fechando cursor close mma_update; --Salvando as informações commit; END; ululantemente óbvio, já que vc quis (para testes, ok) trabalhar com Cursor, sempre há a figura do cursor IMPLÍCITO (cursor 'automático'), aonde o OPEN/FETCH/CLOSE são feitos pra vc transparentemente, a VARIÁVEL DE RETORNO é criada transparentemente, veja como realmente ficaria mais simples : create or replace procedure aux.prc_teste_matheus_auto (v_erro out varchar2) is BEGIN --Abrindo o cursor for v_dtf in ( select (date_key - rt_qtde_retorno) dt_final, rowid v_row_id from aux.teste_matheus ) loop --Obtendo os dados do cursor --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf.dt_final WHERE rowid = v_dtf.v_row_id; end loop; commit; END; Os conceitos TODOS que comentei/usei aqui estão muito bem definidos no manual Oracle de PL/SQL, ele deveria ser se já não é a tua fonte principal... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento mesmo); - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. A coluna DT_FINAL foi inserida na tabela após a sua criação e população. Esse comando eu estou fazendo apenas para fazer um UPDATE geral utilizando para isso um cursor, com comando FOR UPDATE (na declaração do cursor) e, posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro. - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? O meu editor é o PL/SQL developer v 5. Grato! Matheus Malta 2009/10/14 Evandro Giachetto
[oracle_br] Re: bloco de dados foi corrompido
Colega, um bloco corrompido normalmente fica ** ilegível ** (seja porque o SO não consegue ler esse bloco no disco, seja porque os metadados dele (no cabeçalho, principalmente) estão inválidos/fora de formato), então o que vc tem que fazer é trazer a informação de um backup anterior, ponto : é bastante óbvio, se está ilegível NÃO TEM COMO o banco acessar a informação pra tentar 'recuperar' o tal bloco, a informação TEM que ser trazida de outra fonte... Pra variar vc não diz a VERSÃO de banco que estamos a discutir, nem quais tipos de backup existem e feitos com quais ferramentas, mas no 9i em diante com backups RMAN vc já poe recuperar só os dados do bloco corrompido, não é preciso uma volta full. Em não havendo backup, as suas opções são : a) identificar do que o bloco corrupto faz parte, se for um objeto que pode ser refeito sem perda de dados (como um índice, ou uma tablespace temporary) refaça-o b) se a) não foi o caso, tente se puder obter a informação num ponto antes da corrupção (seja com reprocesso ou com busca de dados em outras fontes de tiver, via FLASHBACK QUERY, FLASHBACK DATABASE, LOG MINER, recover de database/tablespace, o que vc tiver disponível), reserve essa informação, elimine o bloco corrupto (pode ser via DROP do objeto, pode ser com o DBMS_REPAIR) e volte a informação c) se a) não foi o caso, não tem backup, e não conseguiu obter a informação como estava antes, vc VAI PERDER OS DADOS que estavam nesse bloco corrupto, PONTO : para poder voltar a acessar o segmento, remova o bloco corrupto, pode ser via DBMS_REPAIR === e o MAIS IMPORTANTE DE TUDO : um bd Oracle é ** extremamente ** confiável em operação normal, nós NÃO estamos falando de um Access da vida, nem de um mysql nem nada assim, então COM CERTEZA blocos corrompidos são decorrentes de pau no hardware (seja placa-mãe, memória, discos, o que for) e/ou pau de software (bugs, seja no próprio software de banco, seja no Sistema Operacional, em device drivers, na própria Aplicação) ... INVESTIGUE e ENCONTRE a causa da corrupção e a corrija, senão vc vai cair no mesmo problema de novo e de novo []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Mária Cristina Silva mariancrist...@... escreveu Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] bloco de dados foi corrompido
Boa tarde, Se você estiver usando o Oracle 10g ou superior, dê uma procurada sovre o comando block recover do RMAN. Atenciosamente, Rodrigo Mufalani DBA - OCP 10g 11g +RAC Oracle ACE Member www.mrdba.com.br/mufalani/ mufal...@mrdba.com.br Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [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: bloco de dados foi corrompido
na verdade no 9i (r2, iirc) já tem essa opção, http://www.oracle-base.com/articles/9i/RecoveryManagerEnhancements9i.php mostra exemplo... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Rodrigo Mufalani mufal...@... escreveu Boa tarde, Se você estiver usando o Oracle 10g ou superior, dê uma procurada sovre o comando block recover do RMAN. Atenciosamente, Rodrigo Mufalani DBA - OCP 10g 11g +RAC Oracle ACE Member www.mrdba.com.br/mufalani/ mufal...@... Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [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: bloco de dados foi corrompido
Só lembrando que o Block Media Recovery está disponível somente no Enterprise Edition. -- Att. Marcelo E. Procksch 2009/10/14 jlchiappa jlchia...@yahoo.com.br na verdade no 9i (r2, iirc) já tem essa opção, http://www.oracle-base.com/articles/9i/RecoveryManagerEnhancements9i.phpmostra exemplo... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Rodrigo Mufalani mufal...@... escreveu Boa tarde, Se você estiver usando o Oracle 10g ou superior, dê uma procurada sovre o comando block recover do RMAN. Atenciosamente, Rodrigo Mufalani DBA - OCP 10g 11g +RAC Oracle ACE Member www.mrdba.com.br/mufalani/ mufal...@... Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: MTMA -- Cursor para Update dentro de proc
Tô ligado... Mas acho que era esse o principal motivo.. pq ele tava atualizando somente e tão somente a primeira linha da tabela mesmo... o objetivo do exercício era entender mais sobre um cursor e seu funcionamento... Mesmo assim... valeu a dica em geral do pessoALL... E valeu aí também Chiappa... Agora... a PROC rodou mas ela retorna um erro.. ORA-01410 - INVALID ROWID Se alguém souber mais sobre esse erro e quiser comentar, agradeço bastante... Falows! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@gmail.com Eita. Só falei do Fetch fora do laço Loop... Agradeça ao Chiapa por todas essas dicas... =] Att. Evandro Giachetto Oracle Certified Associate evan...@clickinterativa.com.br evandro%40clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@gmail.commaltamatheus%40gmail.com Obrigado Evandro...Valew mesmo... Vou testar essas dicas e te falo caso haja alguma outra novidade... Mesmo assim... Valew! Matheus 2009/10/14 jlchiappa jlchia...@yahoo.com.br jlchiappa%40yahoo.com.brjlchiappa% 40yahoo.com.br Segue coments : ... posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro... reveja o código que vc nos enviou, pois nele ** NÃO ** está o WHERE CURRENT OF, ok ?? - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. não, colega, não, pelo jeito vc não entendeu, vamos tentar de novo : SEM um WHERE qquer no UPDATE (poderia sim ser o WHERE CURRENT OF), o valor lido/calculado na primeira linha do resultset do seu cursor vai ser gravado EM TODOS OS REGISTROS da sua tabela, de uma vez só, é DUVIDOSO que seja isso que vc quer A dedução que faço da sua lógica é que vc quer ler dados da linha 1 do cursor , fazer um cálculo e atualizar ESSA MESMA LINHA 1 apenas com o resultado, depois ler a linha 2 e atualizar APENAS ESSA LINHA 2 com o novo valor, assim por diante, e rigorosamente NÂO É isso que o seu UPDATE sem WHERE faz, yes ?? - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? Ao vc fazer um cursor explícito (cursor 'manual'), com OPEN/FETCH/CLOSE, necessariamente a lógica é : abra UMA VEZ SÓ, repita o FETCH até não haver mais registros (portanto apenas ELE está dentro do laço), e só quando todos foram lidos feche o cursor (portanto o CLOS está FORA do laço, também... Ficaria + ou - assim : create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; BEGIN --Abrindo o cursor open mma_update; loop --Obtendo os dados do cursor fetch mma_update into v_dtf; --sair quando não houver informações exit when mma_update%notfound; --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf WHERE CURRENT OF mma_update; end loop; --Fechando cursor close mma_update; --Salvando as informações commit; END; ululantemente óbvio, já que vc quis (para testes, ok) trabalhar com Cursor, sempre há a figura do cursor IMPLÍCITO (cursor 'automático'), aonde o OPEN/FETCH/CLOSE são feitos pra vc transparentemente, a VARIÁVEL DE RETORNO é criada transparentemente, veja como realmente ficaria mais simples : create or replace procedure aux.prc_teste_matheus_auto (v_erro out varchar2) is BEGIN --Abrindo o cursor for v_dtf in ( select (date_key - rt_qtde_retorno) dt_final, rowid v_row_id from aux.teste_matheus ) loop --Obtendo os dados do cursor --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf.dt_final WHERE rowid = v_dtf.v_row_id; end loop; commit; END; Os conceitos TODOS que comentei/usei aqui estão muito bem definidos no manual Oracle de PL/SQL, ele deveria ser se já não é a tua fonte principal... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Obrigado pessoal pelas dicas... Gostaria de comentar algumas sugestões que talvez esclareçam melhor a pergunta que eu fiz: - SIM, o select (que denomina o cursor) retorna dados; - Eu já realizei o comando UPDATE direto, sem a utilização do cursor... e vi que realmente ele dava certo.. Quis utilizar o cursor mais para fins didáticos (treinamento
[oracle_br] Re: DBA Eduardo Morelli em Curitiba
Olá! Alguém tem maiores informações sobre este centro de treinamentos 'Andrade Bueno', sobre o curso e o ministrante do curso? Tenho interesse em participar e gostaria de obter mais detalhes. Anderson --- Em oracle_br@yahoogrupos.com.br, pabgarcia pabgar...@... escreveu Quem possui o excelente livro ORACLE 9i SQL, PL/SQL E ADMINISTRAÇÃO (esgotado), certamente já sabe de quem estou falando: No próximo mês de novembro, o consultor e autor Eduardo Terra Morelli (www.eduardomorelli.com) estará em Curitiba, ministrando um treinamento de 24 horas em Administração de Banco de Dados Oracle 11g na Andrade Bueno Treinamentos, para apenas 12 pessoas. É preciso se apressar para garantir a sua vaga! Mais informações em www.andradebueno.com.br Conteúdo do curso: 1. Introdução à Administração de Bancos de Dados Oracle O Papel do DBA 2. Arquitetura Arquivos, Memória, Processos, Instância, Estrutura, Operações 3. Instalação Cuidados prévios, Sequencia, Criação de Banco de Dados 4. Instâncias Configuração, Etapas de STARTUP, Etapas de SHUTDOWN 5. Tablespaces Organização Física x Organização Lógica, Gerência Automática de Espaço (ASM), Gerência de Arquivos (OMF), Gerência de Tablespaces 6. Segmentos Tipos, Armazenamento, Tabelas, Índices, Áreas de Undo, Configuração de área de retenção, Áreas Temporárias 7. Segurança Perfis (profiles), Gerência de Senhas, Políticas de Segurança, Auditoria, Patches de Segurança 8. Backup/Recuperação Tipos de Falha, Gerência de Área de Flashback, Políticas de Backup, Tipos, Lógico, Frio (cold), Quente (hot), Modo Archive, RMAN
[oracle_br] Re: MTMA -- Cursor para Update dentro de proc
Via de regra isso indica que OU o rowid da tabela mudou (por exemplo, foi feito algum tipo de MOVE nela), OU há um índice inválido/inusável apontando pra um ROWID que não existe mais, OU um cursor FOR UPDATE (que faz LOCKs) foi interrompido por um COMMIT enquanto aberto, coisas assim... Mostra aí o seu código e dá um exemplo (incluindo CREATE TABLEs e uns INSERTs pra preencher de dados) que a gente pode tentar reproduzir e dizer mais... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Matheus Malta de Aguiar maltamath...@... escreveu Tô ligado... Mas acho que era esse o principal motivo.. pq ele tava atualizando somente e tão somente a primeira linha da tabela mesmo... o objetivo do exercício era entender mais sobre um cursor e seu funcionamento... Mesmo assim... valeu a dica em geral do pessoALL... E valeu aí também Chiappa... Agora... a PROC rodou mas ela retorna um erro.. ORA-01410 - INVALID ROWID Se alguém souber mais sobre esse erro e quiser comentar, agradeço bastante... Falows! Matheus Malta 2009/10/14 Evandro Giachetto evandrogiache...@... Eita. Só falei do Fetch fora do laço Loop... Agradeça ao Chiapa por todas essas dicas... =] Att. Evandro Giachetto Oracle Certified Associate evan...@... evandro%40clickinterativa.com.br 2009/10/14 Matheus Malta de Aguiar maltamath...@...maltamatheus%40gmail.com Obrigado Evandro...Valew mesmo... Vou testar essas dicas e te falo caso haja alguma outra novidade... Mesmo assim... Valew! Matheus 2009/10/14 jlchiappa jlchia...@... jlchiappa%40yahoo.com.brjlchiappa% 40yahoo.com.br Segue coments : ... posteriormente, a instrução WHERE CURRENT OF para q o valor a ser aplicado NÃO SEJA somente o do último ponteiro... reveja o código que vc nos enviou, pois nele ** NÃO ** está o WHERE CURRENT OF, ok ?? - A ausência do WHERE se dá pelo fato de que todas as linhas da tabela deverão ser atualizadas. não, colega, não, pelo jeito vc não entendeu, vamos tentar de novo : SEM um WHERE qquer no UPDATE (poderia sim ser o WHERE CURRENT OF), o valor lido/calculado na primeira linha do resultset do seu cursor vai ser gravado EM TODOS OS REGISTROS da sua tabela, de uma vez só, é DUVIDOSO que seja isso que vc quer A dedução que faço da sua lógica é que vc quer ler dados da linha 1 do cursor , fazer um cálculo e atualizar ESSA MESMA LINHA 1 apenas com o resultado, depois ler a linha 2 e atualizar APENAS ESSA LINHA 2 com o novo valor, assim por diante, e rigorosamente NÂO É isso que o seu UPDATE sem WHERE faz, yes ?? - Repassei a instrução de FETCH para dentro do laço de LOOP e a proc recompilou normalmente... O problema é que, na hora de rodar, ele informa erro e indica q o cursor já está aberto... Como devo proceder nesses casos? Ao vc fazer um cursor explícito (cursor 'manual'), com OPEN/FETCH/CLOSE, necessariamente a lógica é : abra UMA VEZ SÓ, repita o FETCH até não haver mais registros (portanto apenas ELE está dentro do laço), e só quando todos foram lidos feche o cursor (portanto o CLOS está FORA do laço, também... Ficaria + ou - assim : create or replace procedure aux.prc_teste_matheus (v_erro out varchar2) is v_rqr number; v_dtf date; --Criando o cursor para atualização da tabela cursor mma_update is select (date_key - rt_qtde_retorno) dt_final from aux.teste_matheus for update; BEGIN --Abrindo o cursor open mma_update; loop --Obtendo os dados do cursor fetch mma_update into v_dtf; --sair quando não houver informações exit when mma_update%notfound; --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf WHERE CURRENT OF mma_update; end loop; --Fechando cursor close mma_update; --Salvando as informações commit; END; ululantemente óbvio, já que vc quis (para testes, ok) trabalhar com Cursor, sempre há a figura do cursor IMPLÍCITO (cursor 'automático'), aonde o OPEN/FETCH/CLOSE são feitos pra vc transparentemente, a VARIÁVEL DE RETORNO é criada transparentemente, veja como realmente ficaria mais simples : create or replace procedure aux.prc_teste_matheus_auto (v_erro out varchar2) is BEGIN --Abrindo o cursor for v_dtf in ( select (date_key - rt_qtde_retorno) dt_final, rowid v_row_id from aux.teste_matheus ) loop --Obtendo os dados do cursor --Atualizando a Tabela a partir dos valores obtidos update aux.teste_matheus set dt_final = v_dtf.dt_final WHERE rowid = v_dtf.v_row_id; end loop; commit; END; Os conceitos TODOS que comentei/usei aqui estão muito bem definidos no manual Oracle de PL/SQL, ele
Re: [oracle_br] Re: Migração de banco de Oracle 9i para Oracle 10g - criação e remoção de parâmetros
Pessoal, consegui realizar a migração do Oracle 9i para Oracle 10g. Vejam a mensagem abaixo após executar o @utlu102i.sql no Oracle 10g. -- * SQL @utlu102i.sql Oracle Database 10.2 Upgrade Information Utility10-30-2009 22:07:51 . ** Database: ** -- name:ERP -- version:10.2.0.1.0 -- compatible: 10.2.0.1.0 . Database already upgraded; to rerun upgrade use rdbms/admin/catupgrd.sql. PL/SQL procedure successfully completed. * -- Porém tem um problema, tem uma query que executo em meu servidor Oracle 9i que funciona corretamente, mas no Oracle 10g na clausula where em um campo do tipo char eu preciso adicionar o % para funcionar: Por exemplo: *Isto funciona no Oracle 9i: select * from TABELA where CAMPOCHAR like ='STRING';* *Para funcionar no Oracle 10g Rg eu preciso fazer o seguinte: select * from TABELA where CAMPOCHAR like ='%STRING%';* Ou seja preciso adicionar o % para que a query funcione. Alguém tem alguma idéia do que pode ter acontecido ? Isto é uma caracterisca do like do Oracle 10g ? O estranho que quando fiz o import para o Oracle 10g o comando me deu a seguinte mensagem: . . . . . importing table WFA990 0 rows imported . . importing table ZZC020371 rows imported Import terminated successfully without warnings. Não tenho idéia de como resolver este problema... Alguma segestão pessoal ? Obrigado Fernando 2009/10/14 jlchiappa jlchia...@yahoo.com.br Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, não, não, não : os parâmetros ajustáveis de databases Oracle *** não *** ficam 'dentro do banco' , e sim em ARQUIVOS EXTERNOS, que vc PODE SIM alterar (fazendo cópia antes é claro)... O que o script está te dizendo é que QUANDO vc for migrar o ARQUIVO EXTERNO com os params que vc for usar para inicializar a instãncia 10g deverá ter o tal parâmetro presente, é isso Esses arquivos podem ser do tipo TEXTO (os chamados pfiles), que vc simplesmente edita com um editor de textos ASCII puro, ou podem ser binários, caso em que vc os edita com a instância 9i ativa usando os comandos ALTER próprios : meu conselho é que vc se hoje tem spfiles no 9i crie um pfile texto com o comando CREATE PFILE e use esse como o arquivo externo de params da instância 10g []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Fernando Mariano gro...@... escreveu Pessoal, estou realizando a migração de um banco Oracle na seguinte plaforma/sistema: Origem: Suse enterprise Linux 9 (i586) Oracle 9i (9.2.0.4) Destino: Suse enterprise Linux 10 (x86_64) Oracle 10g Release 2 Antes de realizar a migração dos dados tive que realizar o upgrade do Oracle 9.2.0.1 para o 9.2.0.4, isso até que foi tranquilo. Porém, agora estou no passo da execução do script utlu102i.sql para verificar as pendências a serem realizadas antes do transporte dos dados: O script me da a seguinte mensagem: SQL @utlu102i.sql Oracle Database 10.2 Upgrade Information Utility 10-14-2009 12:24:26 . ** Database: ** -- name: DBICARO -- version: 9.2.0.4.0 -- compatible: 9.2.0.0.0 ** Update Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** WARNING: -- streams_pool_size is not currently defined and needs a value of at least 50331648 . ** Obsolete Parameters: [Update Oracle Database 10.2 init.ora or spfile] ** -- hash_join_enabled . Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, porém não encontrei nenhuma forma de adiciona-lo. Pesquisando na internet descobri que o parâmetro streams_pool_size não existe no Oracle 9i [1][2]. A pergunta é: como eu faço para adicionar este parâmetro e remover o parâmetro hash_join_enabled que está obsoleto ? Apenas para constar estou seguindo o tópico de migração da página: http://download.oracle.com/docs/cd/B19306_01/server.102/b14238/upgrade.htm#CACHIDJD [1] http://www.orafaq.com/parms/parm1952.htm [2] http://www.juliandyke.com/Internals/Parameters/streams_pool_size.html Quem puder me ajugar, eu agradeço. Obrigado Fernando [As partes desta mensagem que não continham texto foram
[oracle_br] Re: Migração de banco de Oracle 9i para Oracle 10g - criação e remoção de parâmetros
Bem, imagino que o '=' e o '*' a mais na tua msg é defeito do seu programa de emails, o que digo sobre a pergunta é : não, isso NÃO faz sentido, rigorosamente NÂO EXISTE diferença alguma entre o LIKE do 9i e do 10g : SQL*Plus: Release 9.2.0.8.0 - Production Conectado a: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production SQL select empno, ename, sal from emp; EMPNO ENAME SAL -- -- -- 7369 SMITH 800 7788 SCOTT3000 SQL select empno, ename, sal from emp where ename like 'SMITH'; EMPNO ENAME SAL -- -- -- 7369 SMITH 800 e no 10g : SQL*Plus: Release 10.2.0.4.0 - Production Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production sc...@o10gr2:SQLselect empno, ename, sal from emp; EMPNO ENAME SAL -- -- -- 7369 SMITH 800 7499 ALLEN1600 sc...@o10gr2:SQLselect empno, ename, sal from emp where ename like 'SMITH'; EMPNO ENAME SAL -- -- -- 7369 SMITH 800 sei que teve n+1! bugzinhos no 10.2.0.1, rigorosamente ** não ** faz o menor sentido migrar pra ele , o 10.2.0.4 é o recomendado mas afaik nenhum deles interfere com like, não Pra mim foi falha tua no export/import (não setou o characterset correto na linha de comando na hora de fazer o exp, talvez, e tem acentos/caracteres especiais na string ?), ou há espaços em branco antes e depois da string... Faz um dump da coluna pra ver o que tá efetivamente gravado lá dentro, faça os testes via sqlplus e veja o que vc vai ver... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Fernando Mariano gro...@... escreveu Pessoal, consegui realizar a migração do Oracle 9i para Oracle 10g. Vejam a mensagem abaixo após executar o @utlu102i.sql no Oracle 10g. -- * SQL @utlu102i.sql Oracle Database 10.2 Upgrade Information Utility10-30-2009 22:07:51 . ** Database: ** -- name:ERP -- version:10.2.0.1.0 -- compatible: 10.2.0.1.0 . Database already upgraded; to rerun upgrade use rdbms/admin/catupgrd.sql. PL/SQL procedure successfully completed. * -- Porém tem um problema, tem uma query que executo em meu servidor Oracle 9i que funciona corretamente, mas no Oracle 10g na clausula where em um campo do tipo char eu preciso adicionar o % para funcionar: Por exemplo: *Isto funciona no Oracle 9i: select * from TABELA where CAMPOCHAR like ='STRING';* *Para funcionar no Oracle 10g Rg eu preciso fazer o seguinte: select * from TABELA where CAMPOCHAR like ='%STRING%';* Ou seja preciso adicionar o % para que a query funcione. Alguém tem alguma idéia do que pode ter acontecido ? Isto é uma caracterisca do like do Oracle 10g ? O estranho que quando fiz o import para o Oracle 10g o comando me deu a seguinte mensagem: . . . . . importing table WFA990 0 rows imported . . importing table ZZC020371 rows imported Import terminated successfully without warnings. Não tenho idéia de como resolver este problema... Alguma segestão pessoal ? Obrigado Fernando 2009/10/14 jlchiappa jlchia...@... Segundo as mensagem acima preciso adicionar o parâmetro streams_pool_size no meu banco de dados no Oracle 9i, não, não, não : os parâmetros ajustáveis de databases Oracle *** não *** ficam 'dentro do banco' , e sim em ARQUIVOS EXTERNOS, que vc PODE SIM alterar (fazendo cópia antes é claro)... O que o script está te dizendo é que QUANDO vc for migrar o ARQUIVO EXTERNO com os params que vc for usar para inicializar a instãncia 10g deverá ter o tal parâmetro presente, é isso Esses arquivos podem ser do tipo TEXTO (os chamados pfiles), que vc simplesmente edita com um editor de textos ASCII puro, ou podem ser binários, caso em que vc os edita com a instância 9i ativa usando os comandos ALTER próprios : meu conselho é que vc se hoje tem spfiles no 9i crie um pfile texto com o comando CREATE PFILE e use esse como o arquivo externo de params da instância 10g []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Fernando Mariano groups@ escreveu Pessoal, estou realizando a migração de um banco Oracle na seguinte plaforma/sistema: Origem: Suse enterprise Linux 9 (i586) Oracle 9i (9.2.0.4) Destino: Suse enterprise Linux 10 (x86_64) Oracle 10g Release 2 Antes
Re: [oracle_br] Re: bloco de dados foi corrompido
Boa noite! Chiappa, foi não ter informado a versão do banco , segue os dados: 10G R2...SO: Red Hat Enterprise Linux Server release 5.3 (Tikanga) 2.6.18 128.el5 Consegui recuperar as informações, porém quando vou tentar excluir o bloco que está offline.. dá a msg seguinte : ORA-03264: não é possível eliminar o arquivo de dados off-line do tablespace gerenciado localmente Tentei tb usando o comando: * ALTER DATABASE DATAFILE *'+DATA//datafile/xxx14'* OFFLINE DROP*; Mas o comando roda normalmente mas não exclui, continua aparecendo na * dba_data_files* Tentei recriar o datafile usando o REUSE, mas não consegui, ele fala q o arquivo já faz parte do Banco de dados... Existe outra forma de excluir esse datafile que está offline. ** * * +DATA//datafile/xxx14https://10.20.140.210:1158/em/console/database/storage/datafile?oname=%2BDATA/jucmg2/datafile/ijrm14event=viewcancelURL=/em/console/database/databaseObjectsSearch%3Fevent%3Dredisplay%26target%3Djucmg2%26type%3Drac_database%26otype%3DDATAFILEotype=DATAFILEtarget=jucmg2type=rac_database https://10.20.140.210:1158/em/console/database/storage/tablespace?oname=IJRMevent=viewcancelURL=/em/console/database/databaseObjectsSearch%3Fevent%3Dredisplay%26target%3Djucmg2%26type%3Drac_database%26otype%3DDATAFILEfromDatafile=fromDatafileotype=TABLESPACEtarget=jucmg2type=rac_database OFFLINE 0,000 0,000 [image: Usado (%)][image: Usado (%)]0,00 2009/10/14 jlchiappa jlchia...@yahoo.com.br Colega, um bloco corrompido normalmente fica ** ilegível ** (seja porque o SO não consegue ler esse bloco no disco, seja porque os metadados dele (no cabeçalho, principalmente) estão inválidos/fora de formato), então o que vc tem que fazer é trazer a informação de um backup anterior, ponto : é bastante óbvio, se está ilegível NÃO TEM COMO o banco acessar a informação pra tentar 'recuperar' o tal bloco, a informação TEM que ser trazida de outra fonte... Pra variar vc não diz a VERSÃO de banco que estamos a discutir, nem quais tipos de backup existem e feitos com quais ferramentas, mas no 9i em diante com backups RMAN vc já poe recuperar só os dados do bloco corrompido, não é preciso uma volta full. Em não havendo backup, as suas opções são : a) identificar do que o bloco corrupto faz parte, se for um objeto que pode ser refeito sem perda de dados (como um índice, ou uma tablespace temporary) refaça-o b) se a) não foi o caso, tente se puder obter a informação num ponto antes da corrupção (seja com reprocesso ou com busca de dados em outras fontes de tiver, via FLASHBACK QUERY, FLASHBACK DATABASE, LOG MINER, recover de database/tablespace, o que vc tiver disponível), reserve essa informação, elimine o bloco corrupto (pode ser via DROP do objeto, pode ser com o DBMS_REPAIR) e volte a informação c) se a) não foi o caso, não tem backup, e não conseguiu obter a informação como estava antes, vc VAI PERDER OS DADOS que estavam nesse bloco corrupto, PONTO : para poder voltar a acessar o segmento, remova o bloco corrupto, pode ser via DBMS_REPAIR === e o MAIS IMPORTANTE DE TUDO : um bd Oracle é ** extremamente ** confiável em operação normal, nós NÃO estamos falando de um Access da vida, nem de um mysql nem nada assim, então COM CERTEZA blocos corrompidos são decorrentes de pau no hardware (seja placa-mãe, memória, discos, o que for) e/ou pau de software (bugs, seja no próprio software de banco, seja no Sistema Operacional, em device drivers, na própria Aplicação) ... INVESTIGUE e ENCONTRE a causa da corrupção e a corrija, senão vc vai cair no mesmo problema de novo e de novo []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Mária Cristina Silva mariancrist...@... escreveu Boa tarde! Estou com essa msg no EM de que tem um bloco corrompido, alguém pode me dá um help de como recupera-lo? 14/10/2009 15:03:53Um bloco de dados foi corrompido na hora/número de linha: Wed Oct 14 12:41:25 2009/78329. [As partes desta mensagem que não continham texto foram removidas] -- Abraços, Mária Cristina Cel: 031-8883-5543 E-mail: mariancrist...@gmail.com MSN: mcristinasil...@hotmail.com -- O começo é a parte mais importante do trabalho. - Platão [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Problemas com o 10G HINT
Olá, Como vai ? Eu trabalho com uma solução que identifica estes tipos de problemas em questao de minutos. Entra neste site www.confio.com baixa a versão para Oracle e entra em contato comigo pelo email fernando.fons...@mainwork.com.br e te libero uma versão TRIAL Free por 15 dias para você testar e aproveita para identificar este problema. Esta solução é paga, mas com 1 dia de análise vc pegará muitos problemas e o Trial é por 15 dias. Qualquer coisa pode me ligar. Abraços 11-8575- De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de fsilva6 Enviada em: quinta-feira, 1 de outubro de 2009 14:19 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Problemas com o 10G HINT Galera, o banco da minha empresa foi migrado do 9 para o 10g. Tinha um query que usava o hint DRIVING_SITE para otimizar o acesso a uma tabela que usava DBLINK. Bom, essa query que rodava em 20 minutos tá demorando 3horas. Conversei com algumas pessoas que me disseram que o hint DRIVING_SITE não funciona legal no 10g. Alguém tem algum material que explique porque e o que posso fazer para melhorar a performance dessa query. Desde já obrigado. [As partes desta mensagem que não continham texto foram removidas]
Fwd: [oracle_br] Re: Oracle + ASM
Sem base, spam do grupo. Da para banir não? Tem Admin no Forum? Atenciosamente, Marcos Fontana -- Forwarded message -- From: Fernando.Fonseca fernando.fons...@mainwork.com.br Date: 2009/10/14 Subject: RES: [oracle_br] Re: Oracle + ASM To: fontana.mar...@gmail.com Olá Marcos, Como vai ? Só agora vi seu email no grupo. *Eu trabalho com uma solução que identifica estes tipos de problemas em questão de minutos.* * * *Entra neste site www.confio.com baixa a versão para Oracle e entra em contato comigo pelo email* *fernando.fons...@mainwork.com.br e te libero uma versão TRIAL Free por 15 dias para você testar e aproveita para identificar este problema.* * * Esta solução é paga, mas com 1 dia de análise vc pegará muitos problemas e o Trial é por 15 dias. Qualquer coisa pode me ligar. Abraços Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- *De:* oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] *Em nome de *Marcos Fontana *Enviada em:* segunda-feira, 12 de outubro de 2009 00:44 *Para:* oracle_br@yahoogrupos.com.br *Assunto:* Re: [oracle_br] Re: Oracle + ASM Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidi...@ig.com.br elidias7%40ig.com.br Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.mar...@... escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidi...@... Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: [oracle_br] Re: Oracle + ASM
Marcos, Isto não é SPAM. Eu trabalho com soluções para banco de dados em diversos clientes. Apenas mencionei algo que posso ajudar em uma licença TRIAL para identificar problemas de performance. Só isto. Qualquer dúvida olhar no site abaixo e se quiser me ligar, estou a disposição. Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Marcos Fontana Enviada em: quarta-feira, 14 de outubro de 2009 22:19 Para: oracle_br@yahoogrupos.com.br Assunto: Fwd: [oracle_br] Re: Oracle + ASM Sem base, spam do grupo. Da para banir não? Tem Admin no Forum? Atenciosamente, Marcos Fontana -- Forwarded message -- From: Fernando.Fonseca fernando.fons...@mainwork.com.br mailto:fernando.fonseca%40mainwork.com.br Date: 2009/10/14 Subject: RES: [oracle_br] Re: Oracle + ASM To: fontana.mar...@gmail.com mailto:fontana.marcos%40gmail.com Olá Marcos, Como vai ? Só agora vi seu email no grupo. *Eu trabalho com uma solução que identifica estes tipos de problemas em questão de minutos.* * * *Entra neste site www.confio.com baixa a versão para Oracle e entra em contato comigo pelo email* *fernando.fons...@mainwork.com.br mailto:%2AFernando.fonseca%40mainwork.com.br e te libero uma versão TRIAL Free por 15 dias para você testar e aproveita para identificar este problema.* * * Esta solução é paga, mas com 1 dia de análise vc pegará muitos problemas e o Trial é por 15 dias. Qualquer coisa pode me ligar. Abraços Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br mailto:fernando.fonseca%40mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- *De:* oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] *Em nome de *Marcos Fontana *Enviada em:* segunda-feira, 12 de outubro de 2009 00:44 *Para:* oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br *Assunto:* Re: [oracle_br] Re: Oracle + ASM Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidi...@ig.com.br mailto:elidias7%40ig.com.br elidias7%40ig.com.br Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.mar...@... escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidi...@... Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Oracle + ASM
Caro, Mensagem que não é solicitada é SPAM! Sem mais! Marcos Fontana 2009/10/14 Fernando Fonseca ffonseca...@yahoo.com.br Marcos, Isto não é SPAM. Eu trabalho com soluções para banco de dados em diversos clientes. Apenas mencionei algo que posso ajudar em uma licença TRIAL para identificar problemas de performance. Só isto. Qualquer dúvida olhar no site abaixo e se quiser me ligar, estou a disposição. Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br fernando.fonseca%40mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcos Fontana Enviada em: quarta-feira, 14 de outubro de 2009 22:19 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Fwd: [oracle_br] Re: Oracle + ASM Sem base, spam do grupo. Da para banir não? Tem Admin no Forum? Atenciosamente, Marcos Fontana -- Forwarded message -- From: Fernando.Fonseca fernando.fons...@mainwork.com.brfernando.fonseca%40mainwork.com.br mailto:fernando.fonseca%40mainwork.com.brfernando.fonseca%2540mainwork.com.br Date: 2009/10/14 Subject: RES: [oracle_br] Re: Oracle + ASM To: fontana.mar...@gmail.com fontana.marcos%40gmail.com mailto: fontana.marcos%40gmail.com fontana.marcos%2540gmail.com Olá Marcos, Como vai ? Só agora vi seu email no grupo. *Eu trabalho com uma solução que identifica estes tipos de problemas em questão de minutos.* * * *Entra neste site www.confio.com baixa a versão para Oracle e entra em contato comigo pelo email* *fernando.fons...@mainwork.com.br %2AFernando.fonseca%40mainwork.com.br mailto:%2AFernando.fonseca%40mainwork.com.br e te libero uma versão TRIAL Free por 15 dias para você testar e aproveita para identificar este problema.* * * Esta solução é paga, mas com 1 dia de análise vc pegará muitos problemas e o Trial é por 15 dias. Qualquer coisa pode me ligar. Abraços Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br fernando.fonseca%40mainwork.com.brmailto: fernando.fonseca%40mainwork.com.br fernando.fonseca%2540mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- *De:* oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br ] *Em nome de *Marcos Fontana *Enviada em:* segunda-feira, 12 de outubro de 2009 00:44 *Para:* oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br *Assunto:* Re: [oracle_br] Re: Oracle + ASM Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidi...@ig.com.br elidias7%40ig.com.br mailto: elidias7%40ig.com.br elidias7%2540ig.com.br elidias7%40ig.com.br Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer com que o servidor(produção) visualize os raw´s devices no storage? Abraços, Eli Dias --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcos Fontana fontana.mar...@... escreveu Tenho a solução para os seus problemas :) Faz com o ISCSI em vez de NFS. Monta um initiator no servidor storage e instala o target no cliente. Lá no storage vc pode criar os partições que seram vistas como discos locais e disponibilizar para o Oracle. Tenho uma configuração assim mas usando Xen e ISCSI. O legal é o seguinte, quando vc tem o ISCSI vc pode pegar mais discos sem a necessidade de reiniciar a máquina. Você usa Linux? Atenciosamente, Marcos Fontana DBA Oracle 2009/10/10 Eli elidi...@... Boa tarde galera! É pra efeito de testes e curiosidade, tenho dois servidores um terá o software oracle e o segundo servirá de storage. Neste segundo gostaria de utilizar o ASM, realizei alguns testes com NFS e consegui utilizar normalmente(sem ASM), porém não consigo compartilhar os dispositivos RAW´s via NFS para usar com ASM. A duvida é a seguinte, eu tenho que instalar no servidor storage o software oracle para ter a instancia ASM e se isso for feito, eu terei de pagar duas licensas? Se alguem souber de alguma solução para essa situação ou de outra forma, por favor me informem. Abraços, Eli Dias. [As partes desta mensagem que não continham
RES: [oracle_br] Re: Oracle + ASM
Marcos, Me perdoe a ignorância e me corrija se eu estiver errado. Você disse ao nosso colega o seguinte: Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM. Então eu respondi para você complementando e dando uma dica na maior boa intenção de que existem recursos tecnológicos que você pode usar para identificar problemas de performance, inclusive este que você mencionou. Como base de consulta e pesquisa, você pode acessar o site http://www.dbta.com/ e obter diversas informações. Caso você precise de outras soluções e recursos também posso te enviar via e-mail e se eu não souber algo, faço questão de procurar na Oracle ou em parceiros soluções. Eu só quis ajudar! Boa Noite para você. Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em nome de Marcos Fontana Enviada em: quarta-feira, 14 de outubro de 2009 22:40 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Re: Oracle + ASM Caro, Mensagem que não é solicitada é SPAM! Sem mais! Marcos Fontana 2009/10/14 Fernando Fonseca ffonseca...@yahoo.com.br mailto:ffonseca_ti%40yahoo.com.br Marcos, Isto não é SPAM. Eu trabalho com soluções para banco de dados em diversos clientes. Apenas mencionei algo que posso ajudar em uma licença TRIAL para identificar problemas de performance. Só isto. Qualquer dúvida olhar no site abaixo e se quiser me ligar, estou a disposição. Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br mailto:fernando.fonseca%40mainwork.com.br fernando.fonseca%40mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcos Fontana Enviada em: quarta-feira, 14 de outubro de 2009 22:19 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Fwd: [oracle_br] Re: Oracle + ASM Sem base, spam do grupo. Da para banir não? Tem Admin no Forum? Atenciosamente, Marcos Fontana -- Forwarded message -- From: Fernando.Fonseca fernando.fons...@mainwork.com.br mailto:fernando.fonseca%40mainwork.com.br fernando.fonseca%40mainwork.com.br mailto:fernando.fonseca%40mainwork.com.brfernando.fonseca%2540mainwork.com .br Date: 2009/10/14 Subject: RES: [oracle_br] Re: Oracle + ASM To: fontana.mar...@gmail.com mailto:fontana.marcos%40gmail.com fontana.marcos%40gmail.com mailto: fontana.marcos%40gmail.com fontana.marcos%2540gmail.com Olá Marcos, Como vai ? Só agora vi seu email no grupo. *Eu trabalho com uma solução que identifica estes tipos de problemas em questão de minutos.* * * *Entra neste site www.confio.com baixa a versão para Oracle e entra em contato comigo pelo email* *fernando.fons...@mainwork.com.br mailto:%2AFernando.fonseca%40mainwork.com.br %2AFernando.fonseca%40mainwork.com.br mailto:%2AFernando.fonseca%40mainwork.com.br e te libero uma versão TRIAL Free por 15 dias para você testar e aproveita para identificar este problema.* * * Esta solução é paga, mas com 1 dia de análise vc pegará muitos problemas e o Trial é por 15 dias. Qualquer coisa pode me ligar. Abraços Fernando Fonseca Mainwork Software Ltda. Data Migration consultant fernando.fons...@mainwork.com.br mailto:fernando.fonseca%40mainwork.com.br fernando.fonseca%40mainwork.com.brmailto: fernando.fonseca%40mainwork.com.br fernando.fonseca%2540mainwork.com.br 55(11) 2691 6613 - 55(11) 8575- *De:* oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br ] *Em nome de *Marcos Fontana *Enviada em:* segunda-feira, 12 de outubro de 2009 00:44 *Para:* oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br *Assunto:* Re: [oracle_br] Re: Oracle + ASM Sure! Da uma estudada, é bem fácil de configurar. Só tem uma coisa, eu ainda to tendo uns probleminhas de performance com o ASM, porem meu setup é diferente do seu. Atenciosamente, Marcos Fontana 2009/10/10 Eli elidi...@ig.com.br mailto:elidias7%40ig.com.br elidias7%40ig.com.br mailto: elidias7%40ig.com.br elidias7%2540ig.com.br elidias7%40ig.com.br Fala Marcos, Utilizo Linux sim (Enterprise Linux), com esse ISCSI, eu consigo fazer
Re: [oracle_br] Servico OracleCSServicre no Windows
O serviço citado é o CSS para windows, utilizado em RAC ou em single instances com ASM, do qual, neste caso, é o responsável na conversação do ASM com o Banco de Dados. Sobre a tua pergunta: Normal eu acredito que não seja. Não utilizo muito o windows, mas uma analise no event view, log, deve mostrar o porque o mesmo fica congelado. Sucesso, Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Porto Alegre/RS --- Em sex, 9/10/09, Jairo Azevedo jsouza...@gmail.com escreveu: De: Jairo Azevedo jsouza...@gmail.com Assunto: [oracle_br] Servico OracleCSServicre no Windows Para: oracle_br@yahoogrupos.com.br Data: Sexta-feira, 9 de Outubro de 2009, 14:23 Pessoal, Estou com dúvida sobre o serviço acima. Eu instalei o oracle (10.1.0.2) em uma maquina virtual com o windows xp (sem SP) e percebi que quando eu inicio o serviço acima atraves de uma bat q criei com o net start, o serviço fica com o status starting e nunca finaliza. O estranho é que o banco inicia na boa e os demais serviços tb. Isso é normal? -- Jairo Azevedo jsouza...@gmail.com protheus...@yahoo.com.br (21) -6492 [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 Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com