[oracle_br] Re: Redução de tablespace - Oracle 8.1.7
Marcel, não tem aonde trancar, LOBs são um conceito comum no banco Oracle, mas se vc ainda tem dúvidas nele eu recomendaria fortemente um bom estudo do manual Oracle8i Application Developer's Guide - Large Objects (LOBs) e do Concepts, absolutamente tudo o que vc precisa saber sobre LOBs está lá... No caso em questão : primeiro vc precisa saber o que é esse segmento SYS_LOBnnn que vc tem, consulte a DBA_SEGMENTS : [EMAIL PROTECTED]:SQLselect * from dba_segments where segment_name='SYS_LOB017499C2$$'; OWNERSEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENTNEXT_EXTENT MIN_EXTENTSMAX_EXTENTS PCT_INCREASE FREELISTSFREELIST_GROUPS RELATIVE_FNO BUFFER_ --- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- SCOTTSYS_LOB017499C2 $$ LOBSEGMENT USERS 7 34689 163840 20 1 163840 163840 1 2147483645 0 1 1 7 DEFAULT == já que é um lob segment, vc consulta a DBA_LOBS pra saber quem é o dono, em qual tabela ele reside e qual é a coluna que é LOB : [EMAIL PROTECTED]:SQLselect * from dba_lobs where segment_name='SYS_LOB017499C2$$'; OWNERTABLE_NAME COLUMN_NAMESEGMENT_NAME INDEX_NAME CHUNK PCTVERSION RETENTION FREEPOOLS CACHE LOGGING IN_ -- -- --- - - -- -- -- --- --- -- --- --- SCOTTTB_LOB C2 SYS_LOB017499C2$$ SYS_IL017499C2$$ 8192 10 10800NO YES YES == ok, no meu caso era a coluna C2 da tabela TB_LOB, como vc viu na DBA_SEGMENTS hoje esse segmento está na tablespace USERS, vou mover : [EMAIL PROTECTED]:SQLalter table scott.TB_LOB move lob (C2) store as (tablespace TS_LMT_UNIF); Tabela alterada. == a coluna continua existindo, normal... [EMAIL PROTECTED]:SQLselect * from dba_lobs where segment_name='SYS_LOB017499C2$$'; OWNERTABLE_NAME COLUMN_NAMESEGMENT_NAME INDEX_NAME CHUNK PCTVERSION RETENTION FREEPOOLS CACHE LOGGING IN_ -- -- --- - - -- -- -- --- --- -- --- --- SCOTTTB_LOB C2 SYS_LOB017499C2$$ SYS_IL017499C2$$ 8192 10 10800NO YES YES == mas o segmento foi pra outra tablespace : [EMAIL PROTECTED]:SQLselect * from dba_segments where segment_name='SYS_LOB017499C2$$'; OWNERSEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENTNEXT_EXTENT MIN_EXTENTSMAX_EXTENTS PCT_INCREASE FREELISTSFREELIST_GROUPS RELATIVE_FNO BUFFER_ --- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- SCOTTSYS_LOB017499C2 $$ LOBSEGMENT TS_LMT_UNIF26 2651048576128 1
[oracle_br] Re: Recuperar tablespace
Sim, esta em archive, A dúvida era a seguinte, se dá para voltar uma tablespace dropada. Não tenho a intenção de voltar utilizando o RMAN. Faltou um comando que não tinha colocado, antes de colocar em online utilizei o recover datafile. As tabelas não voltaram. Com isso faço uma pergunta. Na criação de uma tablespace o comando reuse serve somente para aproveitar a configuração da tablespace que foi apagada ?. O que gostaria de fazer é isso mesmo que nosso colega publicou, dropar uma tablespace, criar uma outra com o mesmo nome utilizando o mesmo datafile, e com isso as informações voltarem para o local de origem. --- Em oracle_br@yahoogrupos.com.br, Gustavo Venturini de Lima [EMAIL PROTECTED] escreveu Vamos lá... Este banco está em modo ARCHIVE? Qual o último backup full/incremental? A princípio vc terá que voltar os arquivos do seu backup e de posse de todos os archives desde seu último backup fazer um: RECOVER TABLESPACE XXX; E depois: ALTER TABLESPACE XXX ONLINE Vc acha mais informações no *Oracle(r) Database Backup and Recovery Quick Start Guide* Em 02/05/07, Aleksandro [EMAIL PROTECTED] escreveu: Veja se é isso : alter database datafile 'd:\oracle\producao01.dbf' offline; Depois ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCAO01.DBF' ONLINE; Se for só isso não rolou não. --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Gustavo Venturini de Lima gventurini@ escreveu Mas não vai voltar mesmo... Você tem que fazer um recover da tablespace total... com ela offline... Em 02/05/07, Aleksandro aleksandrosouza@ escreveu: Boa tarde, Eu também fiz esse teste de criar uma tablespace, adicionar dados e depois dropar a tablespace mais mantando o datafile. Quando recriei a tablespace utilizando reuse, as informações não voltaram não. A versão que utilizo é a 10g. --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br, Anderson Haertel Rodrigues ahr@ escreveu Marco, Houve inserções/alterações no DataBase? Se houve, será necessária a recuperação incompleta do Banco de Dados do Banco de Dados, se não houve, não fiz o teste, mas, talvez funcione algo como: CREATE TABLESPACE ahr ADD DATAFILE 'localizacao/nome' SIZE X . REUSE; ou CREATE TABLESPACE ahr ADD DATAFILE 'datafilenovo' SIZE X ... e após, adicionar o DataFile existente a essa tablespace: ALTER TABLESPACE ahr ADD DATAFILE 'localizacao/nome' SIZE X . REUSE; Atenciosamente, Anderson Haertel Rodrigues Administrador de Banco de Dados Oracle 9i Database Administrator Certified Microsoft Certified Professional SQL Server 2000 Florianópolis/SC - Original Message - From: MARCO ANTONIO marcogru@ To: ORACLE_BR oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Wednesday, July 27, 2005 12:52 PM Subject: [oracle_br] Recuperar tablespace Boa tarde a todos! Se uma tablespace for dropada e o datafile correspondente for mantido em disco, existe alguma maneira de se recuperar (recriar) esta tablespace reutilizando e recuperando este datafile? Um abraço! Marco Antonio - Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora! [As partes desta mensagem que não continham texto foram removidas] __ Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ Falar com os Moderadores:([EMAIL PROTECTED]oracle_br-owner%40yahoogrupos.com.br oracle_br-owner%40yahoogrupos.com.br ) Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar __ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Importação alterando acentuação de campos VARCHAR.
Colega, já mais de uma vez foi dito isto aqui no grupo (uma das últimas vezes foi na msg http://www.mail- archive.com/oracle_br@yahoogrupos.com.br/msg16393.html ), mas o fato é : as variáveis NLS do banco , que controlam Globalização (tal como NLS_LANG, que é a principal) são DEFAULTs, ie, só entram em ação SE e APENAS SE o cliente não especifica nada, o comportamento que vc relata indica totalmente que ou vc não tem o default do banco setado ou (o mais provábvel) o teu cliente (import no caso) TEM SIM NLSs setadas mas estão erradas Como o import é um programa de linha de comando, eu diria pra vc setar as variáveis de NLS como variáveis de ambiente, via .profile ou similar se for unix-like, via SET se for windows o SO do teu cliente. Dá uma lida mo teu manual de Globalization que vc acha as refs apropriadas. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Bia Fitzgerald [EMAIL PROTECTED] escreveu Senhores, Quando faço uma importação de tabelas com coluna VARCHAR2, perco todas as acentuações dos dados. Tipo Atenção vira aten~cao. Alguém sabe o motivo? Obrigada, Bia. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: RES: [oracle_br] Calculo volumetrico
Ajudaria bastante se o colega lá q perguntou definisse EXATAMENTE o que ele quer com esse cálculo volumétrico : ele quer saber o espaço ocupado por um objeto hoje ??? Quer calcular o espaço necessário pro futuro próximo ?? Ou o que ??? dependendo do que for, respostas diferentes terão que ser aplicadas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Rafael Milanez [EMAIL PROTECTED] escreveu Talvez isso te ajude http://www.psoug.org/reference/dbms_space.html -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcos Pereira - Confederação SICREDI Enviada em: quarta-feira, 2 de maio de 2007 17:03 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Calculo volumetrico Boa tarde Senhores, Necessito realizar o calculo volumétrico do Banco de dados , me foi dado como auxilio para utilizar package DBMS_SPACE , alguém poderia me ajudar? Obrigado Marcos Pereira Administração de Dados Objetos Confederação SICREDI - Porto Alegre Fone: (51) 3358-4700 - Ramal: 6179 www.sicredi.com.br As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
RES: RES: [oracle_br] Calculo volumetrico
O usuário operador da ferramenta irá informar para cada tabela: Número estimado de linhas iniciais Taxa de crescimento esperada por ano Tempo de retenção dos dados em anos Para cada coluna: * Se for o caso, o tamanho médio estimado desta coluna para as linhas da tabela * Se for o caso, o percentual de linhas com NULL Ao serem informados estes dados , terei que realizar o calculo volumétrico em cima da tabela. Espero ter melhorado minha pergunta . Obrigado. --- Ajudaria bastante se o colega lá q perguntou definisse EXATAMENTE o que ele quer com esse cálculo volumétrico : ele quer saber o espaço ocupado por um objeto hoje ??? Quer calcular o espaço necessário pro futuro próximo ?? Ou o que ??? dependendo do que for, respostas diferentes terão que ser aplicadas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Rafael Milanez [EMAIL PROTECTED] escreveu Talvez isso te ajude http://www.psoug.org/reference/dbms_space.html http://www.psoug.org/reference/dbms_space.html -Mensagem original- 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 Pereira - Confederação SICREDI Enviada em: quarta-feira, 2 de maio de 2007 17:03 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: [oracle_br] Calculo volumetrico Boa tarde Senhores, Necessito realizar o calculo volumétrico do Banco de dados , me foi dado como auxilio para utilizar package DBMS_SPACE , alguém poderia me ajudar? Obrigado Marcos Pereira Administração de Dados Objetos Confederação SICREDI - Porto Alegre Fone: (51) 3358-4700 - Ramal: 6179 www.sicredi.com.br As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Script para monitorar index...
*Bom dia a todos.* * Estou querendo saber se existe algum script que monitore a utilização de todos os indices de um determinado OWNER.* *Onde eu crio uma tabela em meu banco para ter os seguintes dados do indice, quantidade de utilização em um determinado período. (dia, hora, etc.).* ** *Obs: Banco de dados Oracle 9.2.0.1.0* -- Luciano Lacerda ORACLE DBA/ATG [EMAIL PROTECTED] [EMAIL PROTECTED] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Problemas na formatação
Por partes aí : PRIMEIRO DE TUDO, nós todos (imagino) aprendemos a duras penas que pra se definir um ano corretamente, sem chance de falhas, nós TEMOS QUE TER 4 dígitos, sem choro nem vela - o rr usa um algoritmo que nem sempre é infalível. Por exemplo, suponha que a data seja uma data de nascimento, como o meu pai que nasceu em 1949, se fosse entrado com rr no seu sitema olha lá o que teríamos : [EMAIL PROTECTED]:SQLselect to_char(to_date ('23/06/49', 'dd/mm/rr'), 'dd/mm/ hh24:mi:ss') from dual; TO_CHAR(TO_DATE('23 --- 23/06/2049 00:00:00 coitada, a pessoa só vai nascer NO FUTURO!!! É de dar nó na cuca, e ele já me mostrou umas tantas quantas correspondências enviadas por mala direta assim, é de doer, não faça isso please... Ponto principal : já foi dito algumas vezes e repito agora, as variáveis NLS_xx que vc seta no banco (incluindo NLS_DATE_FORMAT) , ** NÂO SÃO ** coisa nenhuma padrão, elas são DEFAULTs, e como todo e qquer default só entram em açao SE e APENAS SE não é fornecido nenhum valor... No banco Oracle, quem MANDA em configs de globalização (seja pra EXIBIR, seja pra GRAVAR) é SEMPRE O CLIENTE, os valores do banco só são usados se o cliente não passar nada... Pelo jeito que vc diz, na máquina de desenvolvimento OU não foi fornecido nada para NLS (e aí o default do banco é acionado) ou em desenv as vars NLS estão setadas corretamente, e em produção não A recomendação é uma só portanto, CONFIGURE CORRETAMENTE AS VARS NLS_xx OS SEUS CLIENTES, é isso. No seu caso em especial, iirc o .net aciona o banco via driver .net, e esse driver é incapaz de o fazer diretamente, ele PRECISA que o software client Oracle esteja presente, então vc terá que configurar o client Oracle no mínimo - como não desenvolvo em .net, não sei se além disso há config no driver e no ambiente... Complemento : quando se fala de datas, eu sempre, totalmente, absolutamente, RECOMENDO QUE vc NUNCA CONFIE em settings, e sempre forneça exatamente o formato que vc quer - assim, se hoje vc tem no seu programa uma variável string V_DATA com o valor '01/12/2007' digamos, hoje vc deve estar fazendo na aplicação algo tipo : INSERT INTO nomedatabela (..., colunatipoDATE) VALUES(..., v_data) ou seja, vc CONFIA no nls_date, é prática assegurada de programação DEFENSIVA vc codificar : INSERT INTO nomedatabela (..., colunatipoDATE) VALUES(..., TO_DATE(v_data, 'dd/mm/') ) yes []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Carlos Henrique Correa [EMAIL PROTECTED] escreveu Boa tarde, estamos com uma dúvida que já procuramos na net e não encontrmos ainda uma solução completa. Temos uma aplicação .Net que rodando via micro de desenvovlimento nos conseguimos gravar os dados em uma tabela específica normalmente, mas quando publicamos a aplicação no servidor de aplicações e fazemos o teste, recebemos uma mensagem de erro no formato da data dizendo que o mês está inválido. Nossa dúvida é ao rodar a aplicação da máquina de desenvovlimento conseguimos gravar a data e do servidor de aplicação não conseguimos??? Já verificamos os formatos de data no banco e estão configurados para o padrão DD/MM/RR e mesmo assim não conseguimos gravar os dados do servidor de aplicação. Dados do Ambiente: Serv. Aplicação win 2003 + Cliente Oracle 10.2.0.1 Serv. Desenvolvimento: win XP + Cliente Oracle 10.2.0.1 Serv. Banco: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod PL/SQL Release 10.1.0.2.0 - Production CORE10.1.0.2.0 Production TNS for 32-bit Windows: Version 10.1.0.2.0 - Production NLSRTL Version 10.1.0.2.0 - Production Oracle Linux Atenciosamente, Carlos Henrique Prefeitura de Resende __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: RES: RES: [oracle_br] Calculo volumetrico
OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele SEMPRE ocupará no mínimo 10 Mb ainda que vazio de dados. E não nos esqueçamos que a tabela PODE TER ÍNDICES, pode ter partições, pode ter LOBs, esses caras todos ocupam espaço, também. Há MONTES de planilhas e textos pelaí na net que tentam estimar isso só baseado na info das colunas, mas TODOAS AS QUE VI ATÉ HOJE erram muito muito feio, por não preverem essas coisas todas que citei... Por causa disso tudo, imho a melhor e mais precisa maneira de estimar a alocação futura é CRIAR mesmo a tal tabela fisicamente, com o storage que ele terá, com o extent size real, o tipo de tablespace que será mesmo usado (normalmente LMT), as constraints e índices que ela ira ter mesmo, E inserir dados (dinamicamente, em modo programado), numa quantidade razoável de acordo com as especificações (ie, respeitando o tamanho médio de cada coluna, nulls, etc) , analisar com DBMS_SPACE e fazer a regra de três : se para x linhas ocupou n bytes, para o total desejado ocupará y bytes. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcos Pereira - Confederação SICREDI [EMAIL PROTECTED] escreveu O usuário operador da ferramenta irá informar para cada tabela: Número estimado de linhas iniciais Taxa de crescimento esperada por ano Tempo de retenção dos dados em anos Para cada coluna: * Se for o caso, o tamanho médio estimado desta coluna para as linhas da tabela * Se for o caso, o percentual de linhas com NULL Ao serem informados estes dados , terei que realizar o calculo volumétrico em cima da tabela. Espero ter melhorado minha pergunta . Obrigado. --- Ajudaria bastante se o colega lá q perguntou definisse EXATAMENTE o que ele quer com esse cálculo volumétrico : ele quer saber o espaço ocupado por um objeto hoje ??? Quer calcular o espaço necessário pro futuro próximo ?? Ou o que ??? dependendo do que for, respostas diferentes terão que ser aplicadas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br , Rafael Milanez rmilanez@ escreveu Talvez isso te ajude http://www.psoug.org/reference/dbms_space.html http://www.psoug.org/reference/dbms_space.html -Mensagem original- 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 Pereira - Confederação SICREDI Enviada em: quarta-feira, 2 de maio de 2007 17:03 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br Assunto: [oracle_br] Calculo volumetrico Boa tarde Senhores, Necessito realizar o calculo volumétrico do Banco de dados , me foi dado como auxilio para utilizar package DBMS_SPACE , alguém poderia me ajudar? Obrigado Marcos Pereira Administração de Dados Objetos Confederação SICREDI - Porto Alegre Fone: (51) 3358-4700 - Ramal: 6179 www.sicredi.com.br As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas]
RES: RES: RES: [oracle_br] Calculo volumetrico
Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele SEMPRE ocupará no mínimo 10 Mb ainda que vazio de dados. E não nos esqueçamos que a tabela PODE TER ÍNDICES, pode ter partições, pode ter LOBs, esses caras todos ocupam espaço, também. Há MONTES de planilhas e textos pelaí na net que tentam estimar isso só baseado na info das colunas, mas TODOAS AS QUE VI ATÉ HOJE erram muito muito feio, por não preverem essas coisas todas que citei... Por causa disso tudo, imho a melhor e mais precisa maneira de estimar a alocação futura é CRIAR mesmo a tal tabela fisicamente, com o storage que ele terá, com o extent size real, o tipo de tablespace que será mesmo usado (normalmente LMT), as constraints e índices que ela ira ter mesmo, E inserir dados (dinamicamente, em modo programado), numa quantidade razoável de acordo com as especificações (ie, respeitando o tamanho médio de cada coluna, nulls, etc) , analisar com DBMS_SPACE e fazer a regra de três : se para x linhas ocupou n bytes, para o total desejado ocupará y bytes. []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Marcos Pereira - Confederação SICREDI [EMAIL PROTECTED] escreveu O usuário operador da ferramenta irá informar para cada tabela: Número estimado de linhas iniciais Taxa de crescimento esperada por ano Tempo de retenção dos dados em anos Para cada coluna: * Se for o caso, o tamanho médio estimado desta coluna para as linhas da tabela * Se for o caso, o percentual de linhas com NULL Ao serem informados estes dados , terei que realizar o calculo volumétrico em cima da tabela. Espero ter melhorado minha pergunta . Obrigado. --- Ajudaria bastante se o colega lá q perguntou definisse EXATAMENTE o que ele quer com esse cálculo volumétrico : ele quer saber o espaço ocupado por um objeto hoje ??? Quer calcular o espaço necessário pro futuro próximo ?? Ou o que ??? dependendo do que for, respostas diferentes terão que ser aplicadas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br , Rafael Milanez rmilanez@ escreveu Talvez isso te ajude http://www.psoug.org/reference/dbms_space.html http://www.psoug.org/reference/dbms_space.html http://www.psoug.org/reference/dbms_space.html http://www.psoug.org/reference/dbms_space.html -Mensagem original- De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] Em nome de Marcos Pereira - Confederação SICREDI Enviada em: quarta-feira, 2 de maio de 2007 17:03 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br Assunto: [oracle_br] Calculo volumetrico Boa tarde Senhores, Necessito realizar o calculo volumétrico do Banco de dados , me foi dado como auxilio para utilizar package DBMS_SPACE , alguém poderia me ajudar? Obrigado Marcos Pereira Administração de Dados Objetos Confederação SICREDI - Porto Alegre Fone: (51) 3358-4700 - Ramal: 6179 www.sicredi.com.br As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes desta mensagem que não continham texto foram removidas] As informacoes contidas neste e-mail e nos arquivos anexados podem ser informacoes confidenciais ou privilegiadas. Caso voce nao seja o destinatario correto, apague o conteudo desta mensagem e notifique o remetente imediatamente. [As partes
[oracle_br] HCheck Version 8i/1.2
Srs., estou com o seguinte problema abaixo : HCheck Version 8i/1.29 Problem: SUM$ entry missing for container table TAB$ OBJ#=6580 ADMCIT.SNAP$_ALOCAC_CARTAO_RES01 TAB$ OBJ#=225986 ADMCIT.SNAP$_AUTORIZACOES77 TAB$ OBJ#=679113 ADMCIT.CARTOES_SEM_PEDIDO_CAB_SITE Estou com um chamado aberto na Oracle mas gostaria de conhecer as experiências de quem passou pelo problema. Com certeza se eu fizer um export e import o problema existente desaparecerá mas o importante é a causa pois, em uma observação anterior existia uma mview nesta situação que foi corrigido com export/drop/import. Após este fato e continuando a monitorar me surgiram as mviews registradas acima, portanto, a pergunta é : o que está causando isto ? Analisando a package o trecho onde esta inconsistência no DD é encontrado é o seguinte : procedure MissingSum$ is Cursor cBad is select t.obj#,o.owner#,o.name from tab$ t, obj$ o, sum$ s where bitand(t.flags,262144)=262144 /* Container table */ and o.obj#=t.obj# and s.containerobj#(+)=t.obj# and s.containerobj# is null ; tag varchar2(80):=chr(10)|| 'Problem: SUM$ entry missing for container table'; Begin for R in cBad loop if (tag is not null) then hout.put_line(tag); tag:=null; end if; hout.put_line(' TAB$ OBJ#='||R.OBJ#||' '||Owner(R.owner#)||'.'||R.name); Fatal:=Fatal+1; end loop; End; A versão do BD é 9.2.0.7. Nota Oracle sobre a package 136697.1 Agradeço a ajuda. Galery. __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Criar Job - Oracle 9i
Bom dia pessoal. Gostaria de saber como faço para criar um job no banco de dados para rodar de hora em hora. Aguardo. Obrigado. Atenciosamente, Miguel Alessandro May Analista de Suporte Gestão de Sistemas e Informações Marcegaglia do Brasil Ltda. mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] Tel.: (47) 3431 64 67 / Fax: 3431 64 44 Visite nosso site: http://www.marcegaglia.com.br/ www.marcegaglia.com.br As informações contidas neste e-mail e os eventuais documentos anexos podem conter informações confidenciais, destinados somente para a(s) pessoa(s) a quem é dirigida. Caso você a tenha recebido por engano, informamos que a sua divulgação, utilização, reprodução ou distribuição deste e-mail é estritamente proibida, por favor, notifique o remetente e elimine a mensagem original. Todas as opiniões e declarações destinadas a entidades externas a esta empresa, somente serão consideradas oficiais quando efetivamente confirmadas por escrito por um representante legal desta empresa. Obrigado. Le informazioni contenute in questa comunicazione e gli eventuali documenti allegati hanno carattere confidenziale, sono tutelate dal segreto professionale e sono ad uso esclusivo del destinatario. Nel caso questa comunicazione Vi sia pervenuta per errore, Vi informiamo che la sua diffusione e riproduzione è contraria alla legge e preghiamo di darci prontamente avviso e di cancellare quanto ricevuto. Tutte le opinioni e declarazioni destinate a entità esterne a questa impresa, sarano considerate officiali soltanto quando effetivamente confirmate per scritto da un rappresentante legale di questa impresa. Grazie. This e-mail message and any files transmitted attached may contain confidential information intended only for the person(s) to whom it is addressed. If you are not the intended recipient, you are hereby notified that any use or distribution of this e-mail is strictly prohibited: please notify the sender and delete the original message. All opinions and statements, directed to firms, people or companies outside this organization, will be considered official when they are effectively confirmed in writing by any legal representative of our organization. Thank you. De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcos Pereira - Confederação SICREDI Enviada em: quinta-feira, 3 de maio de 2007 09:28 Para: oracle_br@yahoogrupos.com.br Assunto: RES: RES: RES: [oracle_br] Calculo volumetrico Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- 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 jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele SEMPRE ocupará no mínimo 10 Mb ainda que vazio de dados. E não nos esqueçamos que a tabela PODE TER ÍNDICES, pode ter partições, pode ter LOBs, esses caras todos ocupam espaço, também. Há MONTES de planilhas e textos pelaí na net que tentam estimar isso só baseado na info das colunas, mas TODOAS AS QUE VI ATÉ HOJE erram muito muito feio, por não preverem essas coisas todas que citei... Por causa disso tudo, imho a melhor e mais precisa maneira de estimar a alocação futura é CRIAR mesmo a tal tabela fisicamente, com o storage que ele terá, com o extent size real, o tipo de tablespace que será mesmo usado (normalmente LMT), as constraints e índices que ela ira ter mesmo, E inserir dados (dinamicamente, em modo programado), numa quantidade razoável de acordo com as especificações (ie, respeitando o tamanho médio de cada coluna, nulls, etc) , analisar com DBMS_SPACE e fazer a regra de três : se para x linhas ocupou n bytes, para o total desejado ocupará y bytes. []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br , Marcos Pereira - Confederação SICREDI [EMAIL PROTECTED] escreveu O usuário operador da ferramenta irá informar para cada tabela: Número estimado de linhas iniciais Taxa de crescimento esperada por ano Tempo de retenção dos dados em anos Para cada coluna: * Se for o caso, o tamanho médio estimado desta coluna para as linhas da tabela * Se for o caso, o percentual de linhas com NULL Ao serem informados estes dados , terei que realizar o calculo
Re: [oracle_br] Criar Job - Oracle 9i
Olá, Acredito que você possa usar a dbms_job.submit para isso. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: Miguel Alessandro May To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 9:39 AM Subject: [oracle_br] Criar Job - Oracle 9i Bom dia pessoal. Gostaria de saber como faço para criar um job no banco de dados para rodar de hora em hora. Aguardo. Obrigado. Atenciosamente, Miguel Alessandro May Analista de Suporte Gestão de Sistemas e Informações Marcegaglia do Brasil Ltda. mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] Tel.: (47) 3431 64 67 / Fax: 3431 64 44 Visite nosso site: http://www.marcegaglia.com.br/ www.marcegaglia.com.br As informações contidas neste e-mail e os eventuais documentos anexos podem conter informações confidenciais, destinados somente para a(s) pessoa(s) a quem é dirigida. Caso você a tenha recebido por engano, informamos que a sua divulgação, utilização, reprodução ou distribuição deste e-mail é estritamente proibida, por favor, notifique o remetente e elimine a mensagem original. Todas as opiniões e declarações destinadas a entidades externas a esta empresa, somente serão consideradas oficiais quando efetivamente confirmadas por escrito por um representante legal desta empresa. Obrigado. Le informazioni contenute in questa comunicazione e gli eventuali documenti allegati hanno carattere confidenziale, sono tutelate dal segreto professionale e sono ad uso esclusivo del destinatario. Nel caso questa comunicazione Vi sia pervenuta per errore, Vi informiamo che la sua diffusione e riproduzione è contraria alla legge e preghiamo di darci prontamente avviso e di cancellare quanto ricevuto. Tutte le opinioni e declarazioni destinate a entità esterne a questa impresa, sarano considerate officiali soltanto quando effetivamente confirmate per scritto da un rappresentante legale di questa impresa. Grazie. This e-mail message and any files transmitted attached may contain confidential information intended only for the person(s) to whom it is addressed. If you are not the intended recipient, you are hereby notified that any use or distribution of this e-mail is strictly prohibited: please notify the sender and delete the original message. All opinions and statements, directed to firms, people or companies outside this organization, will be considered official when they are effectively confirmed in writing by any legal representative of our organization. Thank you. De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcos Pereira - Confederação SICREDI Enviada em: quinta-feira, 3 de maio de 2007 09:28 Para: oracle_br@yahoogrupos.com.br Assunto: RES: RES: RES: [oracle_br] Calculo volumetrico Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- 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 jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele SEMPRE ocupará no mínimo 10 Mb ainda que vazio de dados. E não nos esqueçamos que a tabela PODE TER ÍNDICES, pode ter partições, pode ter LOBs, esses caras todos ocupam espaço, também. Há MONTES de planilhas e textos pelaí na net que tentam estimar isso só baseado na info das colunas, mas TODOAS AS QUE VI ATÉ HOJE erram muito muito feio, por não preverem essas coisas todas que citei... Por causa disso tudo, imho a melhor e mais precisa maneira de estimar a alocação futura é CRIAR mesmo a tal tabela fisicamente, com o storage que ele terá, com o extent size real, o tipo de tablespace que será mesmo usado (normalmente LMT), as constraints e índices que ela ira ter mesmo, E inserir dados (dinamicamente, em modo programado), numa quantidade razoável de acordo com as especificações (ie, respeitando o tamanho médio de cada coluna, nulls, etc) , analisar com DBMS_SPACE e fazer a regra de três : se para x linhas ocupou n bytes, para o total desejado ocupará y bytes. []s Chiappa --- Em oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
Re: [oracle_br] Re: Recuperar tablespace
Vamos por partes... Está havendo uma confusão de conceitos aqui... O REUSE NÃO é uma forma de salvar ou recuperar o que estava num datafile... Ele apenas serve para que SE no caso de existir o arquivo no local onde deseja criar este novo datafile, o mesmo será SOBRESCRITO! e não RE-LIDO ok??? Então, é impossível que vc faça o que está querendo... Criar uma tablespace nova e esperar que o Oracle advinhe o que estava dentro de um datafile. Como dito no capítulo de Managing Datafiles and Tempfiles do Administrator Guide de sua documentação: If you add new datafiles to a tablespace and do not fully specify the filenames, the database creates the datafiles in the default database directory or the current directory, depending upon your operating system. Oracle recommends you always specify a fully qualified name for a datafile. Unless you want to reuse existing files, make sure the new filenames do not conflict with other files. Old files that have been previously dropped will be overwritten. Não tem como vc voltar uma tablespace dropada sem ser via alguma metodologia de backup... Ou via RMAN ou via begin backup, etc... Em 03/05/07, Aleksandro [EMAIL PROTECTED] escreveu: Sim, esta em archive, A dúvida era a seguinte, se dá para voltar uma tablespace dropada. Não tenho a intenção de voltar utilizando o RMAN. Faltou um comando que não tinha colocado, antes de colocar em online utilizei o recover datafile. As tabelas não voltaram. Com isso faço uma pergunta. Na criação de uma tablespace o comando reuse serve somente para aproveitar a configuração da tablespace que foi apagada ?. O que gostaria de fazer é isso mesmo que nosso colega publicou, dropar uma tablespace, criar uma outra com o mesmo nome utilizando o mesmo datafile, e com isso as informações voltarem para o local de origem. --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Gustavo Venturini de Lima [EMAIL PROTECTED] escreveu Vamos lá... Este banco está em modo ARCHIVE? Qual o último backup full/incremental? A princípio vc terá que voltar os arquivos do seu backup e de posse de todos os archives desde seu último backup fazer um: RECOVER TABLESPACE XXX; E depois: ALTER TABLESPACE XXX ONLINE Vc acha mais informações no *Oracle(r) Database Backup and Recovery Quick Start Guide* Em 02/05/07, Aleksandro [EMAIL PROTECTED] escreveu: Veja se é isso : alter database datafile 'd:\oracle\producao01.dbf' offline; Depois ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCAO01.DBF' ONLINE; Se for só isso não rolou não. --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br, Gustavo Venturini de Lima gventurini@ escreveu Mas não vai voltar mesmo... Você tem que fazer um recover da tablespace total... com ela offline... Em 02/05/07, Aleksandro aleksandrosouza@ escreveu: Boa tarde, Eu também fiz esse teste de criar uma tablespace, adicionar dados e depois dropar a tablespace mais mantando o datafile. Quando recriei a tablespace utilizando reuse, as informações não voltaram não. A versão que utilizo é a 10g. --- Em oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br, Anderson Haertel Rodrigues ahr@ escreveu Marco, Houve inserções/alterações no DataBase? Se houve, será necessária a recuperação incompleta do Banco de Dados do Banco de Dados, se não houve, não fiz o teste, mas, talvez funcione algo como: CREATE TABLESPACE ahr ADD DATAFILE 'localizacao/nome' SIZE X . REUSE; ou CREATE TABLESPACE ahr ADD DATAFILE 'datafilenovo' SIZE X ... e após, adicionar o DataFile existente a essa tablespace: ALTER TABLESPACE ahr ADD DATAFILE 'localizacao/nome' SIZE X . REUSE; Atenciosamente, Anderson Haertel Rodrigues Administrador de Banco de Dados Oracle 9i Database Administrator Certified Microsoft Certified Professional SQL Server 2000 Florianópolis/SC - Original Message - From: MARCO ANTONIO marcogru@ To: ORACLE_BR oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br oracle_br%40yahoogrupos.com.br Sent: Wednesday, July 27, 2005 12:52 PM Subject: [oracle_br] Recuperar tablespace Boa tarde a todos! Se uma tablespace for dropada e o datafile correspondente for mantido em disco, existe alguma maneira de se recuperar (recriar) esta tablespace reutilizando e recuperando este datafile? Um abraço! Marco Antonio - Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora!
Re: [oracle_br] Script para monitorar index...
Posso estar enganado... mas já precisei disso e para conseguir estes detalhes (pois o alter index XXX monitoring apenas diz se ele foi ou não utilizado) só consegui um script no Metalink que fica varrendo a SGA e coletando estas informações de TUDO o que passa por lá... Desisti de implementar pelo alto custo de processamento... Se desejar mesmo assim, dá uma olhada lá no Metalink que vc vai encontrá-lo em: https://metalink.oracle.com/metalink/plsql/f?p=130:14:7988589913324293215p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,1033478.6,1,0,1,helvetica https://metalink.oracle.com/metalink/plsql/f?p=130:14:7988589913324293215p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,144070.1,1,1,1,helvetica []'s Em 03/05/07, Luciano Lacerda [EMAIL PROTECTED] escreveu: *Bom dia a todos.* * Estou querendo saber se existe algum script que monitore a utilização de todos os indices de um determinado OWNER.* *Onde eu crio uma tabela em meu banco para ter os seguintes dados do indice, quantidade de utilização em um determinado período. (dia, hora, etc.).* ** *Obs: Banco de dados Oracle 9.2.0.1.0* -- Luciano Lacerda ORACLE DBA/ATG [EMAIL PROTECTED] llacerda.dba%40gmail.com [EMAIL PROTECTED] lucianolacerda29%40gmail.com [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: Importação alterando ac entuação de campos VARCHAR.
Obrigada a todos pelas respostas. Eu vou verificar. []s, Fabiana __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação da tabela não tem segredo... cria ela normal. Aí nos inserts tem que tratar... não é recomendado reaproveitamento de chave nesse caso pois vc teria que tratar também a sequence. Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o select max + 1. Abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 16:45 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. O que me impediu de criar a sequence eh o primeiro valor, pois nas minhas tentativas estavao dando erros. lembro de ter lido que para usar uma sequence o campo deve ter o valor gerado pela sequence.. :/ eh por isso q pedi um exemplo que me mostrasse a traducao de uma tabela do ss para o oracle.. * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 4:04 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Para se encriptar uma procedure é necessário o uso da ferramenta WRAP existente no oracle... cada versão de banco tem sua própria ferramenta wrap. Dá uma olhada no Help desse cara pra pegar os detalhes. Abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Rafael
RES: [oracle_br] Criar Job - Oracle 9i
Ok, mas quais os argumentos que devo passar para criar o job? Obrigado. De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Alexandre Schmitt Enviada em: quinta-feira, 3 de maio de 2007 10:26 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Criar Job - Oracle 9i Olá, Acredito que você possa usar a dbms_job.submit para isso. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: Miguel Alessandro May To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 9:39 AM Subject: [oracle_br] Criar Job - Oracle 9i Bom dia pessoal. Gostaria de saber como faço para criar um job no banco de dados para rodar de hora em hora. Aguardo. Obrigado. Atenciosamente, Miguel Alessandro May Analista de Suporte Gestão de Sistemas e Informações Marcegaglia do Brasil Ltda. mailto:[EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br [EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br Tel.: (47) 3431 64 67 / Fax: 3431 64 44 Visite nosso site: http://www.marcegaglia.com.br/ www.marcegaglia.com.br As informações contidas neste e-mail e os eventuais documentos anexos podem conter informações confidenciais, destinados somente para a(s) pessoa(s) a quem é dirigida. Caso você a tenha recebido por engano, informamos que a sua divulgação, utilização, reprodução ou distribuição deste e-mail é estritamente proibida, por favor, notifique o remetente e elimine a mensagem original. Todas as opiniões e declarações destinadas a entidades externas a esta empresa, somente serão consideradas oficiais quando efetivamente confirmadas por escrito por um representante legal desta empresa. Obrigado. Le informazioni contenute in questa comunicazione e gli eventuali documenti allegati hanno carattere confidenziale, sono tutelate dal segreto professionale e sono ad uso esclusivo del destinatario. Nel caso questa comunicazione Vi sia pervenuta per errore, Vi informiamo che la sua diffusione e riproduzione è contraria alla legge e preghiamo di darci prontamente avviso e di cancellare quanto ricevuto. Tutte le opinioni e declarazioni destinate a entità esterne a questa impresa, sarano considerate officiali soltanto quando effetivamente confirmate per scritto da un rappresentante legale di questa impresa. Grazie. This e-mail message and any files transmitted attached may contain confidential information intended only for the person(s) to whom it is addressed. If you are not the intended recipient, you are hereby notified that any use or distribution of this e-mail is strictly prohibited: please notify the sender and delete the original message. All opinions and statements, directed to firms, people or companies outside this organization, will be considered official when they are effectively confirmed in writing by any legal representative of our organization. Thank you. 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 Pereira - Confederação SICREDI Enviada em: quinta-feira, 3 de maio de 2007 09:28 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: RES: RES: RES: [oracle_br] Calculo volumetrico Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ]Em nome de jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele SEMPRE ocupará no mínimo 10 Mb ainda que vazio de dados. E não nos esqueçamos que a tabela PODE TER ÍNDICES, pode ter partições, pode ter LOBs, esses caras todos ocupam espaço, também. Há MONTES de planilhas e textos pelaí na net que tentam estimar isso só baseado na info das colunas, mas TODOAS AS QUE VI ATÉ HOJE erram muito muito feio, por não preverem essas coisas todas que citei... Por causa disso tudo, imho a melhor e mais precisa maneira de estimar a alocação futura é CRIAR mesmo a tal tabela fisicamente, com o storage que ele terá, com o extent size real, o tipo de
Re: [oracle_br] Criar Job - Oracle 9i
O job, o código (pl/sql ), próxima data de execução, intervalo, e um boolean relativo a quando deve ser feito o parse.Google is your friend.--Rafael Alexandre [EMAIL PROTECTED] || www.hbtec.com.brBlumenau - Santa Catarina - Original Message - From: Miguel Alessandro May To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:17 AM Subject: RES: [oracle_br] Criar Job - Oracle 9i Ok, mas quais os argumentos que devo passar para criar o job? Obrigado. De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Alexandre Schmitt Enviada em: quinta-feira, 3 de maio de 2007 10:26 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Criar Job - Oracle 9i Olá, Acredito que você possa usar a dbms_job.submit para isso. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: Miguel Alessandro May To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 9:39 AM Subject: [oracle_br] Criar Job - Oracle 9i Bom dia pessoal. Gostaria de saber como faço para criar um job no banco de dados para rodar de hora em hora. Aguardo. Obrigado. Atenciosamente, Miguel Alessandro May Analista de Suporte Gestão de Sistemas e Informações Marcegaglia do Brasil Ltda. mailto:[EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br [EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br Tel.: (47) 3431 64 67 / Fax: 3431 64 44 Visite nosso site: http://www.marcegaglia.com.br/ www.marcegaglia.com.br As informações contidas neste e-mail e os eventuais documentos anexos podem conter informações confidenciais, destinados somente para a(s) pessoa(s) a quem é dirigida. Caso você a tenha recebido por engano, informamos que a sua divulgação, utilização, reprodução ou distribuição deste e-mail é estritamente proibida, por favor, notifique o remetente e elimine a mensagem original. Todas as opiniões e declarações destinadas a entidades externas a esta empresa, somente serão consideradas oficiais quando efetivamente confirmadas por escrito por um representante legal desta empresa. Obrigado. Le informazioni contenute in questa comunicazione e gli eventuali documenti allegati hanno carattere confidenziale, sono tutelate dal segreto professionale e sono ad uso esclusivo del destinatario. Nel caso questa comunicazione Vi sia pervenuta per errore, Vi informiamo che la sua diffusione e riproduzione è contraria alla legge e preghiamo di darci prontamente avviso e di cancellare quanto ricevuto. Tutte le opinioni e declarazioni destinate a entità esterne a questa impresa, sarano considerate officiali soltanto quando effetivamente confirmate per scritto da un rappresentante legale di questa impresa. Grazie. This e-mail message and any files transmitted attached may contain confidential information intended only for the person(s) to whom it is addressed. If you are not the intended recipient, you are hereby notified that any use or distribution of this e-mail is strictly prohibited: please notify the sender and delete the original message. All opinions and statements, directed to firms, people or companies outside this organization, will be considered official when they are effectively confirmed in writing by any legal representative of our organization. Thank you. 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 Pereira - Confederação SICREDI Enviada em: quinta-feira, 3 de maio de 2007 09:28 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: RES: RES: RES: [oracle_br] Calculo volumetrico Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ]Em nome de jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas duma tabela em blocos Oracle, e quantas linhas caberão por bloco não depende só das características das colunas, ele depende também FUNDAMENTALMENTE das cláusulas de STORAGE, tal como PCTFREE, PCTUSED, FREELISTs, FREELIST GROUPS E é claro, o bd Oracle aloca espaço em disco POR EXTENTs, assim se um dado objeto tem initail extent de 10 Mb (digamos), ele
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação da tabela não tem segredo... cria ela normal. Aí nos inserts tem que tratar... não é recomendado reaproveitamento de chave nesse caso pois vc teria que tratar também a sequence. Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o select max + 1. Abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 16:45 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. O que me impediu de criar a sequence eh o primeiro valor, pois nas minhas tentativas estavao dando erros. lembro de ter lido que para usar uma sequence o campo deve ter o valor gerado pela sequence.. :/ eh por isso q pedi um exemplo que
[oracle_br] Re: Criacao de sequence e dar select no novo valor gerado..
Colega, fácil é relativo, tudo que vc sabe é fácil, o que vc não sabe é difícil - eu sempre usei as sequences, não vejo assim taaanta dificuldade... E cito também que necessariamente, Oracle é DIFERENTE de SQLServer, MUITOS dos conceitos que vc tem em um não são os mesmos no outro, até porque o perfil de utilização, os volumes típicos, etc, são diferente... No caso em questão, inclusive, é o que ocorre, o Oracle implementa sequences porque as sequences podem ser cacheadas E não implicam em nenhum tipo de enqueue para se assegurar ausência de duplicidade, implica em performance superior via de regra cfrme citado em http://asktom.oracle.com/pls/asktom/f? p=100:11:0P11_QUESTION_ID:6575961912937#6597836737589 . Quanto à pergunta de retorno de resultset via procedure, REF CURSOR é a resposta, em http://asktom.oracle.com/tkyte/ResultSets/index.html vc tem um exemplo, mas novamente o CONCEITO aqui é diferente, novamente , Oracle SQLServer Eu recomendaria fortemente que vc estudasse os manuais de Concepts e o Guia de Desenvolvedores Oracle, ** justamente ** para que vc fique conhecendo os conceitos e recomendações da Oracle para se desenvolver em banco Oracle, necessariamente MUITO, mas MUITO MESMO do que vc já usa e conhece em SQLServer vai ser diferente Pra complementar os manuais, eu recomendo os livros Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions, e o Effective Oracle by Design , ambos do autor Thomas Kyte, vão ser inestimáveis no seu dia a dia, se o teu objetivo é construir uma aplicação eficiente com o bd Oracle. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Renan Nucci - CSM Soft [EMAIL PROTECTED] escreveu Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br% 40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br% 40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values (produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br% 40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM
Re: RES: [oracle_br] Criar Job - Oracle 9i
CREATE OR REPLACE PROCEDURE pr01_job_calculo(p_param NUMBER ) AS jobno NUMBER; BEGIN DBMS_JOB.SUBMIT(jobno,'PR02_CALCULO(' || p_param ||');', sysdate, null); END prsbd_job_calculo; Isso dispara na hora, DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER, whatIN VARCHAR2, next_date IN DATE DEFAULT SYSDATE, intervalIN VARCHAR2 DEFAULT 'null', no_parseIN BOOLEAN DEFAULT FALSE) onde: job é um número que ele mesmo cria what é o código a executar next_date é para quando ele será executado interval é uma função que calcula a data da próxima execução ou gera nulo no_parse é falso (se for true é porque ela não dá para ser compilada agora, só no futuro, mas mesmo assim você já quer submeter o job) Oracle 8i Miguel Alessandro May escreveu: Ok, mas quais os argumentos que devo passar para criar o job? Obrigado. De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Rafael Alexandre Schmitt Enviada em: quinta-feira, 3 de maio de 2007 10:26 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Criar Job - Oracle 9i Olá, Acredito que você possa usar a dbms_job.submit para isso. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: Miguel Alessandro May To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 9:39 AM Subject: [oracle_br] Criar Job - Oracle 9i Bom dia pessoal. Gostaria de saber como faço para criar um job no banco de dados para rodar de hora em hora. Aguardo. Obrigado. Atenciosamente, Miguel Alessandro May Analista de Suporte Gestão de Sistemas e Informações Marcegaglia do Brasil Ltda. mailto:[EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br [EMAIL PROTECTED] mailto:miguel%40marcegaglia.com.br Tel.: (47) 3431 64 67 / Fax: 3431 64 44 Visite nosso site: http://www.marcegaglia.com.br/ www.marcegaglia.com.br As informações contidas neste e-mail e os eventuais documentos anexos podem conter informações confidenciais, destinados somente para a(s) pessoa(s) a quem é dirigida. Caso você a tenha recebido por engano, informamos que a sua divulgação, utilização, reprodução ou distribuição deste e-mail é estritamente proibida, por favor, notifique o remetente e elimine a mensagem original. Todas as opiniões e declarações destinadas a entidades externas a esta empresa, somente serão consideradas oficiais quando efetivamente confirmadas por escrito por um representante legal desta empresa. Obrigado. Le informazioni contenute in questa comunicazione e gli eventuali documenti allegati hanno carattere confidenziale, sono tutelate dal segreto professionale e sono ad uso esclusivo del destinatario. Nel caso questa comunicazione Vi sia pervenuta per errore, Vi informiamo che la sua diffusione e riproduzione è contraria alla legge e preghiamo di darci prontamente avviso e di cancellare quanto ricevuto. Tutte le opinioni e declarazioni destinate a entità esterne a questa impresa, sarano considerate officiali soltanto quando effetivamente confirmate per scritto da un rappresentante legale di questa impresa. Grazie. This e-mail message and any files transmitted attached may contain confidential information intended only for the person(s) to whom it is addressed. If you are not the intended recipient, you are hereby notified that any use or distribution of this e-mail is strictly prohibited: please notify the sender and delete the original message. All opinions and statements, directed to firms, people or companies outside this organization, will be considered official when they are effectively confirmed in writing by any legal representative of our organization. Thank you. 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 Pereira - Confederação SICREDI Enviada em: quinta-feira, 3 de maio de 2007 09:28 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: RES: RES: RES: [oracle_br] Calculo volumetrico Ok , muito obrigado , vou tentar novamente. Valeu -Mensagem original- De: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ]Em nome de jlchiappa Enviada em: quinta-feira, 3 de maio de 2007 09:16 Para: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Assunto: Re: RES: RES: [oracle_br] Calculo volumetrico OK, vc quer estimar o futuro : de forma alguma isso estava claro na expressão cálculo volumétrico... Muito bem, o bd Oracle sempre armazena as linhas
Re: [oracle_br] Criar Job - Oracle 9i
,next_date = to_date('03/05/2007 10:27:40','dd/mm/ hh24:mi:ss') ISSO SIGNIFICA É A DATA QUE VAI COMEÇAR AS EXECUÇÕES ,interval = 'SYSDATE+30/1440 ' ISSO SIGNIFICA QUE É DE 30 EM 30 MINUTOS. ,what = 'UPDATE POCAPESS SET APELPESS = 'APELIDO'' WHERE CODIPESS = 99;' COMANDO A SER EXECUTADOR BEGIN SYS.DBMS_JOB.CHANGE ( job= 21 ,what = 'UPDATE POCAPESS SET APELPESS = 'APELIDO'' WHERE CODIPESS = 99;' ,next_date = to_date('03/05/2007 10:27:40','dd/mm/ hh24:mi:ss') ,interval = 'SYSDATE+30/1440 ' ); END; [As partes desta mensagem que não continham texto foram removidas]
RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
André, vc poderia dar um exemplo disso pra ficar mais claro ? From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of PUB: Andre Santos Sent: quinta-feira, 3 de maio de 2007 11:02 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] mailto:mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: 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] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação da tabela não tem segredo... cria ela normal. Aí nos inserts tem que tratar... não é recomendado reaproveitamento de chave nesse caso pois vc teria que tratar também a sequence. Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o select max + 1. Abraço, Marco. From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 16:45 To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. O que me impediu de criar a sequence eh o primeiro valor, pois nas minhas tentativas estavao dando erros. lembro de ter lido que para usar uma sequence o campo deve ter o valor gerado pela sequence.. :/ eh por isso q pedi um exemplo que me mostrasse a traducao de uma tabela do ss para o oracle.. * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br
Re: [oracle_br] Criar Job - Oracle 9i
Executa exatamente isso; so muda o sql de execução... que vai cria o job DECLARE X NUMBER; BEGIN SYS.DBMS_JOB.SUBMIT ( job = X ,what = 'UPDATE POCAAUXI SET CODIAUXI = 1;' ,next_date = to_date('03/05/2007 11:37:23','dd/mm/ hh24:mi:ss') ,interval = 'SYSDATE+30/1440 ' ,no_parse = TRUE ); SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x)); END; / commit; [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Renan Mas não é difícil criar um trigger para fazer essa amarração. Vide o exemplo que acabei de mandar em resposta ao Marco. Há outros BD's que trabalham com o conceito de sequence também... DB2 (da IBM), Postgre... Inclusive, se não me engano, tanto SEQUENCE, como colunas IDENTITY, fazem parte do padrão ANSI. Claro que uma coluna identity poderia facilitar em alguns casos... mas, pessoalmente, eu prefiro as sequences. Além do que o mestre Chiappa já mencionou, há coisas que você pode com sequences que não poderiam ser realizadas com identity. Por exemplo, tabelas diferentes seguindo uma mesma seqüência. A procedure que você exemplificou, ficaria +/- assim no Oracle (versão 9i ou superior): CREATE OR REPLACE PROCEDURE sp_teste ( cod IN VARCHAR2, consulta OUT SYS_REFCURSOR ) AS BEGIN OPEN consulta FOR SELECT * FROM tabela WHERE codigo = :cod; END sp_teste; / [ ]'s André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED] escreveu: Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED]mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Agradeco a todos que responderam em especial ao Andre que mandou esse exemplo tosco de procedure q vai me ajuda a esclarecer muita coisa.. Vou tentar seguir as recomendacoes de leitura do Chiappa, q entende bastante do assunto, vi muita coisa sua na net.. Agora soh mais uma duvida tosca.. Como que eu chamo essa procedure, ,pois nao sei o que passar no segundo parametro... call sp_teste('20',???); []s * Renan S. Nucci * * Desenvolvedor * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 2:15 PM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan Mas não é difícil criar um trigger para fazer essa amarração. Vide o exemplo que acabei de mandar em resposta ao Marco. Há outros BD's que trabalham com o conceito de sequence também... DB2 (da IBM), Postgre... Inclusive, se não me engano, tanto SEQUENCE, como colunas IDENTITY, fazem parte do padrão ANSI. Claro que uma coluna identity poderia facilitar em alguns casos... mas, pessoalmente, eu prefiro as sequences. Além do que o mestre Chiappa já mencionou, há coisas que você pode com sequences que não poderiam ser realizadas com identity. Por exemplo, tabelas diferentes seguindo uma mesma seqüência. A procedure que você exemplificou, ficaria +/- assim no Oracle (versão 9i ou superior): CREATE OR REPLACE PROCEDURE sp_teste ( cod IN VARCHAR2, consulta OUT SYS_REFCURSOR ) AS BEGIN OPEN consulta FOR SELECT * FROM tabela WHERE codigo = :cod; END sp_teste; / [ ]'s André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED] escreveu: Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED]mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software *
RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Rafael, desculpe mas essa história de cursor explícito é mais rápido é balela num é não ? risos Alguém pode esclarecer isso. Já fiz trocentos testes e nunca vi diferença alguma entre os dois. Acho que é mais um mito oracleano ! Rola alguém dar uma colher de chá pra lista ? André, eu tinha pedido exemplo daquela trigger que cria a sequencia. Vc mandou ela em outro email ? No seu email só vi o exemplo do refcursor. valeu, Marco. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of PUB: Rafael Alexandre Schmitt Sent: quinta-feira, 3 de maio de 2007 14:51 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Eu faria : Declare cursor x is select t.campo1, t.campo2...from table t where t.codigo = parâmetro; begin for c1 in x loop -- faça alguma coisa... end loop; end; Lembrando que não há motivo para selecionar todos os campos se você não irá utilizá-los. De preferência use sempre cursores explícitos, segundo a documentação isto melhora a perfomance. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:35 AM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, concordo com seu argumento sobre a coluna identidade... acredito que seria no mínimo útil que se tivesse criado isso no oracle como existe em outros bancos. Mas enfim, isso não é o fim do mundo pois é facilmente contornável ! Com relação à procedure que retorna resultset eu já discordo em parte... acho que a forma de trabalhar no oracle é diferente dos outros bancos e acredito que não se faz necessário o uso desse tipo de procedure no oracle pelo uso de cursores ! os cursores são muito úteis e fáceis de se trabalhar. Tão simples como o próprio SELECT da sua proc !!! Se vc precisa por exemplo varrer o resultset pode fazer assim: for c_sql in ( select * from tabela where codigo = 'XXX') loop -- aqui vc coloca seu código end loop; Concordo se formos pensar que é de interesse da Oracle apresentar um BD que é compatível com outros bancos e facilidade para migração de banco (de banco XYZ para Oracle). Bom, se puder mostrar em que pontos de sua aplicação vc faz uso dessas procedures a gente pode te ajudar a adaptar da melhor forma dentro do oracle. Abraço, Marco. From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quinta-feira, 3 de maio de 2007 11:19 To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] mailto:mfernandes%40fornecedores.confab.com.br mailto:mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br
[oracle_br] Re: Criacao de sequence e dar select no novo valor gerado..
http://asktom.oracle.com/pls/asktom/f? p=100:11:0P11_QUESTION_ID:1544606261686 e http://asktom.oracle.com/pls/asktom/f? p=100:11:0P11_QUESTION_ID:1205168148688#1205970300992 são os testes e discussões a respeito, mas acrescento que pra performance o que diferencia explícito de implícito é que um vc faz open/fetch/close na mão, e outro vc usa dentro dum FOR que já faz tudo automaticamente, então o exemplo do colega lá está dentro dum FOR, portanto é SIm pra todos os efeitos que interessam implícito, é o banco que o controle automaticamente, é portanto algo mais eficiente que o explícito (ie, o que tem open/fetch/close). A diferença normalmente não é tão enorme mas existe sim... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, FERNANDES Marco ASOFTTEK [EMAIL PROTECTED] escreveu Rafael, desculpe mas essa história de cursor explícito é mais rápido é balela num é não ? risos Alguém pode esclarecer isso. Já fiz trocentos testes e nunca vi diferença alguma entre os dois. Acho que é mais um mito oracleano ! Rola alguém dar uma colher de chá pra lista ? André, eu tinha pedido exemplo daquela trigger que cria a sequencia. Vc mandou ela em outro email ? No seu email só vi o exemplo do refcursor. valeu, Marco. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of PUB: Rafael Alexandre Schmitt Sent: quinta-feira, 3 de maio de 2007 14:51 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Eu faria : Declare cursor x is select t.campo1, t.campo2...from table t where t.codigo = parâmetro; begin for c1 in x loop -- faça alguma coisa... end loop; end; Lembrando que não há motivo para selecionar todos os campos se você não irá utilizá-los. De preferência use sempre cursores explícitos, segundo a documentação isto melhora a perfomance. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:35 AM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, concordo com seu argumento sobre a coluna identidade... acredito que seria no mínimo útil que se tivesse criado isso no oracle como existe em outros bancos. Mas enfim, isso não é o fim do mundo pois é facilmente contornável ! Com relação à procedure que retorna resultset eu já discordo em parte... acho que a forma de trabalhar no oracle é diferente dos outros bancos e acredito que não se faz necessário o uso desse tipo de procedure no oracle pelo uso de cursores ! os cursores são muito úteis e fáceis de se trabalhar. Tão simples como o próprio SELECT da sua proc !!! Se vc precisa por exemplo varrer o resultset pode fazer assim: for c_sql in ( select * from tabela where codigo = 'XXX') loop -- aqui vc coloca seu código end loop; Concordo se formos pensar que é de interesse da Oracle apresentar um BD que é compatível com outros bancos e facilidade para migração de banco (de banco XYZ para Oracle). Bom, se puder mostrar em que pontos de sua aplicação vc faz uso dessas procedures a gente pode te ajudar a adaptar da melhor forma dentro do oracle. Abraço, Marco. From: oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quinta-feira, 3 de maio de 2007 11:19 To: oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br mailto:oracle_br% 40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Olá, Não sei se é balela, nunca usei nenhum método científico para chegar a essa conclusão. O que sei é que a Oracle recomenda o uso de cursores explícitos que , pelo menos em teoria, são mais eficientes. Um cursor implícito é executado como uma instrução segundo o padrão sql ansi. Segundo esse padrão, para retornar apenas uma linha são feitas duas operações: a primeira para retornar o registro em si e a segunda para verificar se irá retornar mais uma linha ( o que iria cair na exceptio too_many_rows ). Então, um cursor implícito sempre irá fazer no mínimo dois fetches. Também sei que isso foi otimizado a partir da versão 2.3 do pl/sql, e o que eu falei acima está na documentação não é uma conclusão pessoal. Acredito que além da questão perfomance o uso de cursores também é recomendado pela sua clareza e pela sua reusabilidade, você terá que escrever mais código mas o resultado é infinitamente superior. Um monte de select´s perdidos no meio do código é o que existe de pior, mas isto é a minha opinião pessoal. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 3:01 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Rafael, desculpe mas essa história de cursor explícito é mais rápido é balela num é não ? risos Alguém pode esclarecer isso. Já fiz trocentos testes e nunca vi diferença alguma entre os dois. Acho que é mais um mito oracleano ! Rola alguém dar uma colher de chá pra lista ? André, eu tinha pedido exemplo daquela trigger que cria a sequencia. Vc mandou ela em outro email ? No seu email só vi o exemplo do refcursor. valeu, Marco. From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of PUB: Rafael Alexandre Schmitt Sent: quinta-feira, 3 de maio de 2007 14:51 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Eu faria : Declare cursor x is select t.campo1, t.campo2...from table t where t.codigo = parâmetro; begin for c1 in x loop -- faça alguma coisa... end loop; end; Lembrando que não há motivo para selecionar todos os campos se você não irá utilizá-los. De preferência use sempre cursores explícitos, segundo a documentação isto melhora a perfomance. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] mailto:rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 11:35 AM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, concordo com seu argumento sobre a coluna identidade... acredito que seria no mínimo útil que se tivesse criado isso no oracle como existe em outros bancos. Mas enfim, isso não é o fim do mundo pois é facilmente contornável ! Com relação à procedure que retorna resultset eu já discordo em parte... acho que a forma de trabalhar no oracle é diferente dos outros bancos e acredito que não se faz necessário o uso desse tipo de procedure no oracle pelo uso de cursores ! os cursores são muito úteis e fáceis de se trabalhar. Tão simples como o próprio SELECT da sua proc !!! Se vc precisa por exemplo varrer o resultset pode fazer assim: for c_sql in ( select * from tabela where codigo = 'XXX') loop -- aqui vc coloca seu código end loop; Concordo se formos pensar que é de interesse da Oracle apresentar um BD que é compatível com outros bancos e facilidade para migração de banco (de banco XYZ para Oracle). Bom, se puder mostrar em que pontos de sua aplicação vc faz uso dessas procedures a gente pode te ajudar a adaptar da melhor forma dentro do oracle. Abraço, Marco. From: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quinta-feira, 3 de maio de 2007 11:19 To: oracle_br@yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Renan Hahaha... Nesse agradecimento do exemplo tosco, pareceu que você estava me escorraçando. =^) Para saber como fazer a chamada da procedure, precisamos saber qual a linguagem que você utiliza para isso... VB com ADO? PL/SQL ?... [ ] André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED] escreveu: Agradeco a todos que responderam em especial ao Andre que mandou esse exemplo tosco de procedure q vai me ajuda a esclarecer muita coisa.. Vou tentar seguir as recomendacoes de leitura do Chiappa, q entende bastante do assunto, vi muita coisa sua na net.. Agora soh mais uma duvida tosca.. Como que eu chamo essa procedure, ,pois nao sei o que passar no segundo parametro... call sp_teste('20',???); []s * Renan S. Nucci * * Desenvolvedor * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 2:15 PM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan Mas não é difícil criar um trigger para fazer essa amarração. Vide o exemplo que acabei de mandar em resposta ao Marco. Há outros BD's que trabalham com o conceito de sequence também... DB2 (da IBM), Postgre... Inclusive, se não me engano, tanto SEQUENCE, como colunas IDENTITY, fazem parte do padrão ANSI. Claro que uma coluna identity poderia facilitar em alguns casos... mas, pessoalmente, eu prefiro as sequences. Além do que o mestre Chiappa já mencionou, há coisas que você pode com sequences que não poderiam ser realizadas com identity. Por exemplo, tabelas diferentes seguindo uma mesma seqüência. A procedure que você exemplificou, ficaria +/- assim no Oracle (versão 9i ou superior): CREATE OR REPLACE PROCEDURE sp_teste ( cod IN VARCHAR2, consulta OUT SYS_REFCURSOR ) AS BEGIN OPEN consulta FOR SELECT * FROM tabela WHERE codigo = :cod; END sp_teste; / [ ]'s André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED]nucci.csm%40terra.com.br escreveu: Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED]mfernandes%40fornecedores.confab.com.br mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.broracle_br%40yahoog rupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.broracle_br%40yahoog rupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.broracle_br%40yahoog rupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
hahahaha Andre,, eu quis dizer tosco pq pra vcs devem ser tosco de tao facil, mas pra mim tem muita importancia,, foi isso que quis dizer nao ia te escurraça, pq vc me mostrou o q realmente eu tava procurando.. Eh o seguinte para eu ter independencia de banco estou pensando em criar procedures nos meus dois bancos (Oracle e SS) pq imagino q a chamada para os dois bancos sejam iguais,.. o q muda eh o corpo da procedure.. Portando ja criei as procedures no SS e agora chegou a hora de crialas no oracle.. e ae q ta o problema.. Estou utilizando o Oracle 10 e utilizando ADO (namespace oracle client no C#). bom quem puder me adicionar no msn pra me ajudar, sera bem vindo.. [EMAIL PROTECTED] * Renan S. Nucci * * Desenvolvedor * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br Sent: Thursday, May 03, 2007 4:03 PM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan Hahaha... Nesse agradecimento do exemplo tosco, pareceu que você estava me escorraçando. =^) Para saber como fazer a chamada da procedure, precisamos saber qual a linguagem que você utiliza para isso... VB com ADO? PL/SQL ?... [ ] André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED] escreveu: Agradeco a todos que responderam em especial ao Andre que mandou esse exemplo tosco de procedure q vai me ajuda a esclarecer muita coisa.. Vou tentar seguir as recomendacoes de leitura do Chiappa, q entende bastante do assunto, vi muita coisa sua na net.. Agora soh mais uma duvida tosca.. Como que eu chamo essa procedure, ,pois nao sei o que passar no segundo parametro... call sp_teste('20',???); []s * Renan S. Nucci * * Desenvolvedor * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, May 03, 2007 2:15 PM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan Mas não é difícil criar um trigger para fazer essa amarração. Vide o exemplo que acabei de mandar em resposta ao Marco. Há outros BD's que trabalham com o conceito de sequence também... DB2 (da IBM), Postgre... Inclusive, se não me engano, tanto SEQUENCE, como colunas IDENTITY, fazem parte do padrão ANSI. Claro que uma coluna identity poderia facilitar em alguns casos... mas, pessoalmente, eu prefiro as sequences. Além do que o mestre Chiappa já mencionou, há coisas que você pode com sequences que não poderiam ser realizadas com identity. Por exemplo, tabelas diferentes seguindo uma mesma seqüência. A procedure que você exemplificou, ficaria +/- assim no Oracle (versão 9i ou superior): CREATE OR REPLACE PROCEDURE sp_teste ( cod IN VARCHAR2, consulta OUT SYS_REFCURSOR ) AS BEGIN OPEN consulta FOR SELECT * FROM tabela WHERE codigo = :cod; END sp_teste; / [ ]'s André Em 03/05/07, Renan Nucci - CSM Soft [EMAIL PROTECTED]nucci.csm%40terra.com.br escreveu: Blz,, agradeço as respostas,, agora sinceramente, acho o cumulo o banco de dados mais utilizado do mundo nao ter uma maneira mais facil para esse tipo de problemas Um outro ponto que eu nao estou acertando eh em relacao a procedures.. Pois se tenhu que fazer um select dentro de uma procedure eu preciso declarar um vetor ou jogar o resultado do select em uma variavel??? como faço pra declarar uma variavel pra acertar a procedure abaixo? create procedure teste (:cod in varchar) is begin select * from tabela where codigo = :cod; end * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: Andre Santos To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br Sent: Thursday, May 03, 2007 11:02 AM Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED]mfernandes%40fornecedores.confab.com.br mfernandes%40fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na
[oracle_br] Re: Criacao de sequence e dar select no novo valor gerado..
Utilize também dessa forma caso ache que é mais prático Depois que criar uma sequence faça o seguinte INSERT INTO TABELA (NUMERO,CAMPO1,CAMPO2) VALUES (NOME_DA_SEQUENCE.NEXTVAL,'BLABLA','TESTE','SEQUENCE') --- Em oracle_br@yahoogrupos.com.br, Andre Santos [EMAIL PROTECTED] escreveu Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação da tabela não tem segredo... cria ela normal. Aí nos inserts tem que tratar... não é recomendado reaproveitamento de chave nesse caso pois vc teria que tratar também a sequence. Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o select max + 1. Abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 16:45 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. O que me impediu de criar a sequence eh o primeiro valor, pois nas minhas tentativas estavao dando erros. lembro de ter lido que para usar uma sequence o campo deve ter o valor gerado pela sequence.. :/ eh por isso q pedi um exemplo que me mostrasse a traducao de uma tabela do ss para o oracle.. * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br mailto:oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 4:04 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Para se encriptar uma procedure é necessário o uso da ferramenta WRAP existente no oracle... cada versão de banco tem sua própria ferramenta wrap. Dá uma
Re: [oracle_br] Re: Redução de tablespace - Oracle 8.1.7
Chiappa, mais uma vez muito obrigado, tanto pelo comando pela orientação. Funcionou beleza. []'s Marcel jlchiappa escreveu: Marcel, não tem aonde trancar, LOBs são um conceito comum no banco Oracle, mas se vc ainda tem dúvidas nele eu recomendaria fortemente um bom estudo do manual Oracle8i Application Developer's Guide - Large Objects (LOBs) e do Concepts, absolutamente tudo o que vc precisa saber sobre LOBs está lá... No caso em questão : primeiro vc precisa saber o que é esse segmento SYS_LOBnnn que vc tem, consulte a DBA_SEGMENTS : [EMAIL PROTECTED]:SQLselect * from dba_segments where segment_name='SYS_LOB017499C2$$'; OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS RELATIVE_FNO BUFFER_ --- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- SCOTT SYS_LOB017499C2 $$ LOBSEGMENT USERS 7 34689 163840 20 1 163840 163840 1 2147483645 0 1 1 7 DEFAULT == já que é um lob segment, vc consulta a DBA_LOBS pra saber quem é o dono, em qual tabela ele reside e qual é a coluna que é LOB : [EMAIL PROTECTED]:SQLselect * from dba_lobs where segment_name='SYS_LOB017499C2$$'; OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME INDEX_NAME CHUNK PCTVERSION RETENTION FREEPOOLS CACHE LOGGING IN_ -- -- --- - - -- -- -- --- --- -- --- --- SCOTT TB_LOB C2 SYS_LOB017499C2$$ SYS_IL017499C2$$ 8192 10 10800 NO YES YES == ok, no meu caso era a coluna C2 da tabela TB_LOB, como vc viu na DBA_SEGMENTS hoje esse segmento está na tablespace USERS, vou mover : [EMAIL PROTECTED]:SQLalter table scott.TB_LOB move lob (C2) store as (tablespace TS_LMT_UNIF); Tabela alterada. == a coluna continua existindo, normal... [EMAIL PROTECTED]:SQLselect * from dba_lobs where segment_name='SYS_LOB017499C2$$'; OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME INDEX_NAME CHUNK PCTVERSION RETENTION FREEPOOLS CACHE LOGGING IN_ -- -- --- - - -- -- -- --- --- -- --- --- SCOTT TB_LOB C2 SYS_LOB017499C2$$ SYS_IL017499C2$$ 8192 10 10800 NO YES YES == mas o segmento foi pra outra tablespace : [EMAIL PROTECTED]:SQLselect * from dba_segments where segment_name='SYS_LOB017499C2$$'; OWNER SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS RELATIVE_FNO BUFFER_ --- - - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- SCOTT SYS_LOB017499C2 $$ LOBSEGMENT TS_LMT_UNIF 26 265 1048576 128 1 163840 1048576 1 2147483645 0 1 1 26 DEFAULT []s Chiappa -- . Marcel Francisco MOTA - Cap QCO Gabinete do Comandante do Exército Seção de Telemática Fone: 3415.56.36 RITEX: 860.5636
[oracle_br] Cota em tablespace temporário
Boa tarde, Existe quota para um usuário que esta amarrado com uma determinada tablespace temporária. Abaixo segue os comandos que utilizei, a cota unlimited somente funcionou para tablespaces que não são temporárias, isso quer dizer que as temporárias não necessitam de cotas definidas ? Utilizo o oracle 10.2.0.1 Segue os comandos utilizados a a mensagem de erro SQL SQL ALTER USER USUARIO1 TEMPORARY TABLESPACE TMP1; Usuário alterado. SQL ALTER USER USUARIO DEFAULT TABLESPACE PERMANENTE1; Usuário alterado. SQL ALTER USER USUARIO QUOTA UNLIMITED ON PERMANENTE1; Usuário alterado. SQL ALTER USER USUARIO QUOTA UNLIMITED ON TMP1; ALTER USER USUARIO QUOTA UNLIMITED ON TMP1 * ERRO na linha 1: ORA-30041: Cannot grant quota on the tablespace
[oracle_br] Subconjunto de um Banco
Olá pessoal, Preciso criar 2 bancos: um para treinamento e outro para desenvolvimento. Todos dois receberão dados da produção. Aí está meu problema: quero que apenas parte desses dados seja migrada e não 100%. Como posso criar um subconjunto (50%-75%) do banco de produção? Existe alguma ferramenta ou script para isso? Obrigado, _ Augusto César Analista - DBA Oracle _ MSN Messenger: converse com os seus amigos online. http://messenger.msn.com.br
Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado..
Marco Segue um exemplo. Supondo uma tabela TESTE(com um campo codigo do tipo number) e uma sequence SQ_TESTE: CREATE OR REPLACE TRIGGER tr_teste_ins BEFORE INSERT ON teste FOR EACH ROW BEGIN SELECT sq_teste.NEXTVAL INTO :NEW.codigo FROM DUAL; END; / [ ]'s André Em 03/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] escreveu: André, vc poderia dar um exemplo disso pra ficar mais claro ? From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Andre Santos Sent: quinta-feira, 3 de maio de 2007 11:02 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Só acrescentando, ao que o Marco já explicou, é possível criar um trigger para insert, obtendo o valor da sequence (dessa forma ficaria bem semelhante ao uma coluna do tipo autonumeração). [ ]'s André Em 02/05/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED]mfernandes%40fornecedores.confab.com.brmailto: mfernandes% mfernandes%2540fornecedores.confab.com.br escreveu: Renan, pequeno detalhe no seu select vc não usa mais a sequence ! Use-a apenas no insert. O currentval da sequence não é o que vc procura. Vc precisa especificar o código na busca e não o valor da sequence. Como te disse, a sequence não tem relação com a tabela. É apenas um artifício para controlar um sequencia numérica. Portanto, não use o currentval no select, pois ele não serve para isso. Caso vc queira consultar o último registro inserido utilize a cláusula where usando max(campo_id). valeu, abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 17:52 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Criei conforme vossa orientação, mas nao consigo selecionar o que foi inserido.. O que esta errado no que fiz abaixo?? /*cria a sequencia*/ create sequence produtos_codigo increment by 1 minvalue 1 nomaxvalue start with 1 commit /*tenta nserir usando sequence*/ ALTER SESSION SET NLS_DATE_FORMAT = 'YY/MM/DD' /*altera formato da sessao*/ insert into Produtos values(produtos_codigo.NEXTVAL, 'produto1', 5, 2, '2001-01-01') ; commit; /*seleciona o que foi inserido*/ select * from produtos where codigo = produtos_codigo.CURRVAL; * Renan S. Nucci * * Desenvolvedor * * CSM Software * - Original Message - From: FERNANDES Marco A SOFTTEK To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br Sent: Wednesday, May 02, 2007 5:10 PM Subject: RE: [oracle_br] Criacao de sequence e dar select no novo valor gerado.. Renan, a tabela não tem ligação direta com a sequence. A tabela tem uma coluna tipo Number normal. O vínculo estará apenas no insert na tabela da seguinte forma: insert into tabela (coluna_ID, coluna_2, coluna_3) values (nome_sequence.nextval(), valor_2, valor_3); A sequence quando criada vc especifica o valor inicial, incremento, máximo, ciclicidade, etc. Portanto, vc deve iniciar com 1 e máximo de 9 onde o número de noves depende do tamanho do seu number... se for number(3) o máximo é 999 o incremento põe 1, ou seja, soma sempre 1 (incremento normalmente usado). Ou seja, na criação da tabela não tem segredo... cria ela normal. Aí nos inserts tem que tratar... não é recomendado reaproveitamento de chave nesse caso pois vc teria que tratar também a sequence. Eu já vi muita gente usar sequence mas tbem já vi muita gente usar o select max + 1. Abraço, Marco. From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br ] On Behalf Of PUB: Renan Nucci - CSM Soft Sent: quarta-feira, 2 de maio de 2007 16:45 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br
[oracle_br] ORA-01555 snapshot too old
Boas pessoal, rdbms 9i (9.2.0.7 ee) hp-ux 11.11 seguinte: a alguns dias o alert.log tem mostrado msgs ORA-01555 (snapshot too old). Como estas msgs começaram a aparecer durante a madrugada, onde tbém está rodando o backup online, achei que o segmento de Undo havia estourado. Pra não perder muito tempo com isso, simplesmente aumentei em 50% a Undo tablespace. Acontece que os erros continuam a aparecer. Da última vez, estava vendo a ocupação da tablespace quando uma nova msg ORA-01555 surgiu no alert.log. Aí surgiu minha dúvida: no momento da geração do erro, a ocupação da Undo estava em 500Mb, que correspondem a apenas 5% da Undo (10Gb). Se não está havendo estouro da Undo, o que pode estar gerando esses erros? Desde já, tks! lfr66