Re: [oracle_br] Utilização do Comando Merge
?? Não entendi qual a sua necessidade. 2008/8/28 francisco porfirio [EMAIL PROTECTED] Marcio, xou de bola esse site Pessoa queria mais uma ajuda Tipo ele ta comparando apenas pela pk tendo igual ele sempre altera os registros. Quero que ele altere apenas quando estes registros forem diferentes. Coloquei as clausulas no on, mas não ta funcionando. Com isso esta mais ou menos assim. BEGIN MERGE INTO inf_coberturas M USING t.inf_coberturas T ON (m.cob_codigo_cobertura = t.cob_codigo_cobertura AND (m.cob_descricao = t.cob_descricao OR m.cob_mapa_cobertura = t.cob_mapa_cobertura OR m.cob_cod_intercambio_ptu = t.cob_cod_intercambio_ptu OR m.cob_mapa_alterado = t.cob_mapa_alterado)) WHEN MATCHED THEN UPDATE SET m.cob_descricao = t.cob_descricao, m.cob_mapa_cobertura = t.cob_mapa_cobertura WHEN NOT MATCHED THEN INSERT VALUES(CASE etl.merge_counter(etl.c_inserting) WHEN 0 THEN t.cob_codigo_cobertura END, t.cob_descricao,t.cob_mapa_cobertura, t.cob_cod_intercambio_ptu, t.cob_mapa_alterado); DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQL%ROWCOUNT) || ' - Linhas merged.'); dbms_output.put_line(TO_CHAR(etl.get_merge_insert_count) ||' - Linhas Inseridas'); dbms_output.put_line(TO_CHAR(etl.get_merge_update_count( SQL%ROWCOUNT )) ||' - Linhas Alteradas'); END; -- Atenciosamente Francisco Porfirio Ribeiro Neto [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Utilização do Comando Merge
http://www.quest-pipelines.com/newsletter-v4/0903_D.htm 2008/8/27 francisco porfirio [EMAIL PROTECTED] Pessoal... Sei que muitos já devem conhecer este comando, mas para aqueles que não conhecem, vai uma boa dica para fazer algumas migrações mais simples. Com esse comando vc consegue tanto contemplar novos registros de uma tabela como atualizar os que foram alterados. A sintaxe é mais ou menos com esta: MERGE INTO tb_destino d USING tb_origem o ON (d.codigo = o.codigo) WHEN MATCHED THEN d.descricao = o.descricao WHEN not MATCHED THEN INSERT (d.codigo,d.descricao) VALUES (d.codigo, d.descricao); Para aqueles que já utilizaram, vocês sabem me informar se tem alguma forma de o merge me retornar quantas linhas foram atualizadas e quantas foram inseridas? Agradeço desde já... -- Atenciosamente Francisco Porfirio Ribeiro Neto [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] função para retornar os dias a partir de uma data
Estou um pouco enferrujado, na medida em que não tenho participado tanto, mas acho que essa query ajuda. No decorrer do exemplo, insiro mais linhas para entrar no intervalo de 30 dias, depois, no resultado, voce pode agrupar por mes ou formatar da maneira que lhe for conveniente. Fiz a query em uma tabela só para simplificar a idéia, obviamente é preciso ajustar os joins para garantir que a data de atendimento seja referida na tabela de serviço. (espero que ajude). ops$marcio:DB11G select * from guia; CDGUIA CDUSUARIO ATEND - - --- 1 1 01/01/2008 00:00:00 1 1 01/02/2008 00:00:00 1 1 01/03/2008 00:00:00 1 1 01/04/2008 00:00:00 1 1 01/05/2008 00:00:00 1 1 01/06/2008 00:00:00 1 1 01/07/2008 00:00:00 1 1 01/08/2008 00:00:00 1 2 01/01/2008 00:00:00 1 2 01/02/2008 00:00:00 1 2 01/03/2008 00:00:00 1 2 01/04/2008 00:00:00 1 2 01/05/2008 00:00:00 1 2 01/06/2008 00:00:00 1 2 01/07/2008 00:00:00 1 2 01/08/2008 00:00:00 1 1 03/01/2008 00:00:00 1 1 13/01/2008 00:00:00 1 1 01/02/2008 00:00:00 19 rows selected. ops$marcio:DB11G insert into guia values ( 1, 1, '15/05/2008 00:00:00'); 1 row created. ops$marcio:DB11G commit; Commit complete. ops$marcio:DB11G select * 2from ( 3 select cdguia, 4 cdusuario, 5 atend, 6 count(*) over (partition by cdguia, cdusuario 7order by atend range between 15 preceding 8 and 15 following ) cnt 9from guia 10 ) 11 where cnt 1 12 / CDGUIA CDUSUARIO ATEND CNT - - --- - 1 1 01/01/2008 00:00:00 3 1 1 03/01/2008 00:00:00 3 1 1 13/01/2008 00:00:00 3 1 1 01/02/2008 00:00:00 2 1 1 01/02/2008 00:00:00 2 1 1 01/05/2008 00:00:00 2 1 1 15/05/2008 00:00:00 2 7 rows selected. ops$marcio:DB11G ops$marcio:DB11G insert into guia values ( 1, 2, '15/05/2008 00:00:00'); 1 row created. ops$marcio:DB11G commit; Commit complete. ops$marcio:DB11G select * 2from ( 3 select cdguia, 4 cdusuario, 5 atend, 6 count(*) over (partition by cdguia, cdusuario 7order by atend range between 15 preceding 8 and 15 following ) cnt 9from guia 10 ) 11 where cnt 1 12 / CDGUIA CDUSUARIO ATEND CNT - - --- - 1 1 01/01/2008 00:00:00 3 1 1 03/01/2008 00:00:00 3 1 1 13/01/2008 00:00:00 3 1 1 01/02/2008 00:00:00 2 1 1 01/02/2008 00:00:00 2 1 1 01/05/2008 00:00:00 2 1 1 15/05/2008 00:00:00 2 1 2 01/05/2008 00:00:00 2 1 2 15/05/2008 00:00:00 2 9 rows selected. 2008/8/20 ewerton_grillo [EMAIL PROTECTED] Tenho uma tabela de guia onde tem os campos cdguia, cdusuario, cdprestador, cdespecialidade e dataatendimento e uma tabela servico onde tem o cdguia e cdservico preciso verificar se durante o período de 01/01/2008 a 30/07/2008 se o usuário realizou mais de uma consulta inferior a 30 dias, sempre verificando da última consulta para a anterior não importando o período e sim os 30 dias, para o mesmo prestador e especialidade. como posso fazer isso? -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Alterar campo varchar2 para number na VIEW
%2540yahoogrupos.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%2540yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcio Portes Enviada em: terça-feira, 15 de julho de 2008 00:58 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Alterar campo varchar2 para number na VIEW Walquencir, Tenta ai: CREATE OR REPLACE FORCE VIEW SAC.CLIENTE (CNPJ, NOME, ENDERECO) AS SELECT to_number(replace(translate(L_CLI.CGC,'/-.',' '),' ','')) cnpj , L_CLI.NOME NOME , L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI , L.REPRESENTANTE L_REP , L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO / 2008/7/14 Walquencir Pedroti [EMAIL PROTECTED]walquencir.pedroti%40dovac.com.brmailto: walquencir.pedroti%40dovac.com.br walquencir.pedroti%2540dovac.com.br : Boa tarde a todos. Minha tabela o campo CNPJ é VARCHAR2. Quando monto minha view da forma abaixo. E a tabela view não reconhece como Number o campo CNPJ, e portanto toda a consulta feita neste campo retorna como null, já um select all retorna o CNPJ. CREATE OR REPLACE FORCE VIEW SAC.CLIENTE (CNPJ, NOME, ENDERECO) AS SELECT TO_NUMBER(CNPJ), NOME, ENDERECO FROM ( SELECT * FROM ( SELECT CONCAT ('1',L_CLI.CGC) CHAVE, REPLACE(REPLACE(REPLACE(L_CLI.CGC,'.',null),'/',null),'-',null) CNPJ, L_CLI.NOME NOME, L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI, L.REPRESENTANTE L_REP, L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO ) ); Criei outra VIEW com declare set serverout on; DECLARE var_CNPJ number ; BEGIN SELECT CNPJ INTO var_CNPJ FROM ( SELECT REPLACE(REPLACE(REPLACE(L_CLI0A0.CGC,'.',null),'/',null),'-',null) cnpj, L_CLI.NOME NOME, L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI, L.REPRESENTANTE L_REP, L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO and rownum 6 ); END; / Mas esta aparece a mensagem ORA-01422: exact fetch returns more than requested number of rows. Verificando a mensagem no metalink, existe um bug para minha versão que é 10.1.0.2.0. E lá existe uma outra forma de fazer que é: DECLARE TYPE NumList IS TABLE OF NUMBER; TYPE NameList IS TABLE OF VARCHAR2(15); empnos NumList; enames NameList; sals NumList; BEGIN EXECUTE IMMEDIATE 'SELECT empno, ename FROM emp' BULK COLLECT INTO empnos, enames; DBMS_OUTPUT.PUT_LINE('Empployess collected = '||empnos.count); END; / Alguém consegue VER uma solução para a criação de uma VIEW? Obrigado a todos W.Pedroti [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Alterar campo varchar2 para number na VIEW
Walquencir, Tenta ai: CREATE OR REPLACE FORCE VIEW SAC.CLIENTE (CNPJ, NOME, ENDERECO) AS SELECT to_number(replace(translate(L_CLI.CGC,'/-.',' '),' ','')) cnpj , L_CLI.NOME NOME , L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI , L.REPRESENTANTE L_REP , L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO / 2008/7/14 Walquencir Pedroti [EMAIL PROTECTED]: Boa tarde a todos. Minha tabela o campo CNPJ é VARCHAR2. Quando monto minha view da forma abaixo. E a tabela view não reconhece como Number o campo CNPJ, e portanto toda a consulta feita neste campo retorna como null, já um select all retorna o CNPJ. CREATE OR REPLACE FORCE VIEW SAC.CLIENTE (CNPJ, NOME, ENDERECO) AS SELECT TO_NUMBER(CNPJ), NOME, ENDERECO FROM ( SELECT * FROM ( SELECT CONCAT ('1',L_CLI.CGC) CHAVE, REPLACE(REPLACE(REPLACE(L_CLI.CGC,'.',null),'/',null),'-',null) CNPJ, L_CLI.NOME NOME, L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI, L.REPRESENTANTE L_REP, L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO ) ); Criei outra VIEW com declare set serverout on; DECLARE var_CNPJ number ; BEGIN SELECT CNPJ INTO var_CNPJ FROM ( SELECT REPLACE(REPLACE(REPLACE(L_CLI0A0.CGC,'.',null),'/',null),'-',null) cnpj, L_CLI.NOME NOME, L_CLI.END ENDERECO, FROM L.CLIENTE L_CLI, L.REPRESENTANTE L_REP, L.SUPERVISOR L_SUP WHERE L_CLI.CODREP = L_REP.CODIGO AND L_REP.SUPERVISOR = L_SUP.CODIGO and rownum 6 ); END; / Mas esta aparece a mensagem ORA-01422: exact fetch returns more than requested number of rows. Verificando a mensagem no metalink, existe um bug para minha versão que é 10.1.0.2.0. E lá existe uma outra forma de fazer que é: DECLARE TYPE NumList IS TABLE OF NUMBER; TYPE NameList IS TABLE OF VARCHAR2(15); empnos NumList; enames NameList; sals NumList; BEGIN EXECUTE IMMEDIATE 'SELECT empno, ename FROM emp' BULK COLLECT INTO empnos, enames; DBMS_OUTPUT.PUT_LINE('Empployess collected = '||empnos.count); END; / Alguém consegue VER uma solução para a criação de uma VIEW? Obrigado a todos W.Pedroti [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ajuda SQL
Pode usar a função não documentada wm_concat. Mas é perigoso, pq a Oracle pode mudar a qualquer nova versão, eu testei na 10.2.0.3 e 11.1.0.6 e funciona, mas... SQL select * from t; X Y - - 5405 1 5102 2 5405 2 5405 3 4 rows selected. SQL col concat format a50 SQL select y, translate(wm_concat(x), ',', '/') concat from t group by y; Y CONCAT - -- 1 5405 2 5102/5405 3 5405 3 rows selected. 2008/6/23 Renato Tecedor [EMAIL PROTECTED]: Pessoal estou com uma dificuldade para criar uma consulta no meu banco aonde eu gostaria que retornasse o valor da coluna concatenado na mesma linha quando o numero da sequencia fosse igual. por exemplo hoje ele esta assim: SQL select dnfv_cd_cfop,dnfv_nr_seq_seq 2 from det_nota_fiscal_vendas 3 where dnfv_cd_empresa = 1 4 and dnfv_id_nota_fiscal = 'N' 5 and dnfv_nr_seq_nota = 116026 6 group by dnfv_cd_cfop,dnfv_nr_seq_seq 7 order by dnfv_nr_seq_seq; DNFV DNFV_NR_SEQ_SEQ --- 5405 1 5102 2 5405 2 5405 3 e gostaira que me retornasse assim: DNFV DNFV_NR_SEQ_SEQ --- 5405 1 5102/5405 2 5405 3 Obrigado, Renato -- Marcio Portes http://mportes.blogspot.com [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Oracle 11g x86_64
Na versão 11g, o APEX vem junto com a instalação do banco, o diretório é $ORACLE_HOME/apex, as instruções para instalação estão em http://download.oracle.com/docs/cd/B28359_01/install.111/b32002/post_inst_task.htm#BABEBICC abraços, 2008/6/20 Carlos Alfredo M. de Menezes [EMAIL PROTECTED] : Colega, Nunca usei esse produto, antes era conhecido como HTML DB e estava também disponível no Companion CD das versão 10g, mas sei que já é instalado por default na versão 11g. Att, Carlos Alfredo M. de Menezes Analista de Suporte Sr. S/A Usina Coruripe Açúcar e Álcool +55(82)3217-2121 Jose - Oracle escreveu: Carlos , seria esse o link para download ? http://www.oracle.com/technology/products/database/application_express/download.html http://www.oracle.com/technology/products/database/application_express/download.html [] barba - Original Message - From: Carlos Alfredo M. de Menezes To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%2540yahoogrupos.com.br Sent: Friday, June 20, 2008 2:14 PM Subject: Re: [oracle_br] Oracle 11g x86_64 Colega, o iSQLPlus não existe mais na versão 11g, use o SQL Developer ou Oracle Application Express, quem também está com data marcada para morrer é o sqlplusw, o SQL Plus da plataforma Windows. Fontes: http://laurentschneider.com/wordpress/2006/03/isqlplus-and-sqlplusw-desupport.html http://laurentschneider.com/wordpress/2006/03/isqlplus-and-sqlplusw-desupport.html http://download.oracle.com/docs/cd/B28359_01/install.111/b32002/whatsnew.htm#BGGBABGJ http://download.oracle.com/docs/cd/B28359_01/install.111/b32002/whatsnew.htm#BGGBABGJ Att, Carlos Alfredo M. de Menezes Analista de Suporte Sr. S/A Usina Coruripe Açúcar e Álcool +55(82)3217-2121 Jose - Oracle escreveu: Pessoal, e o seguite tenho um RedHat EL 5, Oracle 11g, td instalado teoricamente sem erros, porem nao consigo startar o isqlplusctl, pergunto na versao 11g, nao tem esse cara ?, qual um outro eu poderia estar usando ? [] barba [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Erro em plsql
ops$marcio:LX10G select index_name, tablespace_name from user_indexes; INDEX_NAME TABLESPACE_NAME -- -- TI USERS TI2USERS 2 rows selected. ops$marcio:LX10G ops$marcio:LX10G begin 2 for x in ( select index_name from user_indexes ) 3 loop 4 execute immediate 'alter index '|| x.index_name ||' rebuild tablespace sysaux'; 5 end loop; 6 end; 7 / PL/SQL procedure successfully completed. ops$marcio:LX10G ops$marcio:LX10G select index_name, tablespace_name from user_indexes; INDEX_NAME TABLESPACE_NAME -- -- TI SYSAUX TI2SYSAUX 2 rows selected. 2008/2/7 jorgelrt1 [EMAIL PROTECTED]: Olá amigos Venho mais uma vez pedir mais uma vez a ajuda de vcs. Não estou entendendo o que está errado nesta PL. DECLARE CURSOR IDX IS SELECT INDEX_NAME FROM USER_INDEXES; BEGIN FOR C_IDX IN IDX LOOP EXECUTE IMMEDIATE 'ALTER INDEX '||C_IDX.INDEX_NAME||' REBUILD TABLESPACE TS_IDX_DISCO ;'; END LOOP; END; DECLARE * ERRO na linha 1: ORA-00911: caractere invßlido ORA-06512: em line 6 -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] SQL em Trigger
Qual a versão do banco? 2008/1/26 André Schaeffer - Berbau Balas Finas [EMAIL PROTECTED]: Amigos. Tenho como capturar numa trigger o codigo SQL que gerou uma alteracao? O que tenho atualmente (abaixo) nao captura o SQL... CREATE OR REPLACE TRIGGER AGS_AUDIT_TRIGGER BEFORE UPDATE of ALIQ_IPI ON cml_movitens FOR EACH ROW BEGIN INSERT INTO AGS_AUDIT VALUES( user, sysdate, :new.COD_ITEM, :OLD.ID_TRANSACAO, :OLD.ALIQ_IPI, : NEW.ALIQ_IPI); END; / André Gustavo Schaeffer Berbau Balas Finas Email: [EMAIL PROTECTED] andre%40berbau.com.br MSN: [EMAIL PROTECTED] agsmisc%40hotmail.com Fone: (54) 3321 3677 Ramal 24 http://www.berbau.com.br [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Listener não sobe
Não tem outro listener rodando não? Os adaptadores de rede estão no ar? veja se há alguma dica no arquivo: /u01/app/oracle/diag/tnslsnr/infiniserver/listener/alert/log.xml On Jan 2, 2008 7:34 PM, Milton Bastos Henriquis Jr. [EMAIL PROTECTED] wrote: Olá pessoal... Pela primeira vez instalei a nova versão do Oracle, a 11g, aqui numa máquina com o CentOS 5. A instalação do software foi tudo OK, finalizada. Depois, fui rodar o dbca pra criar uma instância, e ele acusou que não havia um listener rodando. Pois bem, rodei o netca pra criar o listener. Listener criado, porém, não está funcionando, vejam o que rola: LSNRCTL start Starting /u01/app/oracle/product/11.1.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.1.0.6.0 - Production System parameter file is /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/infiniserver/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=infiniserver)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=infiniserver)(PORT=1521))) TNS-12547: TNS:lost contact TNS-12560: TNS:protocol adapter error TNS-00517: Lost contact Linux Error: 104: Connection reset by peer Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused LSNRCTL Alguém pode me ajudar??? Milton [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] DBMS_LOB
Na linha v_bfile bfile := BFILENAME( 'my_dir' , v_file_name); Troque por v_bfile bfile := BFILENAME( 'MY_DIR' , v_file_name); On Dec 28, 2007 11:40 AM, Márcio Ricardo [EMAIL PROTECTED] wrote: Untitled DocumentBoas. Estou fazendo um teste para inserir um campo clob em uma tabela, e estou recebendo erro: ERRO na linha 1: ORA-22285: diret¾rio ou arquivo inexistente para operaþÒo FILEOPEN ORA-06512: em SYS.DBMS_LOB, line 523 ORA-06512: em NFE.CARREGA_LOB, line 16 ORA-06512: em line 1 Criei o diretório da seguinte maneira: CREATE OR REPLACE DIRECTORY my_dir as 'C:\testelob'; concedi permissão de leitura e gravação como PUBLIC, só por garantia porque o usuário que está executando a procedureé o mesmo que criou o diretório. GRANT READ, WRITE ON DIRECTORY my_dir TO PUBLIC; Abaixo está a procedure. CREATE OR REPLACE procedure carrega_lob ( v_file_name IN VARCHAR2 ) IS BEGIN DECLARE v_bfile bfile := BFILENAME( 'my_dir' , v_file_name); v_lob clob; BEGIN INSERT INTO teste_lob (id, arq ) VALUES ( 1, empty_clob() ); dbms_lob.createtemporary(v_lob,TRUE); DBMS_LOB.FILEOPEN( v_bfile); DBMS_LOB.LOADFROMFILE ( v_lob, v_bfile, DBMS_LOB.GETLENGTH(v_bfile)); DBMS_LOB.FILECLOSE(v_bfile); COMMIT; END; END; / Alguém sabe o que pode ser. T+. Márcio Ricardo Alves da Silva Programador Pleno * [EMAIL PROTECTED] Config Informática Ltda Av. Eng. Luis Carlos Berrini, 801 - 7º andar 04571-010 - Brooklin Novo - São Paulo - SP ( Fone (11) 5501-8300 ( Fax (11) 5501-8302 8 www.config.com.br [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Oracle 10g conflito de Interne
Qual o erro do alert cuja mensagem indica que o banco caiu. Outra coisa, ao invés de HOST = localhost, use HOST = x, onde x=seu verdadeiro DNS On Dec 23, 2007 1:14 AM, cabal_o [EMAIL PROTECTED] wrote: Olá amigos ! Estou tendo um problema na empresa, migrei do 9i para o 10g. Quando instalei o BD eu estava conectado na web, daí eu não conseguia mais conectar no banco sem estar conectado na web. Desinstalei e instalei novamente sem estar conectado na web e aí funcionou perfeitamente, mas quando conecto na web o banco cai. jah configurei o TNS e o listener, ms ñ adiante, o banco sempre cai qdo conecto na web. meu tns: orcl = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = orcl) ) ) meu listener: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) ) -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Standby Database - Fail Over oracle
Veja uma receitinha de bolo em Portugues http://mportes.blogspot.com/2007/06/montar-dataguard-no-10g-com-broker.html http://mportes.blogspot.com/2007/06/broker-dataguard-e-real-time-apply-10g.html O primeiro link, monta o Dataguard e o segundo faz o Real Time Apply. On Dec 20, 2007 5:04 PM, Osvaldo Antonio Santos [EMAIL PROTECTED] wrote: Boa tarde, alguem poderia me informar porque está retornando este erro, estou preparando um standby da seguinte forma 172.16.81.157 Primary 172.16.81.130 standby oracle 10g sendo que eu criei uma base de dados no primary com o nome PRD e no standby tambem com o nome PRD meu initPRD.ini do primary ficou assim : prd.__db_cache_size=75497472 prd.__java_pool_size=4194304 prd.__large_pool_size=4194304 prd.__shared_pool_size=75497472 prd.__streams_pool_size=0 *.audit_file_dest='C:\oracle\PRD/admin/PRD/adump' *.background_dump_dest='C:\oracle\PRD/admin/PRD/bdump' *.compatible='10.2.0.1.0' *.control_files='C:\oracle\PRD/oradata/PRD/\control01.ctl','C:\oracle\PRD/oradata/PRD/\control02.ctl','C:\oracle\PRD/oradata/PRD/\control03.ctl' *.core_dump_dest='C:\oracle\PRD/admin/PRD/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='PRD' *.db_recovery_file_dest='C:\oracle\PRD/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=PRDXDB)' *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=16777216 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=167772160 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='C:\oracle\PRD/admin/PRD/udump' *.db_unique_name= 'PRD' *.log_archive_config='DG_CONFIG=(PRD,STANDBY)' *.log_archive_dest_state_1 = enable *.log_archive_dest_state_2 = enable *.log_archive_max_processes = 30 *.fal_client = 'PRD' *.fal_server = 'STANDBY' *.standby_archive_dest='\\172.16.81.157\PRD\102\database\archive' *.standby_file_management='AUTO' *.log_archive_dest_1='LOCATION=C:\oracle\PRD\102\database\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRD' *.log_archive_dest_2='SERVICE=STANDBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRD' o Tnsnames.ora ficou assim : # tnsnames.ora Network Configuration File: C:\oracle\PRD\102\network\admin\tnsnames.ora # Generated by Oracle configuration tools. PRD.WORLD = (DESCRIPTION = (ADDRESS = (COMMUNITY = SAP.WORLD)(PROTOCOL = TCP)(HOST = ASP2332HOWXP)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRD) ) ) STANDBY.WORLD = (DESCRIPTION = (ADDRESS = (COMMUNITY = SAP.WORLD)(PROTOCOL = TCP)(HOST = ASP0761MTWXP)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRD) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) e o listener ficou assim : # listener.ora Network Configuration File: C:\oracle\PRD\102\network\admin\listener.ora # Generated by Oracle configuration tools. # Filename..: listener.ora # Created...: created by SAP AG, R/3 Rel. = 4.0A # Name..: # Date..: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SDU = 32768) (SID_NAME = PRD) (ORACLE_HOME = C:\oracle\PRD\102) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = PRD.WORLD)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = PRD)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ASP2332HOWXP)(PORT = 1521)) ) ) STANDBY = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = STANDBY.WORLD)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = PRD)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ASP0761MTWXP)(PORT = 1527)) ) ) fiz as allterações necessarias no PRD do standby em termos init e control files gerado a partir do primary como manual ele monta o standby legal porem na hora em que eu tento forçar a criação de um archive para ver se replica com o comando *ALTER SYSTEM SWITCH LOGFILE* Eu verifico se foi replicado porem não foi e no alert.log me aparece essa mensagem : ARC0: Archivelog destination LOG_ARCHIVE_DEST_2 disabled: Data Guard configuration identifier mismatch -- Caso alguem saiba o que esta errado ou alguma manobra para fazer o standby com bases de mesmos nome por favor me ajudem.. Obrigado Att, Osvaldo Antonio dos Santos [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] erro em trigger
SQL CREATE OR REPLACE TRIGGER TRG_atividade_idAtividade 2 BEFORE INSERT on atividade FOR EACH ROW 3 BEGIN 4 select atividade_idAtividade.nextval into :new.idAtividade 5from dual; 6 END; 7 / Trigger created. SQL show error No errors. On Dec 19, 2007 11:29 AM, Welington Lourenço [EMAIL PROTECTED] wrote: Olá pessoal, excutei o script abaixo e após a execução do mesmo o oracle me retorna warning: execução concluída com advertência. Sou iniciante em oracle e pesquisando na net fiz algumas comparações de trigger, sequences, etc..., mas não encontrei nada de errado. Alguém pode ajudar? CREATE TABLE atividade ( idAtividade integer NOT NULL PRIMARY KEY, nivel integer default 0 NOT NULL , descricao NVARCHAR2(150) default '' NOT NULL, codigo NVARCHAR2(30) default '' NOT NULL, indice number(5,2) default 0.00 NOT NULL, ccusto NVARCHAR2(4) default '' NOT NULL, direcionador NVARCHAR2(20) default '' NOT NULL, frequencia number(5,2) default 0.00 NOT NULL, qtdproduzida number(8,2) default 0.00 NOT NULL, tipodirecionador integer default 0 NOT NULL ); -- -- SEQUENCIA DA TABELA ATIVIDADE -- CREATE SEQUENCE atividade_idAtividade INCREMENT BY 1 START WITH 0 MINVALUE 0 MAXVALUE 9; -- -- TRIGGER PARA INSERIR SEQUENCIA NA TABELA ATIVIDADE -- CREATE OR REPLACE TRIGGER TRG_atividade_idAtividade BEFORE INSERT ON atividade FOR EACH ROW BEGIN TRANSACTION :new.idAtividade := atividade_idAtividade.nextval ; END; Obrigado a todos! Welington Lourenço [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] CLOB ; BLOB
Sabemos que é o bendito CLOB Baseado em que, vocês já sabem que é o CLOB o causador do problema de performance? Uma simples tabela, onde a seqüência numérica seja dada por max(num)+1, pode parar o banco, em caso de uma grande quantidade de inserções, devido à serialização, ex. http://mportes.blogspot.com/search?q=serializa%C3%A7%C3%A3o Retomando seu problema, mostre à lista qual foi o método usado para concluir que o CLOB é o gargalo, dessa forma a lista pode sugerir alguns artifícios para melhor o desempenho das inserções. On Dec 18, 2007 4:57 PM, Marcos Braga [EMAIL PROTECTED] wrote: Oi a todos da lista, Criamos uma tabela com uma coluna CLOB para guardar arquivos PDF. Funciona corretamente, mas . (imprevisto que não havíamos pensado), quando há uma quantidade grande de pessoas inserindo na mesma tabela o banco emperra, quase pára. Sabemos que é o bendito CLOB, mas não sabemos o que fazer para otimizar, alguém tem alguma idéia ou um caminho das pedras para que eu conheça mais a implementação desse tipo de campo? []'s Braga -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: RES: RES: [oracle_br] SQL Dinamico
Por que voce está usando esse tipo de programação? Qual a necessidade real? O que voce procura é: vsSql VARCHAR2(2000) := to_char( vnA+vnB+vnC ) ; On Dec 14, 2007 1:50 PM, Informática - Usina Moreno [EMAIL PROTECTED] wrote: Sim - Mensagem original -De: HENRIQUIS Milton [EMAIL PROTECTED] MILTON.HENRIQUIS%40cnh.comAté: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brCc: Data: Sexta-feira, Dezembro 14 2007 12:55 PMAssunto: RES: RES: [oracle_br] SQL DinamicoEnão, achoq ue basta vc tirar os dois pontos antes de cada variável! Já tentou isso?? Milton Bastos Henriquis Junior Oracle Database Administrator -Mensagem original- De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Informática - Usina Moreno Enviada em: sexta-feira, 14 de dezembro de 2007 12:37 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: RES: [oracle_br] SQL Dinamico Milton Não é isso que está fazendo, eu estou somando o valor das 3 variaveis e retornando no vnValor Marcos - Mensagem original -De: Milton Bastos Henriquis Jr. [EMAIL PROTECTED] miltonbastos%40gmail.com mailto: miltonbastos%40gmail.com Até: oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br Cc: Data: Sexta-feira, Dezembro 14 2007 12:23 PMAssunto: Re: RES: [oracle_br] SQL DinamicoVc tem 3 variáveis: vnA, vnB, e vnC na query dinâmica. Ao retornar pro INTO, tem que retornar pra 3 variáveis, e vc retornou para apenas uma: vnValor. Entendeu?? On Dec 14, 2007 11:57 AM, Informática - Usina Moreno [EMAIL PROTECTED] informatica%40usinamoreno.com.br mailto: informatica%40usinamoreno.com.br wrote: Não funciona, veja o que fiz: create or replace function FC_TESTE_SQL return NUMBER is vnValor number; vnA NUMBER := 1; vnB NUMBER := 2; vnC NUMBER := 3; vsSql VARCHAR2(2000) := ':vnA+:vnB+:vnC'; begin vsSql := 'SELECT ' || vsSQL || ' FROM DUAL'; EXECUTE IMMEDIATE vsSql INTO vnValor; return(vnValor); end FC_TESTE_SQL; Dá o ora-01008:not all variable bound Marcos - Mensagem original -De: Bruno Lorenzini [EMAIL PROTECTED] listas.distribuicao%40gmail.com mailto: listas.distribuicao%40gmail.com listas.distribuicao%40gmail.comAté: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br mailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.brCc: Data: Sexta-feira, Dezembro 14 2007 11:17 AMAssunto: RES: [oracle_br] SQL DinamicovsSql VARCHAR2(2000) := ':a+:b+:c'; vsSql := 'SELECT ' || vsSQL || ' FROM DUAL'; EXECUTE IMMEDIATE vsSql INTO vnResultado; Tenta isso... acho que vai funcionar xD... o que sei é que esse FROM DUAL na clausula EXECUTE IMMEDIATE não existe. Abs, Bruno Lorenzini _ De: 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] Em nome de Informática - Usina Moreno Enviada em: sexta-feira, 14 de dezembro de 2007 11:06 Para: [EMAIL PROTECTED] Com. Br; Oracle_Br Assunto: [oracle_br] SQL Dinamico Srs bom dia Eu preciso usar o sql dynamic, mas não estou conseguindo, segue um exemplo: vsSql VARCHAR2(2000) := ':a+:b+:c'; EXECUTE IMMEDIATE vsSql FROM DUAL INTO vnResultado eu posso ter qualquer expressão matemática dentro da variavel vsSql Seu substituo as variaveis pelo valores e mando executar funciona, mas eu quero executar sem subtituição. ALguem poderia dar um exemplo usando o que passei acima? Marcos [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem
Re: [oracle_br] Dúvidas em SQL
Considero que variação de salário é quando o salário muda e então, segundo seu exemplo, a data de referência é a primeira da variação (mudança). Então uma query poderia ser: ops$marcio:LX10G col sal format 999g999g999d99 ops$marcio:LX10G select * from t; DREF SAL - --- 200607 42.168,00 200608 42.168,00 200609 42.168,00 200610 43.057,75 200611 42.168,00 200612 43.057,75 200701 43.057,75 200702 43.057,75 200703 43.057,75 200704 40.469,02 200705 33.350,00 200706 33.350,00 200707 33.350,00 13 rows selected. ops$marcio:LX10G select dref, sal 2from ( select dref, sal, lag(sal) over (order by dref) lsal from t ) t 3 where lsal is null or lsal sal 4 / DREF SAL - --- 200607 42.168,00 200610 43.057,75 200611 42.168,00 200612 43.057,75 200704 40.469,02 200705 33.350,00 6 rows selected. On Dec 4, 2007 1:19 PM, thiagocx26 [EMAIL PROTECTED] wrote: Pessoal, Sou novo no grupo e estou com uma dúvida e não consigo de forma alguma resposta. Alguem pode me ajudar? É o seguinte: Tenho uma relação de salários e suas respectivas datas de referência; ex: 200607 - 42168,00 200608 - 42168,00 200609 - 42168,00 200610 - 43057,75 200611 - 42168,00 200612 - 43057,75 200701 - 43057,75 200702 - 43057,75 200703 - 43057,75 200704 - 40469,02 200705 - 33350,00 200706 - 33350,00 200707 - 33350,00 Gostaria em uma query simples sem utilização de ponteiros que a consulta me retorna-se as variações de salários por referência ex: 200607 - 42168,00 200610 - 43057,75 200611 - 42168,00 200612 - 43057,75 200704 - 40469,02 200705 - 33350,00 Quando eu rodo meu SQL ele me retorna o menor valor por referencia, então ele me retorna somente 4 resultados... Alguem poderia me ajudar com isso? O sql que eu estou utilizando é o seguinte SELECT FF.NUM_INSCRICAO , FF.ANO_REF || FF.MES_REF , FF.SRC FROM CC_FICHA_FINANCEIRA FF WHERE FF.CD_FUNDACAO = '01' AND FF.NUM_INSCRICAO = '000269292' AND FF.CD_PLANO = '0035' AND FF.ANO_REF || FF.MES_REF = FF.ANO_COMP || FF.MES_COMP AND FF.ANO_REF || FF.MES_REF = '200607' AND FF.ANO_REF || FF.MES_REF = '200707' AND FF.ANO_REF || FF.MES_REF in ( SELECT min( F1.ANO_REF || F1.MES_REF ) FROM CC_FICHA_FINANCEIRA F1 WHERE F1.CD_FUNDACAO = FF.CD_FUNDACAO AND F1.NUM_INSCRICAO = FF.NUM_INSCRICAO AND F1.CD_PLANO = FF.CD_PLANO AND F1.ANO_REF || F1.MES_REF = '200607' AND F1.ANO_REF || F1.MES_REF = '200707' AND F1.SRC = FF.SRC ) AND FF.CD_TIPO_CONTRIBUICAO = '01' AND FF.CD_OPERACAO = 'C' -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ultimo registro de um cursor
Tathyanna, Um cursor nada mais é que uma instrução sql. Para saber a última linha, veja a ordem que corresponde o cursor inverta e inclua o rownum=1. E para saber quantas linhas: select count(*) from query do cursor On 10/30/07, Tathyanna Pelegrinni [EMAIL PROTECTED] wrote: Gente, tem como eu descobrir qual o ultimo registro de um cursor e/ou total de linhas destes, sem usar o open - fetch - close e sim usando o for-loop-end loop ?? Tem!? Muito obrigada! [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] duvida em indice
Desculpe contrariar sua resposta, mas depende, se o otimizador achar vantagem usar o índice, mesmo que voce mencione somente um dos campos ele usa o índice. Ex. ops$marcio:LX10G create table t ( x int, y int, z int); Table created. ops$marcio:LX10G ops$marcio:LX10G insert into t select mod(rownum,1000), mod(rownum,100), rownum from all_objects; 52864 rows created. ops$marcio:LX10G create index t_i on t(x,y); Index created. ops$marcio:LX10G exec dbms_stats.gather_table_stats( user, 'T', cascade = true ) PL/SQL procedure successfully completed. ops$marcio:LX10G set autotrace on ops$marcio:LX10G select * from t where x = 1; X Y Z - - - 1 1 1001 1 1 2001 1 1 1 1 1 3001 1 1 4001 1 1 5001 1 1 7001 1 1 9001 1 1 8001 1 1 6001 1 1 10001 1 1 11001 1 1 12001 1 1 15001 1 1 14001 1 1 13001 1 1 52001 1 1 19001 1 1 16001 1 1 17001 1 1 18001 1 1 20001 1 1 21001 1 1 22001 1 1 23001 1 1 24001 1 1 25001 1 1 27001 1 1 28001 1 1 26001 1 1 29001 1 1 30001 1 1 31001 1 1 33001 1 1 34001 1 1 32001 1 1 35001 1 1 36001 1 1 37001 1 1 38001 1 1 40001 1 1 41001 1 1 39001 1 1 42001 1 1 43001 1 1 44001 1 1 46001 1 1 47001 1 1 45001 1 1 51001 1 1 48001 1 1 49001 1 1 50001 53 rows selected. Execution Plan -- Plan hash value: 1658221841 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | | 0 | SELECT STATEMENT| |53 | 583 |55 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| T|53 | 583 |55 (0)| 00:00:01 | |* 2 | INDEX RANGE SCAN | T_I |53 | | 2 (0)| 00:00:01 | Predicate Information (identified by operation id): --- 2 - access(X=1) Statistics -- 1 recursive calls 0 db block gets 56 consistent gets 0 physical reads 0 redo size 1054 bytes sent via SQL*Net to client 400 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 53 rows processed On 10/30/07, joao batista [EMAIL PROTECTED] wrote: Somente quando vc faz referência as 02 chaves que fazem parte de indice. Att, João Batista fabiopdb [EMAIL PROTECTED] fabiopdb%40yahoo.com.br escreveu: Quando tenho um indice composto ex (cod_cli,cpf_cli) e faço uma busca usando apenas uma chave , ele usa o indice ou ele so usa quando chamo as duas chaves ? Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram
Re: [oracle_br] Re: dúvida com SQL
Vixi! Quanto código!!! Vale dar uma olhada em um post que eu coloquei uma vez http://mportes.blogspot.com/2006/01/escrevendo-cdigo-demais.html Sobre seu problema: Retornava e retorna 1o. de setembro, porque estamos em setembro! quando voce faz um to_date desta forma, é como dar um trunc na data com o inicio do mes, veja: ops$marcio:LX10G exec :n := 11405 PL/SQL procedure successfully completed. N - 11405 ops$marcio:LX10G select rpad('0',6,:n) from dual; RPAD(' -- 011405 1 row selected. ops$marcio:LX10G select to_date(rpad('0',6,:n),'hh24miss') from dual; TO_DATE(RPAD('0',6, --- 01/09/2007 01:14:05 1 row selected. Quando eu mudo a data do meu server, também muda a query. ops$marcio:LX10G !sudo date '01312007' Wed Jan 31 20:07:00 BRST 2007 ops$marcio:LX10G select to_date(rpad('0',6,:n),'hh24miss') from dual; TO_DATE(RPAD('0',6, --- 01/01/2007 01:14:05 1 row selected. ops$marcio:LX10G select sysdate from dual; SYSDATE --- 31/01/2007 20:08:25 1 row selected. Mas qual é o problema com a Data?? Penso que nenhum, pois o que voce está interessado é na parte numérica da hora/min/seg certo? Então voce pode fazer seu cálculo tranquilamente: Agora se voce quiser trabalhar TAMBÉM com data de hoje, use a aritmética de datas e somar a hora na data de hoje ou em qualquer outra data. Veja: 1) Primeiro, ache a diferença em dias, das horas que voce tem contra o inicio do mes, depois some este valor a 00 horas da data que voce quer ver as horas. ops$marcio:LX10G select to_date(rpad('0',6,:n),'hh24miss') - trunc(sysdate,'mm') from dual; TO_DATE(RPAD('0',6,:N),'HH24MISS')-TRUNC(SYSDATE,'MM') -- ,051446759259 1 row selected. ops$marcio:LX10G select trunc(sysdate) + (to_date(rpad('0',6,:n),'hh24miss') - trunc(sysdate,'mm')) from dual; TRUNC(SYSDATE)+(TO_ --- 27/09/2007 01:14:05 1 row selected. Agora basta voce verificar se isso se aplica a seu código. PS. Roberto Amorim: Respondendo a sua dúvida, Márcio - sou eu! Talvez o Bruno tenha se enganado quando respondeu o seu e-mail. On 9/26/07, rei_do_delphi [EMAIL PROTECTED] wrote: É Márcio, o problema é que assim, pode haver para 1 da manha o seguinte formato : 11405 e o certo deveria ser 011405 para 1 hora, 14 minutos e cinco segundos. Na verdade não sei o porque eles não usam campo datatime. O que teria que fazer então é to_date((to_char(142514,'00'),'hh24miss'), o problema é que quando eu fazia isso, não sei por qual razão ele retornava 1/09/2007. Não me pergunte o porque. Só sei que consegui resolver dessa maneira: select hhmmss_out_acqr,hhmmss_inp_acqr, abs((to_number(substr(to_char(hhmmss_out_acqr,'00'),1,2)*3600)- to_number(substr(to_char(hhmmss_inp_acqr,'00'),1,2)*3600))+ (to_number(substr(to_char(hhmmss_out_acqr,'00'),4,2)*60)- to_number(substr(to_char(hhmmss_inp_acqr,'00'),4,2)*60))+ (to_number(substr(to_char(hhmmss_out_acqr,'00'),6,2))- to_number(substr(to_char(hhmmss_inp_acqr,'00'),6,2))) ) as tempo, --hhmmss_inp_acqr as tempo , data_tx from tabela1 foi o único jeiro que consegui fazer, \ --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu Qual o problema com o to_date(...) não entendi. Eu faria exatamente isso: to_date(campo, 'hh24miss') - to_date()... On 9/25/07, rei_do_delphi [EMAIL PROTECTED] wrote: Boa tarde a todos, tenho uma tabela que tem um campo que armazena a data de alguma coisa, em formato number. Ex: 193104 para 19 horas, 31 minutos e 04 segundos. Precisamos subtrair esse campo de outro campo que também contém hora nesse mesmo forma e também em number. Gostaria de saber se há alguma maneira de fazer isso sem uso de pl/sql, isto é, apenas por funções do oracle, ja sei que não funciona: select to_date(campo,'hh24miss') from tabela pois ele reclama que a hora tem que estar entre 0 e 23. Alguém pode me dar alguma ajuda? Obrigado a todos e abraço. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Sequencia no select
hmmm??? Poderia enviar um create table, inserts e o resultado que voce gostaria. On 9/25/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Tem como fazer um select da seguinte forma? codigo descricao linha 125 tenis 1 125 tenis 2 894 chinelo1 126 sapato 1 126 sapato 2 o campo linha (vai ser tipo uma função) seria uma sequencia do codigo, quando o codigo do produto for diferente do anterior ele volta para 1, se for igual ele soma mais 1. [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] dúvida com SQL
Qual o problema com o to_date(...) não entendi. Eu faria exatamente isso: to_date(campo, 'hh24miss') - to_date()... On 9/25/07, rei_do_delphi [EMAIL PROTECTED] wrote: Boa tarde a todos, tenho uma tabela que tem um campo que armazena a data de alguma coisa, em formato number. Ex: 193104 para 19 horas, 31 minutos e 04 segundos. Precisamos subtrair esse campo de outro campo que também contém hora nesse mesmo forma e também em number. Gostaria de saber se há alguma maneira de fazer isso sem uso de pl/sql, isto é, apenas por funções do oracle, ja sei que não funciona: select to_date(campo,'hh24miss') from tabela pois ele reclama que a hora tem que estar entre 0 e 23. Alguém pode me dar alguma ajuda? Obrigado a todos e abraço. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Oracle Dataguard
Aqui tem um receitinha de bolo. http://mportes.blogspot.com/2007/06/montar-dataguard-no-10g-com-broker.html On 9/21/07, softwaream [EMAIL PROTECTED] wrote: Senhores, COmo instalo o Dataguard, ja uso o Oracle Enterprise 10g ok -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Performance na Consulta
Tem como postar o plano de execução? o idtransacao é varchar2 e voce está comparando com number, isso faz conversão implícita. Então vamos ver o que o Oracle está fazendo! On 9/21/07, camargodba [EMAIL PROTECTED] wrote: Olá pessoal. Preciso de um conselho/orientação para melhorar uma consulta simples. Realizo uma consulta simples para retornar uma única linha em uma table com 26 milhões de registros, só que esta demorando 3 minutos. Exemplo de comando: SELECT IDTRANSACAO FROM TRANSACAO WHERE idtransacao = 0760040004000713471145053517; A table tem a seguinte estrutura IDTRANSACAO VARCHAR2(33)- NOT NULL - PRIMARY KEY IDORIGEM NUMBER(15) - NOT NULL COBRANCA NUMBER(1) - NOT NULL ... Sei que ao definir uma coluna como PRIMARY KEY, automaticamente o Oracle cria um Index para ela. Segue o Index que foi criado automaticamente... CREATE UNIQUE INDEX XPKTRANSACAO ON TRANSACAO (IDTRANSACAO) LOGGING TABLESPACE TESTE PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 256M NEXT 25M MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT ) NOPARALLEL; Executei o comando ALTER INDEX XPKTRANSACAO DEALLOCATE UNUSED; para desalocar espaço não utilizado no indice, com isso consegui ganhar mais 10 segundos na consulta. Neste caso tem como eu conseguir uma melhor performance na consulta??? Esta consulta é uma base para as demais funções do meu banco, porém é a responsavel pela demora do resultado. OS - Windows 2003 Server SGDB - Oracle 9.2 Agradeço pela atenção... Até mais. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Revogar Alter table
Retire a senha do dono do esquema, crie um outro esquema usando views do sistema principal onde os privilégios são controlados por voce. On 8/28/07, Carlos [EMAIL PROTECTED] wrote: Pessoal, Estamos precisando controlar nosso ambiente de desenvolvimento, revogando alguns privilégios dos desenvolvedores. O primeiro que pensamos foi o create table. Ao removermos esse privilégio de sistema, esperávamos que o usuário owner também não conseguisse alterar e muito menos dropar a tabela, o que não se confirma na prática. Qual a melhor forma de controlar essa questão? Não queremos que os desenvolvedores criem tabelas, muito menos as altere ou drop. Algum de vocês, caso já tenha se deparado com esse problema, como conseguiram implementar uma solução eficaz? Muito grato Carlos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Cursos DBA Oracle
Lá na En-sof tem uns tiozinhos bons viu? ;-PP hehe é nois fazendo propaganda! On 7/31/07, Adriano de Oliveira [EMAIL PROTECTED] wrote: é. já me recomendaram a en-sof. o problema de morar no interior de sp é isso.. dificil de achar cursos por aqui []'s - Original Message - From: Bruno Lorenzini To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Tuesday, July 31, 2007 4:21 PM Subject: RES: [oracle_br] Cursos DBA Oracle Eu to fazendo um pela em-sof. Os intrutores são muitos bons, mas é curso oficial... o preço é meio salgado... Sds, _ De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Anderson Ferreira Enviada em: terça-feira, 31 de julho de 2007 16:16 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Cursos DBA Oracle Cara eu to realizando o curso Completo da oracle 10 g no IBTA.é bom e eu tô curtindo cara - Original Message - From: Adriano de Oliveira To: [EMAIL PROTECTED] mailto:oracle_br%40yahoogrupos.com.br os.com.br Sent: Tuesday, July 31, 2007 3:53 PM Subject: [oracle_br] Cursos DBA Oracle Olá Galera.. Quais os cursos, de Oracle DBA, preparação para certificação vcs fizeram e/ou recomendam? []'s Adriano [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: URGENTE: Ajuda dos amigos DBAs!
nessa hora, ele pode configurar a tablespace no tamanho adequado Mas sim, isso é um job de DBA, ponto. === O que vc como desenvolvedora PODE e DEVE fazer é, além de dar a info acima pra ele pra ele poder te dar os dados sobre undo/rollback, é , ** também JUNTO COM O DBA **, verificar a possibilidade de usar um modo especial de operação do banco, chamado DIRECT MODE ou APPEND-MODE, caso esse em que a operação de INSERT gera o *** mínimo do mínimo *** de undo/rollback, pra casos de carga de dados esse modo de operação muitas vezes cai como uma luva, ** MAS ** há exigências e pré-reuisitos pra o usar, é junto com o DBA que vc vai ver se pode. Pra vc saber mais sobre undo/rollback, além do manual Oracle Concepts eu recomendo o livro Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions, de Thomas Kyte , ele não é específico pra DBA, serve pra qquer um que vá trabalhar com o banco e tem explicações muito muito boas sobre o funcionamento do banco Oracle de modo geral. []s Chiappa --- Em oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.br oracle_br% 40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Renata de Oliveira renata.o.pereira@ escreveu Olá pessoal, boa tarde à todos! Preciso da ajuda dos amigos DBA's Ao executar uma rotina de carga (de uma tabela existente para uma tabela nova), o processo, está caindo na exception de erro, e me traz o seguinte erro Oracle: ORA-01555: snapshot too old: rollback segment number 44 with name RS_O53 too small ORA-06512: at line 637 No errors Alguém saberia me informar, ou me dar uma dica de como solucionar esse problema?!!?!? A explicação que tive, foi que o Oracle escolhe automaticamente que segmento de rollback usar, e que não tenho como executar essa carga. Porém estou correndo atrás de informações para entender melhor o que banco está fazendo e o que posso fazer para tentar executar esse processo -- Como não sou DBA, e foi pedido um aumento de tamanho de espaço das tablespaces, gostaria de saber com vcs, se o DBA tem como me dar os tamanhos que essas tablespaces possuem hoje, e se tenho como saber o tamanho da área de rollback?! Afinal, alguém tem informações sobre àrea de rollback do Oracle?!?! Gostaria de entender melhor e ler + a respeito. Sei q são várias perguntas em umamas agradeço à todos q tiverem qq dica!! Obrigada!!! Att, Renata de Oliveira [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Erro na Criacao de Indice
PCTINCREASE??? Que versão do Oracle voce está??? Quando não estiver seguro do que os parâmetros representam, deixe default. CREATE INDEX dbamv.itreg_amb_pro_fat_fk_i ON dbamv.itreg_amb ( cd_pro_fat ) TABLESPACE mv2000_i / On 7/27/07, cegoncalvesvr [EMAIL PROTECTED] wrote: Amigos, Dropei este indice e estou tentando cria-lo novamente, mas a mensagem de erro esta impedindo. Identifiquei que o erro de bloco era nesse indice pela DBA_EXTENTS. CREATE INDEX dbamv.itreg_amb_pro_fat_fk_i ON dbamv.itreg_amb ( cd_pro_fat ) PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE mv2000_i STORAGE ( INITIAL 65536 NEXT PCTINCREASE MINEXTENTS 1 MAXEXTENTS 2147483645 ) / Mensagem do erro abaixo: PCTINCREASE * ORA-02219: valor inválido da opção de armazenamento NEXT Alguem pode me ajudar. Obrigado -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Comando MERGE
lista as opções todas citadas. b. o MAIS IMPORTANTE, depois que vc passou a poder acessar o tal dado, vc IMEDIATAMENTE TEM QUE descobrir a causa, senão isso vai se repetir DE NOVO, e de NOVO, e DE NOVO. Pra isso, é chamar uma Empresa de manutenção de hardware, que vai fazer um check ** PROFUNDO ** no hardware (ie, discos, RAM, controladora, placa-mãe, etc) do teu srevidor, ** levantar ** com o pessoal da Operação o que foi feito recentemente nessa máquina, que softs rodaram/foram instalados recentemente, E abrir chamado com a Oracle e com o teu Suporte de SO, pra ver o caso de bugs. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br , cegoncalvesvr [EMAIL PROTECTED] escreveu Ola meus amigos, Utilizando o sistema, no momento de gerar um relatorio, surgiu o seguinte erro no sistema: ORA:01578 - Bloco de dados Oracle danificado (arquivo numero.13, bloco num.845288). ORA:01110-13 do arquivo de dados: 'E\Oracle\Oradata\cssj\MV2000_I.DBF - (Tablespace) Fui no servidor e abri o arquivo alert, o erro esta abaixo: Corrupt block relative dba: 0x034ce5e8 (file 13, block 845288) Bad check value found during buffer read Data in bad block - type: 6 format: 2 rdba: 0x034ce5e8 last change scn: 0x.057a7f29 seq: 0x2 flg: 0x04 consistency value in tail: 0x7f290602 check value in block header: 0xdea1, computed block checksum: 0x1000 spare1: 0x0, spare2: 0x0, spare3: 0x0 *** Reread of rdba: 0x034ce5e8 (file 13, block 845288) found same corrupted data - O erro é no disco, certo? Tem alguma forma de corrigir este problema? Isolar a area defeituosa? Aguardo. Obrigado a todos. [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] PROBLEMAS NA CRIAÇÀO DE DATABASE
veja o ORACLE_SID da sessão que está rodando a criação, esta variável deve estar apontando para um banco que já existe e está montado. On 7/25/07, amorrimm [EMAIL PROTECTED] wrote: Boa tarde pessoal, Tenho um oracle 9 instalado que possui 3 databases. EStou tentando criar um 4 pelo DBCA mas é exibido a seguinte mensage: erro na criação do processo d:\oracle\ora92\bin\sqlplus -s/nolog e não consigo de jeito algum criar o database. Tento criar de forma manual, pelo comando create database e me é exibido a mensagem de erro: ORA: 01501 create failed / ORA: 01100 Database Already mounted. alguem por favor, tem ideia do que possa estar ocorredo ? -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Wait Lock Session - Problema
Alexandro, concentre sua atenção no desenho da sua aplicação, acredito que os locks venham de lá. On 7/24/07, alexandro_assencao [EMAIL PROTECTED] wrote: Olá Anderson !!! Até identifico em meu banco qual é o tipo de lock que estou tendo. Os tipos são: 3 - 'Row Exclusive (SX)', 6 - 'Exclusive (X)' Identifiquei também que os locks estão ocorrendo sempre em uma tabela em específico, eu chego até matar algumas conexões em execução no banco que nunca acabam. Quando eu elimino estas conexões logo elas liberam as sessões em wait porém depois de meia hora vem o lock novamente e as demais sessões ficam travadas. Você tem idéia do que mais preciso saber para identificar o problema ? Obrigado pela ajuda. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Opatch - o que fazer????
inventory is not setup correctly this utility will # fail. To check accessibility to the inventory you can use the # command # #% opatch lsinventory # # If you have any problems installing this PSE or are not sure # about inventory setup please call Oracle support. # # Patch Deinstallation Instructions: # -- # Use the following command: # #% cd 5661717 #% opatch rollback -id 5661717 # On 7/13/07, ESTUDO [EMAIL PROTECTED] wrote: sim :0( não sei o que fazer. bjs cris - Original Message - From: Marcio Portes To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, July 12, 2007 9:52 PM Subject: Re: [oracle_br] Opatch - o que fazer voce rodou o opatch de dentro do diretorio ? cd /opt/oracle/admin/dba/5661717 $ORACLE_HOME/OPatch/opatch apply On 7/12/07, ESTUDO [EMAIL PROTECTED] estudo2003%40ig.com.br wrote: Já ví que essa é apenas a listagem do ultimo patch aplicado :0) Agora o que acontece é o seguinte: Copiei o patch 5661717 para a seguinte estrutura: /opt/oracle/admin/dba/5661717 Apliquei o seguinte comando ( mesmo sem baixar a base, só para ver se funcionava): $ORACLE_HOME/OPatch/opatch apply e recebi essa mensagem: Oracle Interim Patch Installer version 1.0.0.0.53 Copyright (c) 2005 Oracle Corporation. All Rights Reserved.. We recommend you refer to the OPatch documentation under OPatch/docs for usage reference. We also recommend using the latest OPatch version. For the latest OPatch version and other support related issues, please refer to document 293369.1 which is viewable from metalink.oracle.com Oracle Home = /opt/oracle/product/9.2 Location of Oracle Universal Installer components = /opt/oracle/product/9.2/oui Location of OraInstaller.jar = /opt/oracle/product/9.2/oui/jlib Oracle Universal Installer shared library = /opt/oracle/product/9.2/oui/lib/linux/liboraInstaller.so Location of Oracle Inventory Pointer = /etc/oraInst.loc Location of Oracle Inventory = /opt/oracle/product/9.2/inventory Path to Java = /opt/oracle/product/9.2/jre/1.4.2/bin/java Log file = /opt/oracle/product/9.2/.patch_storage/patch ID/*.log The patch directory area must be a number. ERROR: OPatch failed because of problems in patch area. Obrigada Cris - Original Message - From: ESTUDO To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br Sent: Thursday, July 12, 2007 10:27 AM Subject: Re: [oracle_br] Opatch - o que fazer -Marcio Vixiii Marcio.. olha o que aconteceu: ch/docs for usage reference. We also recommend using the latest OPatch version. For the latest OPatch version and other support related issues, please refer to document 293369.1 which is viewable from metalink.oracle.com Oracle Home = /opt/oracle/product/9.2 Location of Oracle Universal Installer components = /opt/oracle/product/9.2/oui Location of OraInstaller.jar = /opt/oracle/product/9.2/oui/jlib Oracle Universal Installer shared library = /opt/oracle/product/9.2/oui/lib/linu x/liboraInstaller.so Location of Oracle Inventory Pointer = /etc/oraInst.loc Location of Oracle Inventory = /opt/oracle/product/9.2/inventory Path to Java = /opt/oracle/product/9.2/jre/1.4.2/bin/java Log file = /opt/oracle/product/9.2/.patch_storage/patch ID/*.log Creating log file /opt/oracle/product/9.2/.patch_storage/LsInventory__07-12-200 7_10-22-00.log Result: Installed Patch List: = 1) Patch 4560421 applied on Wed Oct 26 11:29:30 BRST 2005 [ Base Bug(s): 3504220 4312525 3301573 3323435 3863021 4017526 4180561 3518624 3382229 4049345 3591119 3329096 3703478 4383771 3663924 4567951 3990826 3835964 3737955 3739819 3289786 3858398 4415230 3150750 3611471 3187502 3253770 4316177 3371861 4405919 3356951 4386775 3390021 3320622 2701372 3119415 4343714 3566420 2747350 3467364 3724548 4185276 3545539 4199435 3653586 4392388 4193299 3890898 4457989 4051811 4078123 3785200 3354470 3317309 4175162 3566511 3569503 3564337 2628067 4493075 3780672 4365348 4367445 3557842 3949307 3963167 3789406 3889519 3485997 4003006 3589588 3200136 3110547 3318204 3455402 2920562 3381218 3583215 4370067 3910149 2455147 4523473 4509137 4126826 3315378 3398205 3944226 3029367 3407944 3443747 3447383 3294293 4057729 2549574 3406977 3749490 3638695 3984786 3414440 3262241 2690205 4167403 3473315 3346154 4085118 3816821 3057951 4392256 2918138 3425298 3691672 3828166 3554954 3867193 2964692 3194997 4560421 4530308 4292151 3275045 3832631 3811906 3808090 4333952 2546446 3808093 4266635 3641963 3717619 3973636 4269869 3010227 4184031 3562032 3635331 3664007 4019454 3827053 3560890 3537086 3455357 3635177 3614289 4387084 3487338 3743946 3177769 3672985 ] será que instalou algo? bjs Cris - Original Message - From: Marcio Portes
Re: [oracle_br] tratamento estouro de campo number
Substitua minha mensagem de trate o erro por sua lógica de tratamente de erro! Se é que ela existe!! ops$marcio:LX10G create or replace procedure p ( p_numero in number ) 2 is 3 l_nr5 number(5,2); 4 numero_grande exception; 5 pragma exception_init( numero_grande, -6502 ); 6 begin 7 l_nr5 := p_numero; 8 dbms_output.put_line('Numero informado:'|| to_char(l_nr5)); 9 exception when numero_grande then 10 dbms_output.put_line('Campo estourou, trate o erro!'); 11 end; 12 / Procedure created. ops$marcio:LX10G ops$marcio:LX10G exec p( 200 ) Numero informado:200 PL/SQL procedure successfully completed. ops$marcio:LX10G ops$marcio:LX10G exec p( 1000 ) Campo estourou, trate o erro! PL/SQL procedure successfully completed. ops$marcio:LX10G On 7/13/07, Rafael Alexandre Schmitt [EMAIL PROTECTED] wrote: Olá, Imagine a seguinte situação: eu tenho um campo number(17,2) na tabela A. Esse campo deve ser inserido no campo number(5,2) da tabela B através de uma trigger de insert/update que fica embaixo da tabela A. Qual a melhor forma de tratar o estouro do campo na tabela B? Não queria fazer substr e não posso aumentar o tamanho do campo na tabela B ou diminuir o tamanho do campo na tabela A. -- Rafael Alexandre Schmitt [EMAIL PROTECTED] rafael%40hbtec.com.br || www.hbtec.com.br Blumenau - Santa Catarina [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Opatch - o que fazer????
voce rodou o opatch de dentro do diretorio ? cd /opt/oracle/admin/dba/5661717 $ORACLE_HOME/OPatch/opatch apply On 7/12/07, ESTUDO [EMAIL PROTECTED] wrote: Já ví que essa é apenas a listagem do ultimo patch aplicado :0) Agora o que acontece é o seguinte: Copiei o patch 5661717 para a seguinte estrutura: /opt/oracle/admin/dba/5661717 Apliquei o seguinte comando ( mesmo sem baixar a base, só para ver se funcionava): $ORACLE_HOME/OPatch/opatch apply e recebi essa mensagem: Oracle Interim Patch Installer version 1.0.0.0.53 Copyright (c) 2005 Oracle Corporation. All Rights Reserved.. We recommend you refer to the OPatch documentation under OPatch/docs for usage reference. We also recommend using the latest OPatch version. For the latest OPatch version and other support related issues, please refer to document 293369.1 which is viewable from metalink.oracle.com Oracle Home = /opt/oracle/product/9.2 Location of Oracle Universal Installer components = /opt/oracle/product/9.2/oui Location of OraInstaller.jar = /opt/oracle/product/9.2/oui/jlib Oracle Universal Installer shared library = /opt/oracle/product/9.2/oui/lib/linux/liboraInstaller.so Location of Oracle Inventory Pointer = /etc/oraInst.loc Location of Oracle Inventory = /opt/oracle/product/9.2/inventory Path to Java = /opt/oracle/product/9.2/jre/1.4.2/bin/java Log file = /opt/oracle/product/9.2/.patch_storage/patch ID/*.log The patch directory area must be a number. ERROR: OPatch failed because of problems in patch area. Obrigada Cris - Original Message - From: ESTUDO To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Thursday, July 12, 2007 10:27 AM Subject: Re: [oracle_br] Opatch - o que fazer -Marcio Vixiii Marcio.. olha o que aconteceu: ch/docs for usage reference. We also recommend using the latest OPatch version. For the latest OPatch version and other support related issues, please refer to document 293369.1 which is viewable from metalink.oracle.com Oracle Home = /opt/oracle/product/9.2 Location of Oracle Universal Installer components = /opt/oracle/product/9.2/oui Location of OraInstaller.jar = /opt/oracle/product/9.2/oui/jlib Oracle Universal Installer shared library = /opt/oracle/product/9.2/oui/lib/linu x/liboraInstaller.so Location of Oracle Inventory Pointer = /etc/oraInst.loc Location of Oracle Inventory = /opt/oracle/product/9.2/inventory Path to Java = /opt/oracle/product/9.2/jre/1.4.2/bin/java Log file = /opt/oracle/product/9.2/.patch_storage/patch ID/*.log Creating log file /opt/oracle/product/9.2/.patch_storage/LsInventory__07-12-200 7_10-22-00.log Result: Installed Patch List: = 1) Patch 4560421 applied on Wed Oct 26 11:29:30 BRST 2005 [ Base Bug(s): 3504220 4312525 3301573 3323435 3863021 4017526 4180561 3518624 3382229 4049345 3591119 3329096 3703478 4383771 3663924 4567951 3990826 3835964 3737955 3739819 3289786 3858398 4415230 3150750 3611471 3187502 3253770 4316177 3371861 4405919 3356951 4386775 3390021 3320622 2701372 3119415 4343714 3566420 2747350 3467364 3724548 4185276 3545539 4199435 3653586 4392388 4193299 3890898 4457989 4051811 4078123 3785200 3354470 3317309 4175162 3566511 3569503 3564337 2628067 4493075 3780672 4365348 4367445 3557842 3949307 3963167 3789406 3889519 3485997 4003006 3589588 3200136 3110547 3318204 3455402 2920562 3381218 3583215 4370067 3910149 2455147 4523473 4509137 4126826 3315378 3398205 3944226 3029367 3407944 3443747 3447383 3294293 4057729 2549574 3406977 3749490 3638695 3984786 3414440 3262241 2690205 4167403 3473315 3346154 4085118 3816821 3057951 4392256 2918138 3425298 3691672 3828166 3554954 3867193 2964692 3194997 4560421 4530308 4292151 3275045 3832631 3811906 3808090 4333952 2546446 3808093 4266635 3641963 3717619 3973636 4269869 3010227 4184031 3562032 3635331 3664007 4019454 3827053 3560890 3537086 3455357 3635177 3614289 4387084 3487338 3743946 3177769 3672985 ] será que instalou algo? bjs Cris - Original Message - From: Marcio Portes To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Wednesday, July 11, 2007 9:31 PM Subject: Re: [oracle_br] Opatch - o que fazer Talvez o opatch não esteja no seu $PATH. Por exemplo: [EMAIL PROTECTED] ~]$ opatch lsinventory -bash: opatch: command not found Como visto acima, o opatch não funcionou, mas abaixo: [EMAIL PROTECTED] ~]$ $ORACLE_HOME/OPatch/opatch lsinventory Invoking OPatch 10.2.0.3.0 Oracle interim Patch Installer version 10.2.0.3.0 Copyright (c) 2005, Oracle Corporation. All rights reserved.. Oracle Home : /oracle/10g Central Inventory : /oracle/oraInventory from : /etc/oraInst.loc OPatch version : 10.2.0.3.0 OUI version : 10.2.0.3.0 OUI location : /oracle/10g/oui Log file location : /oracle/10g/cfgtoollogs/opatch/opatch2007-07-11_21- 30-21PM.log Lsinventory Output file location : /oracle/10g/cfgtoollogs/opatch/lsinv
Re: [oracle_br] Opatch - o que fazer????
: -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED]oracle_br-unsubscribe%40yahoogrupos.com.br oracle_br-unsubscribe%40yahoogrupos.com.br c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -- Oscar Nogueira Neto oscarnogueira[at]gmail[dot]com http://www.oscarnogueira.com - Tentando explicar o Oracle! [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problema com query dentro de procedure - trava a sessao
Talves se voce postar a query/codigo da procedure para grupo palpitar!! On 7/10/07, lcscabral [EMAIL PROTECTED] wrote: Ola a todos Estou com um problema que me quebra a cabeça e nem imagino como começar a resolver! Tenho um select que roda quase instantaneamente quando executado sozinho. Esse mesmo select é usado dentro de uma procedure numa package, num cursor. Não é um select muito complexo, e a maior tabela envolvida não é tão grande (5 milhoes de linhas), as outras tem apenas algumas milhares de linhas. O problema é que, quando a execução da procedure chega nesse cursor, ela simplesmente pára, literalmente por horas (cheguei a esperar mais de 3 horas). Tenho que cancelar a execução da procedure. No Enterprise Manager eu consigo ver o tal select NÃO sendo executado na sessão, e o valor de CPU congela, não se mexe. Se eu comento a parte da procedure que usa o cursor, ela executa em 5 minutos. Parece que a sessão está esperando por algo, como um lock, mas não há locks em aguardo na sessão, nem imagino o que possa ser. Porém, quando essa mesma procedure roda, via job, as 7 da manhã, ela roda em 1h30 (incluindo o select com problema). Sei que isso é muito pouca informação, mas há alguma coisa que devo checar em primeiro lugar? Abaixo segue o Explain Plan (GAME_STATS é a tabela maior). Oracle EE 9.2.0.8.0 Obrigado Luis SELECT STATEMENT, GOAL = ALL_ROWS Cost=465 Cardinality=1 Bytes=90 SORT AGGREGATE Cardinality=1 Bytes=18 FILTER TABLE ACCESS FULL Object Object name=BONUS_STATS Cost=5 Cardinality=1 Bytes=18 SORT GROUP BY Cost=465 Cardinality=1 Bytes=90 TABLE ACCESS BY INDEX ROWID Object Object name=GAME_STATS Cost=445 Cardinality=1 Bytes=29 NESTED LOOPS Cost=453 Cardinality=1 Bytes=90 HASH JOIN Cost=8 Cardinality=1 Bytes=61 TABLE ACCESS FULL Object Object name=CAMPAIGN Cost=2 Cardinality=31 Bytes=868 TABLE ACCESS FULL Object Object name=STATISTICS Cost=5 Cardinality=120 Bytes=3960 INDEX RANGE SCAN Object Object name=IDX_GAME_UNIQUE Cost=305 Cardinality=2065 -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] array PLSql
Um exemplo! ops$marcio:LX10G declare 2 type array is table of varchar2(2000); 3 t_dimensao array := array('DIARIO', 'SEMANAL', 'QUINZENAL', 'MENSAL', 'TRIMESTRAL'); 4 begin 5 for i in 1 .. t_dimensao.count 6 loop 7 dbms_output.put_line ( i ||'-'|| t_dimensao(i) ); 8 end loop; 9 end; 10 / 1-DIARIO 2-SEMANAL 3-QUINZENAL 4-MENSAL 5-TRIMESTRAL PL/SQL procedure successfully completed. Mas obviamente há outros métodos... On 7/10/07, Informática - Usina Moreno [EMAIL PROTECTED] wrote: Srs bom dia Alguem já usou array em plsql? se sim, dá pra mandar o exemplo. desde já agradeço Marcos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Valor Bind Variabel
Boa! E para setar o dbms_support ops$marcio:LX10G connect / as sysdba Connected. sys:LX10G desc sys.dbms_support ERROR: ORA-04043: object sys.dbms_support does not exist sys:LX10G @?/rdbms/admin/dbmssupp.sql Package created. Package body created. sys:LX10G desc dbms_support FUNCTION MYSID RETURNS NUMBER FUNCTION PACKAGE_VERSION RETURNS VARCHAR2 PROCEDURE START_TRACE Argument Name TypeIn/Out Default? -- --- -- WAITS BOOLEAN IN DEFAULT BINDS BOOLEAN IN DEFAULT PROCEDURE START_TRACE_IN_SESSION Argument Name TypeIn/Out Default? -- --- -- SIDNUMBER IN SERIAL NUMBER IN WAITS BOOLEAN IN DEFAULT BINDS BOOLEAN IN DEFAULT PROCEDURE STOP_TRACE PROCEDURE STOP_TRACE_IN_SESSION Argument Name TypeIn/Out Default? -- --- -- SIDNUMBER IN SERIAL NUMBER IN sys:LX10G On 7/4/07, Oscar Nogueira Neto [EMAIL PROTECTED] wrote: Boas, uma outra possibilidade é, se você estiver usando o pacote DBMS_SUPPORT para fazer o trace, passe o quarto parâmetro da procedure START_TRACE_IN_SESSION como TRUE. SQL exec dbms_support.start_trace_in_session(sid, serial#, true, true); Depois disso, como disse o Márcio, analise o trace cru, sem passá-lo pelo tkprof. Até! Em 03/07/07, Marcio Portes [EMAIL PROTECTED]portes.marcio%40gmail.com escreveu: Faça um trace com o evento 10046 e veja no arquivo raw os binds. Não execute o tkprof, é preciso ver o arquivo raw. ops$marcio:LX10G create table t ( x int ); Table created. ops$marcio:LX10G ops$marcio:LX10G alter session set events '10046 trace name context forever, level 12'; Session altered. ops$marcio:LX10G begin 2 for i in 1 .. 10 3 loop 4 insert into t values ( i ); 5 end loop; 6 end; 7 / PL/SQL procedure successfully completed. ops$marcio:LX10G exit Identifique o número do parse do seu cursor. PARSING IN CURSOR #8 len=28 dep=1 uid=55 oct=2 lid=55 tim=1155776832951654 hv=1180080443 ad='402406d8' INSERT INTO T VALUES ( :B1 ) END OF STMT PARSE #8:c=0,e=260,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1155776832951644 e veja os binds mais abaixo ... BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=1 EXEC #8:c=5999,e=5928,p=0,cr=3,cu=22,mis=1,r=1,dep=1,og=4,tim=1155776832957679 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=2 EXEC #8:c=0,e=146,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832957922 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=3 EXEC #8:c=0,e=117,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832958090 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=4 EXEC #8:c=999,e=130,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832958269 A linha com values representa o bind#0, ou seja, o primeiro bind, no meu caso o único. Outro exemplo que deixa mais claro é: ops$marcio:LX10G drop table t purge; Table dropped. ops$marcio:LX10G ops$marcio:LX10G create table t ( x char(1) ); Table created. ops$marcio:LX10G ops$marcio:LX10G alter session set events '10046 trace name context forever, level 12'; Session altered. ops$marcio:LX10G begin 2 for i in ( select chr(ascii('A')+rownum-1) c 3 from dual connect by level = 26 ) 4 loop 5 insert into t values ( i.c ); 6 end loop; 7 end; 8 / PL/SQL procedure successfully completed. less /oracle/admin/lx10g/udump/lx10g_ora_7479.trc ... ... BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717be64 bln=32 avl=01 flg=09 value=A EXEC #2:c=2000,e=2013,p=0,cr=3,cu=22,mis=1,r=1,dep=1,og=4,tim=1155778712032583 BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717be44 bln=32 avl=01 flg=09 value=B EXEC #2:c=0,e=145,p=0,cr=0
Re: [oracle_br] Valor Bind Variabel
Faça um trace com o evento 10046 e veja no arquivo raw os binds. Não execute o tkprof, é preciso ver o arquivo raw. ops$marcio:LX10G create table t ( x int ); Table created. ops$marcio:LX10G ops$marcio:LX10G alter session set events '10046 trace name context forever, level 12'; Session altered. ops$marcio:LX10G begin 2 for i in 1 .. 10 3 loop 4insert into t values ( i ); 5 end loop; 6 end; 7 / PL/SQL procedure successfully completed. ops$marcio:LX10G exit Identifique o número do parse do seu cursor. PARSING IN CURSOR #8 len=28 dep=1 uid=55 oct=2 lid=55 tim=1155776832951654 hv=1180080443 ad='402406d8' INSERT INTO T VALUES ( :B1 ) END OF STMT PARSE #8:c=0,e=260,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=1155776832951644 e veja os binds mais abaixo ... BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=1 EXEC #8:c=5999,e=5928,p=0,cr=3,cu=22,mis=1,r=1,dep=1,og=4,tim=1155776832957679 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=2 EXEC #8:c=0,e=146,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832957922 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=3 EXEC #8:c=0,e=117,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832958090 BINDS #8: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=03 fl2=206001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=b7162640 bln=22 avl=02 flg=05 value=4 EXEC #8:c=999,e=130,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155776832958269 A linha com values representa o bind#0, ou seja, o primeiro bind, no meu caso o único. Outro exemplo que deixa mais claro é: ops$marcio:LX10G drop table t purge; Table dropped. ops$marcio:LX10G ops$marcio:LX10G create table t ( x char(1) ); Table created. ops$marcio:LX10G ops$marcio:LX10G alter session set events '10046 trace name context forever, level 12'; Session altered. ops$marcio:LX10G begin 2 for i in ( select chr(ascii('A')+rownum-1) c 3 from dual connect by level = 26 ) 4 loop 5insert into t values ( i.c ); 6 end loop; 7 end; 8 / PL/SQL procedure successfully completed. less /oracle/admin/lx10g/udump/lx10g_ora_7479.trc ... ... BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717be64 bln=32 avl=01 flg=09 value=A EXEC #2:c=2000,e=2013,p=0,cr=3,cu=22,mis=1,r=1,dep=1,og=4,tim=1155778712032583 BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717be44 bln=32 avl=01 flg=09 value=B EXEC #2:c=0,e=145,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155778712032820 BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717be24 bln=32 avl=01 flg=09 value=C EXEC #2:c=0,e=131,p=0,cr=0,cu=1,mis=0,r=1,dep=1,og=4,tim=1155778712033009 BINDS #2: kkscoacd Bind#0 oacdty=01 mxl=32(01) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=206001 frm=01 csi=31 siz=32 off=0 kxsbbbfp=b717bb74 bln=32 avl=01 flg=09 value=D On 7/3/07, wilsonteixeira2000 [EMAIL PROTECTED] wrote: Boa noite, Estamos executando um trace em um sistema e preciso saber o valor que está sendo passado para uma bind variable no trace ou se tiver alguma view do dicionario de dados onde eu possa obter este valor. obrigado. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Physical reads em Tabela Vazia
HWM - se a tabela realmente está vazia, um truncate funciona como já sugerido. Eu faria um alter table TABELA move; O move também reseta a HWM. On 6/29/07, Felipe Daniel [EMAIL PROTECTED] wrote: Pessoal, Estou com um probleminha e ainda não faço ideia do que seja. Tenho uma tabela vazia e em um simples select count(*) from tabela o banco esta fazendo 43199 physical reads. Alguém tem alguma ideia do que possa ser isto? Oracle 9i 9.2.0.8 Windows Server 2003 Enterprise Edition SP1 Atenciosamente, --- Felipe Daniel O. Aragão GBarbosa Comercial Ltda. Analista de Banco de Dados OCP-Oracle Certified Professional --- __ Novo Yahoo! Cadê? - Experimente uma nova busca. http://yahoo.com.br/oqueeuganhocomisso [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] select all_jobs
all_jobs - voce ve os jobs que voce tem direito! dba_jobs - voce ve todos os jobs user_jobs - voce ve seus jobs. On 6/29/07, Andre Campos [EMAIL PROTECTED] wrote: Boa tarde a todos, Tenho uma rotina que submete um job no banco, e a mesma estava dando problemas, ao tentar resolver o problema ocorrido, me deparei com uma situação estranha, agendei o job no banco e fiz um select na dba_jobs e o job estava lá, até nenhuma novidade, mais quando faço o select na ALL_JOBS não consigo visualizar o job agendado. Oracle 9.2.0.7 Alguém sabe me dizer o que pode estar ocorrendo? Obrigado André Campos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Passo a Passo para usar o directory do oracle
http://mportes.blogspot.com/search?q=Movendo+Arquivos+Com+PL%2FSQL On 6/6/07, Alexandre Rocha Placido [EMAIL PROTECTED] wrote: Alguém tem um exemplo já feito das packages usadas para gerar um arquivo de saída usando os diretórios do Oracle, similar ao uso com o utl_file_dir. O diretório no meu caso já está criado, o que estou querendo é o correspondente do abrir arquivo, gravar, fechar arquivo. Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN [EMAIL PROTECTED] aplacido%40gmail.com Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse. Isaías 40:3-5 [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Group by
Fabiano, as vezes parece intransigência ficar pedindo versão do banco, do sistema operacional, etc... mas não! Na verdade ganha-se tempo quando quem formula a resposta trabalha diretamente na versão da dúvida. É complicado, pelo menos pra mim, a questão tempo! Dúvidas que chegam e não tem o mínimo de condição de reprodução, não dá nem pra olhar. Mas... tá ai sua query em 9i. ops$marcio:LX92 select * from v$version; BANNER Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production PL/SQL Release 9.2.0.8.0 - Production CORE9.2.0.8.0 Production TNS for Linux: Version 9.2.0.8.0 - Production NLSRTL Version 9.2.0.8.0 - Production 5 rows selected. ops$marcio:LX92 select min(estaca), max(estaca), max(volume) 2from ( 3 select estaca, volume, 4 max( 5 case 6 when volume lag_vol or lag_vol is null 7 then rownum 8 else null 9 end 10 ) over (order by estaca) bit 11from ( 12 select estaca, volume, 13 lag(volume) over ( order by estaca ) lag_vol 14from t 15 ) 16 ) 17 group by bit 18 / MIN(ESTACA) MAX(ESTACA) MAX(VOLUME) - - - 1000 100540 1006 101050 1011 101540 1020 102335 4 rows selected. On 6/5/07, Fabiano Arndt [EMAIL PROTECTED] wrote: Bom dia Marcio, na verdade to usando o 9i, esqueci de avisar. Mas vou tentar decifrar a sql que vc me passou e vejo se consigo fazer algo parecido no 9i. valeu aí, abraço. Fabiano. Em 05/06/07, Marcio Portes [EMAIL PROTECTED]portes.marcio%40gmail.com escreveu: Como voce não menciona versão - essa solução ai abaixo vale somente para 10g. ops$marcio:LX10G select * from t; ESTACA VOLUME - - 1000 40 1001 40 1002 40 1003 40 1004 40 1005 40 1006 50 1007 50 1008 50 1009 50 1010 50 1011 40 1012 40 1013 40 1014 40 1015 40 1020 35 1021 35 1022 35 1023 35 20 rows selected. ops$marcio:LX10G ops$marcio:LX10G select min(estaca), max(estaca), max(volume) 2 from ( 3 select estaca, volume, 4 last_value( 5 case 6 when volume lag_vol or lag_vol is null 7 then rownum 8 else null 9 end 10 ignore nulls ) over ( order by estaca ) bit 11 from ( 12 select estaca, volume, 13 lag(volume) over ( order by estaca ) lag_vol 14 from t 15 ) 16 ) 17 group by bit 18 / MIN(ESTACA) MAX(ESTACA) MAX(VOLUME) - - - 1000 1005 40 1006 1010 50 1011 1015 40 1020 1023 35 4 rows selected. On 6/4/07, Fabiano Arndt [EMAIL PROTECTED]fabianoallex%40gmail.com fabianoallex%40gmail.com wrote: olá Chiappa, esse e-mail que vc respondeu foi o e-mail que eu respondi a duvida do Marcio e escrevi errado ai mandei novamente outro e-mail. na verdade esse resultado 1000 a 1015 40 1006 a 1010 50 1020 a 1023 35 é o que retorna quando uso o group by da maneira normal, como vc me sugeriu, o problema é que eu preciso agrupar de uma forma um pouco diferente, preciso agrupar quando todas as estacas estiverem em sequencia. se pular uma estaca já é outro grupo. o resultado que eu preciso seria isso 1000 a 1005 40 * aqui o volume é 40 1006 a 1010 50 1011 a 1015 40 * e aqui o volume tbm é 40 1020 a 1023 35 a pessoa que olhar esses dados deve interpreta-los da seguinte maneira: todas as estacas que estão entre 1000 e 1005 possuem o volume igual a 40 todas as estacas que estão entre 1006 e 1010 possuem o volume igual a 50 todas as estacas que estão entre 1011 e 1015 possuem o volume igual a 40 e assim por diante. por isso, se eu agrupar pelo volume, só vou ter como resultado uma linha onde aparece o volume 40, com o min=1000 e max=1015, porém nem todos os volumes entre 1000 e 1015 são igual a 40. e é isso que tá me quebrando a cabeça. não to sabendo como agrupar isso. se alguém tiver uma idéia agradeço, valeu, abraço. Fabiano. Em 04/06/07, jlchiappa [EMAIL PROTECTED]jlchiappa%40yahoo.com.br jlchiappa%40yahoo.com.brjlchiappa%40yahoo. com.br escreveu: pmfji, mas pelo que vejo aí ficou simplérrimo, do jeito que vc coloca vc simplesmente quer agrupar pela coluna VOLUME e dentro de cada grupo saber o ponto inicial e final, seria SELECT MIN(ESTACA), MAX (ESTACA), VOLUME FROM tabela GROUP BY VOLUME; se não for isso explica melhor... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.broracle_br%40yahoog rupos.com.br, Fabiano Arndt [EMAIL PROTECTED] escreveu Marcio
Re: [oracle_br] Erro Import
Nesse caso voce precisa especificamente subir o dump com o mesmo client que o export foi feito, caso contrário, pode até funcionar, mas será pura casualidade. Há uma nota no metalink informando as compatibilidades dos clients de import, mas a regra é simples. exp (9207) imp (9207), exp com 9208 import com 9208 - não importando a versão da base destino! On 6/4/07, Vinicius Amorim [EMAIL PROTECTED] wrote: Desculpe invadir o topico iniciado pelo colega Phael. Mas eu estou com o mesmo problema e foi sim recentemente aplicado o patchset 7. Existe alguma relacao entre eles? Em 29/05/07, Marcio Portes [EMAIL PROTECTED] escreveu: Voce fez algum upgrade recente? para o patchset 7 por exemplo?? On 5/29/07, Phael [EMAIL PROTECTED] wrote: Boa tarde, Antes de recorrer a Oracle... deixa eu ver se alguém pode me ajudar! [EMAIL PROTECTED] imp system/xx fromuser=usuario1 touser=usuario2 tables=tabela1,tabela2, tabela3 file=/home/admin20070528.dmp Import: Release 9.2.0.8.0 - Production on Tue May 29 15:51:33 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. IMP-00058: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channelUsername: Obs: Oracle9i Enterprise Edition Release 9.2.0.8.0 Production Red Hat AS 3.0 32bits O arquivo DMP tem 21Gb. Format ext3. O export funciona sem problemas... e o import tbm funcionava e agora esta dando esse erro(só o import)!! Alguém sabe o que pode ser? Raphael [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Vinícius Amorim Teixeira 9965 90 18 Email - [EMAIL PROTECTED] MSN - [EMAIL PROTECTED] [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que
Re: [oracle_br] Re: Group by
Como voce não menciona versão - essa solução ai abaixo vale somente para 10g. ops$marcio:LX10G select * from t; ESTACAVOLUME - - 100040 100140 100240 100340 100440 100540 100650 100750 100850 100950 101050 101140 101240 101340 101440 101540 102035 102135 102235 102335 20 rows selected. ops$marcio:LX10G ops$marcio:LX10G select min(estaca), max(estaca), max(volume) 2from ( 3 select estaca, volume, 4 last_value( 5case 6 when volume lag_vol or lag_vol is null 7 then rownum 8 else null 9end 10 ignore nulls ) over ( order by estaca ) bit 11from ( 12 select estaca, volume, 13 lag(volume) over ( order by estaca ) lag_vol 14from t 15 ) 16 ) 17 group by bit 18 / MIN(ESTACA) MAX(ESTACA) MAX(VOLUME) - - - 1000 100540 1006 101050 1011 101540 1020 102335 4 rows selected. On 6/4/07, Fabiano Arndt [EMAIL PROTECTED] wrote: olá Chiappa, esse e-mail que vc respondeu foi o e-mail que eu respondi a duvida do Marcio e escrevi errado ai mandei novamente outro e-mail. na verdade esse resultado 1000 a 1015 40 1006 a 1010 50 1020 a 1023 35 é o que retorna quando uso o group by da maneira normal, como vc me sugeriu, o problema é que eu preciso agrupar de uma forma um pouco diferente, preciso agrupar quando todas as estacas estiverem em sequencia. se pular uma estaca já é outro grupo. o resultado que eu preciso seria isso 1000 a 1005 40 * aqui o volume é 40 1006 a 1010 50 1011 a 1015 40 * e aqui o volume tbm é 40 1020 a 1023 35 a pessoa que olhar esses dados deve interpreta-los da seguinte maneira: todas as estacas que estão entre 1000 e 1005 possuem o volume igual a 40 todas as estacas que estão entre 1006 e 1010 possuem o volume igual a 50 todas as estacas que estão entre 1011 e 1015 possuem o volume igual a 40 e assim por diante. por isso, se eu agrupar pelo volume, só vou ter como resultado uma linha onde aparece o volume 40, com o min=1000 e max=1015, porém nem todos os volumes entre 1000 e 1015 são igual a 40. e é isso que tá me quebrando a cabeça. não to sabendo como agrupar isso. se alguém tiver uma idéia agradeço, valeu, abraço. Fabiano. Em 04/06/07, jlchiappa [EMAIL PROTECTED] jlchiappa%40yahoo.com.br escreveu: pmfji, mas pelo que vejo aí ficou simplérrimo, do jeito que vc coloca vc simplesmente quer agrupar pela coluna VOLUME e dentro de cada grupo saber o ponto inicial e final, seria SELECT MIN(ESTACA), MAX (ESTACA), VOLUME FROM tabela GROUP BY VOLUME; se não for isso explica melhor... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Fabiano Arndt [EMAIL PROTECTED] escreveu Marcio, foi erro meu na hora de escrever, esse valor deve sair junto no resultado, o resultado correto seria 1000 a 1015 40 1006 a 1010 50 1020 a 1023 35 valeu pelo observação. Em 01/06/07, Marcio Portes [EMAIL PROTECTED] escreveu: E o que fazemos com -- 1000 40 Não vi voce mencionar isso na sua explicação... On 6/1/07, Fabiano Arndt [EMAIL PROTECTED]fabianoallex% 40gmail.com wrote: Olá pessoal, tenho uma tabela que tem uma coluna chamada estaca e outra chamada volume, cada estaca tem um volume, as estacas são representadas sequencialmente. normalmente várias estacas consecutivas tem o mesmo volume, como é mostrado abaixo: estaca volume 1000 40 1001 40 1002 40 1003 40 1004 40 1005 40 1006 50 1007 50 1008 50 1009 50 1010 50 1011 40 1012 40 1013 40 1014 40 1015 40 1020 35 1021 35 1022 35 1023 35 preciso fazer uma sql que me retorne os dados agrupados da maneira abaixo: 1001 a 1005 40 1006 a 1010 50 1011 a 1015 40 1020 a 1023 35 os dados acima dizem o seguinte: da estaca 1001 a 1005 todas possuem 40m3 de volume da estaca 1006 a 1010 todas possuem 50m3 de volume da estaca 1001 a 1015 todas possuem 40m3 de volume (aqui que é o problema) da estaca 1020 a 1023 todas possuem 35m3 de volume porém to com dificuldades de fazer uma sql que
Re: [oracle_br] Group by
E o que fazemos com -- 1000 40 Não vi voce mencionar isso na sua explicação... On 6/1/07, Fabiano Arndt [EMAIL PROTECTED] wrote: Olá pessoal, tenho uma tabela que tem uma coluna chamada estaca e outra chamada volume, cada estaca tem um volume, as estacas são representadas sequencialmente. normalmente várias estacas consecutivas tem o mesmo volume, como é mostrado abaixo: estaca volume 1000 40 1001 40 1002 40 1003 40 1004 40 1005 40 1006 50 1007 50 1008 50 1009 50 1010 50 1011 40 1012 40 1013 40 1014 40 1015 40 1020 35 1021 35 1022 35 1023 35 preciso fazer uma sql que me retorne os dados agrupados da maneira abaixo: 1001 a 1005 40 1006 a 1010 50 1011 a 1015 40 1020 a 1023 35 os dados acima dizem o seguinte: da estaca 1001 a 1005 todas possuem 40m3 de volume da estaca 1006 a 1010 todas possuem 50m3 de volume da estaca 1001 a 1015 todas possuem 40m3 de volume (aqui que é o problema) da estaca 1020 a 1023 todas possuem 35m3 de volume porém to com dificuldades de fazer uma sql que me retorne os dados dessa forma. tentei usando o min e o max para agrupar os dados, mas a sql agrupou os dados com volume igual numa mesma linha, mesmo não estando na mesma sequencia ou seja, ficou assim 1001 a 1015 40 1006 a 1010 50 1020 a 1023 35 e o esperado era como mostrei anteriormente. se alguém tiver uma idéia de como fazer isso eu agradeceria. valeu, abraço -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] APEX (HTMLDB)
Não entendi nada de sua pergunta, porém... já fiz muitas coisas em apex com muito sucesso! abraços, On 6/1/07, Consulting 2001 Br [EMAIL PROTECTED] wrote: Bom dia Pessoal, Estou começando a olhar o APEX e achei uma alternativa interessante para o Java e Forms. Gostaria de trocar algumas informações a respeito do produto, o que vcs acham. Na documentação que consegui, o APEX é uma série de tabelas (215 se não estou enganado) e quase 30 linhas de código PL/SQL... Assim sendo, de repente pode-se pegar algumas páginas html já prontas e transformá-las para APEX, gravando nas tabelas corretas... Alguém, por acaso, sabe onde se encontra (e se existe) alguma coisa a respeito disso? Ricardo __ Luggage? GPS? Comic books? Check out fitting gifts for grads at Yahoo! Search http://search.yahoo.com/search?fr=oni_on_mailp=graduation+giftscs=bz -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] TABELA DE NOME COMPOSTO
ops$marcio:LX10G create table nome tabela 02-04_1 ( x int ); Table created. ops$marcio:LX10G insert into nome tabela 02-04_1 select 1 from dual; 1 row created. ops$marcio:LX10G select * from nome tabela 02-04_1; X - 1 1 row selected. ops$marcio:LX10G drop table nome tabela 02-04_1 purge; Table dropped. On 5/30/07, Vinicius Trintin [EMAIL PROTECTED] wrote: tenho uma tabela de nome composto! ... tb achei que nao tinha como fazer, porem eu tenho uma aqui o formatdo dela e o seguinte nome tabela 02-04_1 examente nesse formato... 2 nome e uma 'data' seguida de ifem e underline... quem souber como dou o select numa tabela dessa oracle 9.i pl/sql developer sao as ferramentas usadas __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Erro Import
o export foi feito com que versão do exp? Tive problema com end-of-channel tentando subir um dump feito no 9i com client do 10g. On 5/30/07, Phael [EMAIL PROTECTED] wrote: Marcio, Não fiz update! Vou dar um shutdown/startup no banco. Talvez possa ser algum processo perdido. Vlw. Raphael -Mensagem original- De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcio Portes Enviada em: terça-feira, 29 de maio de 2007 21:04 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Erro Import Voce fez algum upgrade recente? para o patchset 7 por exemplo?? On 5/29/07, Phael [EMAIL PROTECTED] raphael%40usj.com.br wrote: Boa tarde, Antes de recorrer a Oracle... deixa eu ver se alguém pode me ajudar! [EMAIL PROTECTED] imp system/xx fromuser=usuario1 touser=usuario2 tables=tabela1,tabela2, tabela3 file=/home/admin20070528.dmp Import: Release 9.2.0.8.0 - Production on Tue May 29 15:51:33 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. IMP-00058: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channelUsername: Obs: Oracle9i Enterprise Edition Release 9.2.0.8.0 Production Red Hat AS 3.0 32bits O arquivo DMP tem 21Gb. Format ext3. O export funciona sem problemas... e o import tbm funcionava e agora esta dando esse erro(só o import)!! Alguém sabe o que pode ser? Raphael [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Avanço de linhas
Exemplo... mande um exemplo do que necessita. On 5/30/07, Emerson Sanches [EMAIL PROTECTED] wrote: Bom dia pessoal da lista, gostaria de saber se com o resultado de uma select seria possível avançar por exemplo, 4 linhas para cima e depois pegar as próximas 12 linhas. Espero ter sido claro. Obrigado pela ajuda Emerson Sanches Analista Programador [EMAIL PROTECTED] emerson_sanches%40yahoo.com.br [EMAIL PROTECTED] emerson%40suprens.com.br -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problema com Function
Eu tenho!! NUNCA USE EXCETION WHEN OTHERS Voce está mascarando seu erro!!! Tire isso e rode a function para saber qual erro REALMENTE acontece! E, se tiver um tempinho, leia http://mportes.blogspot.com/2005/07/boas-prticas-de-programao-when-others.html On 5/30/07, Wilson Ribeiro [EMAIL PROTECTED] wrote: Senhores da lista, boa tarde. me deparei hoje com um problema, que nunca tinha visto. criei uma function, e nela passo alguns parametros, dentro da function defini um cursor e um select para o mesmo, acontece o seguinte, qdo eu chamo essa function, passando os parametros normais, o select só retorna null, qdo fixo os dados no select, ele encontra e o result set vem com dados. abaixo está o código da function: create or replace function fn_valor_ap(v_num_ap in ap_valores.num_ap%TYPE, v_cod_empresa in ap_valores.cod_empresa%TYPE, v_valor_ap in ap_valores.valor%TYPE) return number is result number; oper varchar2(1); Valor Number; Codigo Number; cursor cur1 is select ap_valores.valor, ap_valores.cod_tip_val from ap_valores where ap_valores.cod_empresa = v_cod_empresa --// aqui se fica '01' ele acha dados and ap_valores.num_ap = v_num_ap --// aqui se fica 15846 ele acha dados and ap_valores.ies_versao_atual = 'S'; begin result := v_valor_ap; open cur1; loop fetch cur1 into valor, codigo; exit when cur1%notFound; select ies_alt_val_pag into oper from tipo_valor where tipo_valor.cod_tip_val = codigo and tipo_valor.cod_empresa = v_cod_empresa; if oper = '+' then result := result + valor; else result := result - valor; end if; end loop; return(result); EXCEPTION WHEN OTHERS THEN RETURN(NULL); end fn_valor_ap; Alguém teria idéia do que se passa?, obrigado por qquer ajuda. - - - - - - - - - - - [ ]'s Wilson Ribeiro [EMAIL PROTECTED] cpd%40gmengenharia.com.br [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ajuda
Um exemplo seria: http://mportes.blogspot.com/2005/12/retornando-ref-cursor.html On 5/30/07, Márcio Vilariño [EMAIL PROTECTED] wrote: Caros, Por favor me ajudem. Estou precisando criar uma procedure ou package que receber um determinado parametro e retorne um select. Qual a melhor opção? Como eu faço? Desculpe pela pergunta é que estou iniciando. Obrigado, Marcio __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Erro Import
Voce fez algum upgrade recente? para o patchset 7 por exemplo?? On 5/29/07, Phael [EMAIL PROTECTED] wrote: Boa tarde, Antes de recorrer a Oracle... deixa eu ver se alguém pode me ajudar! [EMAIL PROTECTED] imp system/xx fromuser=usuario1 touser=usuario2 tables=tabela1,tabela2, tabela3 file=/home/admin20070528.dmp Import: Release 9.2.0.8.0 - Production on Tue May 29 15:51:33 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. IMP-00058: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channelUsername: Obs: Oracle9i Enterprise Edition Release 9.2.0.8.0 Production Red Hat AS 3.0 32bits O arquivo DMP tem 21Gb. Format ext3. O export funciona sem problemas... e o import tbm funcionava e agora esta dando esse erro(só o import)!! Alguém sabe o que pode ser? Raphael [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] dbms_scheduler.
Um exemplo. http://mportes.blogspot.com/search?q=dbms_scheduler On 5/24/07, José Aristides [EMAIL PROTECTED] wrote: Boa Tarde !!! Tenho um script (inicio.sh) para gerar backup que quando executo manualmente sql@inicio.sh no prompt do sqlplus funciona normalmente. Assim, resolvi criar o job (abaixo) porém, ao executar pelo exec dbms_scheduler.run_job('BACKUP') exibe o seguinte erro: *ERRO na linha 1:ORA-27475: SYS.BACKUP deve ser um jobORA-06512: em SYS.DBMS_ISCHED, line 150ORA-06512: em SYS.DBMS_SCHEDULER, line 441ORA-06512: em line 1 BEGIN dbms_scheduler.create_job( job_name = 'BACKUP', job_type = 'EXECUTABLE', job_action = '/home/oracle/backuporacle/gerar/inicio.sh', start_date = sysdate, repeat_interval = 'FREQ=MINUTELY;INTERVAL=2', enabled = TRUE, comments = 'Demo for doing backup');END;/ obrigado, Aristides __ Procure em qualquer página Web com protecção eficaz. Obtenha já o Windows Live Toolbar GRATUITO! http://www.toolbar.live.com [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Estou tendo problema no Import
Fiz um exemplo: está no linux, mas no final é mesma coisa. O usuário que eu exportei full o banco foi ops$marcio (DBA). [EMAIL PROTECTED] ~]$ ls -l backup.dmp -rw-r--r-- 1 marcio dba 131252224 May 20 18:58 backup.dmp [EMAIL PROTECTED] ~]$ plus SQL*Plus: Release 9.2.0.8.0 - Production on Sun May 20 18:58:54 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.8.0 - Production ops$marcio:LX92 create user teste identified by teste; User created. ops$marcio:LX92 grant connect, resource to teste; Grant succeeded. ops$marcio:LX92 revoke unlimited tablespace from teste; Revoke succeeded. ops$marcio:LX92 alter user teste quota unlimited on users; User altered. ops$marcio:LX92 alter user teste default tablespace users; User altered. ops$marcio:LX92 exit Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.8.0 - Production [EMAIL PROTECTED] ~]$ imp / file=backup.dmp fromuser=hr touser=teste tables=regions Import: Release 9.2.0.8.0 - Production on Sun May 20 19:02:42 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.8.0 - Production Export file created by EXPORT:V09.02.00 via conventional path import done in US7ASCII character set and AL16UTF16 NCHAR character set import server uses WE8ISO8859P1 character set (possible charset conversion) . importing HR's objects into TESTE . . importing table REGIONS 4 rows imported Import terminated successfully without warnings. [EMAIL PROTECTED] ~]$ E por ai vai, voce poderia colocar mais tabelas no parametro tables=(tab1, tab2, ...) Agora pelo seu erro, parece que o backup.dmp não existe. Veja: [EMAIL PROTECTED] ~]$ imp / file=nao_existe.dmp fromuser=hr touser=teste tables=regions Import: Release 9.2.0.8.0 - Production on Sun May 20 19:05:48 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.8.0 - Production IMP-2: failed to open nao_existe.dmp for read On 5/20/07, Alessandro Damo [EMAIL PROTECTED] wrote: Boa tarde pessoal. Fiz um exp full do banco com nome de backup.dmp, apos fazer a exportacao eu criei um usuario de nome teste, agora estou tentando fazer um import de algumas tables do usuario HR para ele e nao consigo. Já utilizei o imp help=y para pegar informacao, mas sempre que faço a imp a msn IMP-2: falha ao abrir backup.dmp para leitura. Utilizo DOS, onde estou errando? alguem poderia me ajudar ? Obrigado Alessando. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Exportar campo BLOB
Poderia postar um exemplo completo para que possamos reproduzir? Olhando somente os logs, o que posso dizer é que sua tabela tem UMA linha. On 5/10/07, Sérgio Lopes de Aguiar [EMAIL PROTECTED] wrote: Ola Marcio as tablespaces são iguais sim. No entanto note que o exp diz que Exportou somente uma linha e neste cado existem várias linhas. Consegues ver algum problema, mais alguma dica ? C:\Exp user/[EMAIL PROTECTED] file=arquivo.dmp log=arquivo.log tables=TABELA Export: Release 9.2.0.1.0 - Production on Qui Mai 10 17:09:09 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Conectado a: Oracle9i Release 9.2.0.7.0 - Production JServer Release 9.2.0.7.0 - Production ExportaþÒo executada no conjunto de caracteres de WE8MSWIN1252 e no conjunto de caracteres de AL16UTF16 NCHAR co servidor usa WE8ISO8859P1 conjunto de caracteres (conversÒo de conjunto de ca racteres possÝvel) Sobre exportar tabelas especificadas ... via Caminho Convencional ... . . exportando tabela TABELA 1 linhas exportadas EXP-00091: Exportando estatÝsticas questionßveis. ExportaþÒo encerrada com Ûxito, sem advertÛncias. Sérgio Lopes De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcio Portes Enviada em: domingo, 6 de maio de 2007 00:12 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Exportar campo BLOB Se as tablespaces forem idênticas, ele faz o import normalmente, caso contrário, voce precisa criar a tabela na mão (copiando a DDL do erro que for apresentado no import sem a tablespace) e importar novamente, somente a tabela com o BLOB com a opção ignore=y On 5/4/07, Sérgio Lopes de Aguiar [EMAIL PROTECTED]sergio%40liderancaserv.com.br mailto:sergio% sergio%2540liderancaserv.com.br wrote: Pessoal, alguém pode me dar uma dica de como exportar campos do tipo BLOB ? Eu possuo uma tabela com uma coluna BLOB e essa tabela não extra no EXPORT. Alguma dica ? Versão do Oracle 9.2.0.7. Sérgio Lopes [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Obter a media de dois campos
SQL select trunc(dt) dias, 2 to_char(trunc(sysdate) + mod(dt, trunc(dt)),'hh24:mi') horas 3from ( 4 select sysdate - trunc(sysdate-1) dt 5from dual 6 ) 7 / DIAS HORAS - - 1 10:53 1 row selected. O que fiz acima foi: subtrair uma data de outra (4), ou seja, agora (sysdate) menos ontem (sysdate-1) a meia-noite (trunc()), portanto o resultado seria: SQL select sysdate - trunc(sysdate-1) dt from dual; DT - 1,45509259259 1 row selected. A parte inteira são os dias e o fracionado, a fração do dia. Nesta fração estão compreendidos horas, minutos e segundos, basta voce arranjar da maneira que quiser. Então, peguei a parte inteira trunc(dt) e mostrei como dias. SQL select trunc(dt) 2from ( 3 select sysdate - trunc(sysdate-1) dt from dual 4 ) 5 / TRUNC(DT) - 1 1 row selected. E a parte fracionada - mod(dt, trunc(dt) - resto da divisão do resultado dt pelo inteiro trunc(dt) vai me sobrar exatamente a parte decimal. SQL select mod(dt, trunc(dt)) 2from ( 3 select sysdate - trunc(sysdate-1) dt from dual 4 ); MOD(DT,TRUNC(DT)) - ,460752314815 1 row selected. (Só lembrando que o resultado está mudando porque estou fazendo as queries enquanto respondo). Daí eu somei essa parte decimal a zero hora de qualquer dia, exemplo hoje - trunc(sysdate) + mod(dt, trunc(dt)). SQL select trunc(sysdate) + mod(dt, trunc(dt)) 2from 3 ( select sysdate - trunc(sysdate-1) dt from dual ); TRUNC(SYSDATE)+MOD( --- 11/05/2007 11:06:01 1 row selected. Finalmente, mostrei como hora:minuto - to_char(trunc(sysdate) + mod(dt, trunc(dt)), 'hh24:mi'). Como demonstrado acima. On 5/11/07, Carlos Eduardo Goncalves [EMAIL PROTECTED] wrote: Marcio, Em Horas e Dias. Att *Marcio Portes [EMAIL PROTECTED]* escreveu: Diferença em que unidade? Dias? Horas? Minutos? Segundos??? On 5/10/07, cegoncalvesvr [EMAIL PROTECTED]cegoncalvesvr%40yahoo.com.br wrote: Amigos, Preciso obter o valor entre dois campos do tipo date Ex: to_char(p.hr_ped_lab, 'hh24:mi') - to_char(i.hr_laudo, 'hh24:mi') Preciso saber a diferença entre esses 02 campos. o select acima ta com erro, não roda. Alguem pode me ajudar? Abraços. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Obter a media de dois campos
Diferença em que unidade? Dias? Horas? Minutos? Segundos??? On 5/10/07, cegoncalvesvr [EMAIL PROTECTED] wrote: Amigos, Preciso obter o valor entre dois campos do tipo date Ex: to_char(p.hr_ped_lab, 'hh24:mi') - to_char(i.hr_laudo, 'hh24:mi') Preciso saber a diferença entre esses 02 campos. o select acima ta com erro, não roda. Alguem pode me ajudar? Abraços. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Referenciar Tabela
create or replace package body pkg_nome procedure begin ... select ... into ... from [EMAIL PROTECTED] where... ... end; ... end; / On 5/9/07, Alex Ferreira [EMAIL PROTECTED] wrote: Olá Pessoal, Tenho uma PKG_NOME e uma tabela X que usamos em um DBLINK. Como posso saber referenciar a PKG com a tabela X? Valeu [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] ESPACOS NO FINAL DA LINHA
Poderia fazer um teste? SELECT 'I', RPAD(u.tund_cnpj,18,' '), length(RPAD(u.tund_cnpj,18,' ')) FROM tund_unidade u; On 5/8/07, janiopimentel [EMAIL PROTECTED] wrote: Srs., boa tarde! Estou com uma dificuldade ao gerar uns arquivos txt usando o SQL*PLUS. Meu script gera quase tudo certinho, exceto no final da linha que eu peco para deixar alguns espacos em branco e o mesmo nao deixa. Veja o script que estou usando (no linux): DATA=`date +%Y%m%d%H%M%S` export TNS_ADMIN=/www/funcoes sqlplus -S appuser/[EMAIL PROTECTED] EOF /www/genexis/txt/produto$DATA.txt SET COLSEP ''; -- REGISTRO HEADER SELECT 'H', -- tipo do registro 'CADPROD ', -- nome do arquivo TO_CHAR(SYSDATE,'MMDD') -- data de criacao do arquivo FROM DUAL; -- REGISTRO IDENTIFICADOR SELECT 'I', -- tipo do registro RPAD(u.tund_cnpj,18,' ') -- AQUI ELE NAO PREENCHE O RESTANTE COM OS 4 ESPACOS -- cnpj do parceiro FROM tund_unidade u; QUIT; EOF -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: ESPACOS NO FINAL DA LINHA
O problema do trimspool off é que ele vai até o tamanho da linesize do sqlplus. Mas poderíamos explorar mais o script, vejamos: [EMAIL PROTECTED] scripts]$ cat test.sh sqlplus -s / EOS set feedback off set head off spool .tmp select rpad(username, 30,' ') ||'#' from all_users where rownum = 10; spool off EOS cat .tmp | sed 's/#//' t.txt rm .tmp Um script gerando um spool .tmp com um caracter qualquer # para marcar o final, depois usamos o sed para limpar e manter os espaços. Mas simples, IMHO. [EMAIL PROTECTED] scripts]$ ./test.sh FLOWS_03 # RAFA # SCH_DEMO # SCH_PAY # FLOWS_020200 # APEX_PUBLIC_USER # FLOWS_FILES # UTIL # OPS$MARCIO# SCOTT # [EMAIL PROTECTED] scripts]$ cat t.txt FLOWS_03 RAFA SCH_DEMO SCH_PAY FLOWS_020200 APEX_PUBLIC_USER FLOWS_FILES UTIL OPS$MARCIO SCOTT Como demonstrado, cada linha tem exatamente 30 espaços. On 5/8/07, Luis Fernando Cerri [EMAIL PROTECTED] wrote: Experimente colocar um set trimspool off no início do seu script Se isso não resolver, creio que só via utl_file mesmo. []s Luis Em 08/05/07, janiopimentel [EMAIL PROTECTED]janiopimentel%40yahoo.com.br escreveu: Marcio, boa noite! Veja o resultado: I02307303000187 18 O estranho é que ele coloca os quatro espaços que estão faltando se colocar algo depois do CNPJ. Veja exemplo: ---SCRIPT: SET COLSEP ''; SELECT 'I', RPAD(u.tund_cnpj,18,' ') || '1' FROM tund_unidade u; ---RESULTADO: I02307303000187 1 Sds., Jânio --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br%40yahoog rupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu Poderia fazer um teste? SELECT 'I', RPAD(u.tund_cnpj,18,' '), length(RPAD (u.tund_cnpj,18,' ')) FROM tund_unidade u; On 5/8/07, janiopimentel [EMAIL PROTECTED] wrote: Srs., boa tarde! Estou com uma dificuldade ao gerar uns arquivos txt usando o SQL*PLUS. Meu script gera quase tudo certinho, exceto no final da linha que eu peco para deixar alguns espacos em branco e o mesmo nao deixa. Veja o script que estou usando (no linux): DATA=`date +%Y%m%d%H%M%S` export TNS_ADMIN=/www/funcoes sqlplus -S appuser/[EMAIL PROTECTED] EOF /www/genexis/txt/produto$DATA.txt SET COLSEP ''; -- REGISTRO HEADER SELECT 'H', -- tipo do registro 'CADPROD ', -- nome do arquivo TO_CHAR(SYSDATE,'MMDD') -- data de criacao do arquivo FROM DUAL; -- REGISTRO IDENTIFICADOR SELECT 'I', -- tipo do registro RPAD(u.tund_cnpj,18,' ') -- AQUI ELE NAO PREENCHE O RESTANTE COM OS 4 ESPACOS -- cnpj do parceiro FROM tund_unidade u; QUIT; EOF -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Exportar campo BLOB
Se as tablespaces forem idênticas, ele faz o import normalmente, caso contrário, voce precisa criar a tabela na mão (copiando a DDL do erro que for apresentado no import sem a tablespace) e importar novamente, somente a tabela com o BLOB com a opção ignore=y On 5/4/07, Sérgio Lopes de Aguiar [EMAIL PROTECTED] wrote: Pessoal, alguém pode me dar uma dica de como exportar campos do tipo BLOB ? Eu possuo uma tabela com uma coluna BLOB e essa tabela não extra no EXPORT. Alguma dica ? Versão do Oracle 9.2.0.7. Sérgio Lopes [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger ServerError ?
Exemplo em http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 5/2/07, Welvis Douglas Silva Moreto [EMAIL PROTECTED] wrote: Olá, eu estou fazendo um trigger de SERVERERROR, eu eu gostaria de pegar o Sql que estava sendo executando no momento do erro, alguem sabe como eu posso fazer isso? att, Welvis Douglas Msn : [EMAIL PROTECTED] welvis_douglas%40hotmail.com __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Problema com datafile de off-line para on-line
e qual foi o comando que voce usou para deixá-lo offline? On 4/25/07, Aleksandro [EMAIL PROTECTED] wrote: Precisei de deixar o meu datafile da tablespace no modo offline Ao colocar em on line o oracle me retornou a seguinte mensagem Failed to commit: ORA-01113: file 12 needs media recovery ORA-01110: data file 12: 'D:\ORACLE\TST.DBF' O comando para deixa-la on line foi : ALTER DATABASE DATAFILE 'D:\ORACLE\TST.DBF' ONLINE Dei um shutdown um startup mount Dei o comando Recover database e recebo a mensagem que não existe nada para ser recuperado, mais ao listar os arquivos dos datafiles ele esta como recover. Obs: A versão do meu banco é 10.2.0.1.0 esta em modo de arquivamento. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Problema com datafile de off-line para on-line
Queria ver o comando correto que voce usou! Esse ai abaixo não funciona!! Está errado. Veja no alertlog qual o comando utilizado. Porém, segue um exemplo que acabei de fazer. Database log mode Archive Mode Automatic archival Enabled Archive destination/oracle/10g/dbs/arch Oldest online log sequence 109 Next log sequence to archive 112 Current log sequence 112 sys:LX10G alter database open; Database altered. sys:LX10G sys:LX10G sys:LX10G alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' offline; Database altered. sys:LX10G !tail /oracle/admin/lx10g/bdump/alert_lx10g.log Database Characterset is WE8ISO8859P1 replication_dependency_tracking turned off (no async multimaster replication found) Starting background process QMNC QMNC started with pid=22, OS id=14871 Wed Apr 25 09:08:31 2007 Completed: alter database open Wed Apr 25 09:08:42 2007 alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' offline Wed Apr 25 09:08:42 2007 Completed: alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' offline sys:LX10G alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' online; alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' online * ERROR at line 1: ORA-01113: file 8 needs media recovery ORA-01110: data file 8: '+DATA/lx10g/datafile/trabalho.270.620332457' sys:LX10G recover datafile '+DATA/lx10g/datafile/trabalho.270.620332457'; Media recovery complete. sys:LX10G alter database datafile '+DATA/lx10g/datafile/trabalho.270.620332457' online; Database altered. sys:LX10G col file_name format a50 sys:LX10G select file_name, status from dba_data_files; FILE_NAME STATUS -- - +DATA/lx10g/datafile/users.259.614615307 AVAILABLE +DATA/lx10g/datafile/sysaux.257.614615307 AVAILABLE +DATA/lx10g/datafile/undotbs1.258.614615307AVAILABLE +DATA/lx10g/datafile/system.256.614615305 AVAILABLE +DATA/lx10g/datafile/apex_tbs.267.614616227AVAILABLE +DATA/lx10g/datafile/flow_1.268.614620535 AVAILABLE +DATA/lx10g/datafile/pay_tbs.269.614623409 AVAILABLE +DATA/lx10g/datafile/trabalho.270.620332457AVAILABLE 8 rows selected. On 4/25/07, Aleksandro [EMAIL PROTECTED] wrote: Utilizei o comando ALTER DATABASE 'D:\ORACLE\TST.DBF' OFFLINE; --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu e qual foi o comando que voce usou para deixá-lo offline? On 4/25/07, Aleksandro [EMAIL PROTECTED] wrote: Precisei de deixar o meu datafile da tablespace no modo offline Ao colocar em on line o oracle me retornou a seguinte mensagem Failed to commit: ORA-01113: file 12 needs media recovery ORA-01110: data file 12: 'D:\ORACLE\TST.DBF' O comando para deixa-la on line foi : ALTER DATABASE DATAFILE 'D:\ORACLE\TST.DBF' ONLINE Dei um shutdown um startup mount Dei o comando Recover database e recebo a mensagem que não existe nada para ser recuperado, mais ao listar os arquivos dos datafiles ele esta como recover. Obs: A versão do meu banco é 10.2.0.1.0 esta em modo de arquivamento. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Problema com datafile de off-line para on-line
Não precisava montar/desmontar/reinicializar... Bom, importante é que resolveu! On 4/25/07, Aleksandro [EMAIL PROTECTED] wrote: Cara, consegui resolver o problema. Reiniciei a máquina, coloquei utilizei o comando ALTER DATABASE DATAFILE 'D:\ORACLE\TST.DBF' ONLINE com o banco desmontado e não montado. Após isso, dei um recover database que recuperou o arquivo. Montei o banco e funcionou. Valeu pela ajuda. --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Aleksandro [EMAIL PROTECTED] escreveu Utilizei o comando ALTER DATABASE 'D:\ORACLE\TST.DBF' OFFLINE; --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu e qual foi o comando que voce usou para deixá-lo offline? On 4/25/07, Aleksandro aleksandrosouza@ wrote: Precisei de deixar o meu datafile da tablespace no modo offline Ao colocar em on line o oracle me retornou a seguinte mensagem Failed to commit: ORA-01113: file 12 needs media recovery ORA-01110: data file 12: 'D:\ORACLE\TST.DBF' O comando para deixa-la on line foi : ALTER DATABASE DATAFILE 'D:\ORACLE\TST.DBF' ONLINE Dei um shutdown um startup mount Dei o comando Recover database e recebo a mensagem que não existe nada para ser recuperado, mais ao listar os arquivos dos datafiles ele esta como recover. Obs: A versão do meu banco é 10.2.0.1.0 esta em modo de arquivamento. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Segmento x Datafile
Grosso modo falando... Não é uma resposta para ser desenvolvida em 3 linhas... Porque ele divide a carga de I/O espalhando os blocos através dos datafiles. Imagine se voce tivesse cada datafile em um disco diferente com controladoras diferentes, voce ganharia em leitura, porque as controladoras iriam atenter em paralelo ao request do banco. On 4/23/07, Clayton Rocha [EMAIL PROTECTED] wrote: Boa tarde! Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois datafiles e movo um segmento para essa tablespace. O que determina em qual dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único datafile acontece do Oracle dividir o segmento nos dois? Oracle 10g em Windows. Obrigado! Clayton Rocha DBA Oracle Faitec Tecnologia [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Segmento x Datafile
Se voce já sabe que ele divide e isso é importante para performance (I/O), para mim é isso que importa. (mas isso é opinião pessoal e entendo sua curiosidade). Tentando ajudar: obviamente é um algorítmo interno que nunca tive curiosidade de pesquisar. Porém, voce pode começar um investigação fazendo um load em uma tabela em uma tablespace que possua 2, 3 datafiles e ver a quantidade de dados que vai para cada um. Exemplo executado no 9i e 10g. 9i (9.2.0.8) FILE_NAME MBYTES PCT -- - - /oracle/tmp/df1.dbf 14 51,85 /oracle/tmp/df2.dbf 13 48,15 10g (10.2.0.3) == FILE_NAME MBYTES PCT -- - - /oracle/tmp/df1.dbf 24 51,06 /oracle/tmp/df2.dbf 23 48,94 E o script que usei para o teste. -- set echo on create tablespace tbs_deldf datafile '/oracle/tmp/df1.dbf' size 50m, '/oracle/tmp/df2.dbf' size 50m / col file_name format a30 select file_name from dba_data_files where tablespace_name = 'TBS_DELDF' / create table t tablespace tbs_deldf as select * from all_objects; insert /*+ append */ into t select * from t; commit; insert /*+ append */ into t select * from t; commit; insert /*+ append */ into t select * from t; commit; select count(*) from t; with sum_byt as ( select file_id, sum(bytes) sum_bytes from dba_extents where owner = user and segment_name = 'T' and segment_type = 'TABLE' group by file_id ) select file_name, round( sum_bytes/1024/1024, 2 ) mbytes, round( ratio_to_report(sum_bytes) over () * 100, 2 ) pct from dba_data_files df, sum_byt ex where df.file_id = ex.file_id / drop tablespace tbs_deldf including contents and datafiles; set echo off On 4/23/07, Clayton Rocha [EMAIL PROTECTED] wrote: Entendo perfeitamente que ele divide e que temos ganho de performance caso estejam em discos diferentes... A minha dúvida seria qual seria o critério que determina onde ele irá salvar... Realmente acho que não vai ser possível alguém me explicar isso em poucas linhas, mas, deixo uma outra pergunta: Existe algum material com explicações sobre esse assunto? É possível eu entender essa tomada de decisões ou é algo que apenas devo saber que ele divide, faz o melhor possível e ponto? Obrigado! Clayton Rocha De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Marcio Portes Enviada em: segunda-feira, 23 de abril de 2007 17:45 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: Re: [oracle_br] Segmento x Datafile Grosso modo falando... Não é uma resposta para ser desenvolvida em 3 linhas... Porque ele divide a carga de I/O espalhando os blocos através dos datafiles. Imagine se voce tivesse cada datafile em um disco diferente com controladoras diferentes, voce ganharia em leitura, porque as controladoras iriam atenter em paralelo ao request do banco. On 4/23/07, Clayton Rocha [EMAIL PROTECTED]clayton.rocha%40faitec-cons.com.br mailto:clayton.rocha%40faitec-cons.com.br wrote: Boa tarde! Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois datafiles e movo um segmento para essa tablespace. O que determina em qual dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único datafile acontece do Oracle dividir o segmento nos dois? Oracle 10g em Windows. Obrigado! Clayton Rocha DBA Oracle Faitec Tecnologia [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
Um começo. http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED] wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Trigger para capturar erros
v$session... ops$marcio:LX10G select username, osuser, terminal, program from v$session where username is not null; USERNAME OSUSER TERMINAL PROGRAM - -- OPS$MARCIOmarcio pts/4[EMAIL PROTECTED] (TNS V1-V3) SCH_PAY marcio pts/2[EMAIL PROTECTED] (TNS V1-V3) 2 rows selected. On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED] wrote: show Marcio, era isto mesmo... blog adicionado aos favoritos... rs Ah, assim como você adicionou o usuario (USER) eu precisava ter também o nome do programa e do terminal... vi a function SYSINFO, mas não obtive sucesso... sabe como eu obtenho estas informacoes, se é possível? abração Gibon - Original Message - From: Marcio Portes To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Sent: Friday, April 20, 2007 8:04 AM Subject: Re: [oracle_br] Trigger para capturar erros Um começo. http://mportes.blogspot.com/2006/01/trigger-after-servererror.html On 4/20/07, Fábio Gibon - Comex System [EMAIL PROTECTED]gibon%40comexsystem.com.br wrote: Alguém tem material sobre trigger para coletar erros do banco? (algo bem objetivo com exemplos...) abraços Gibon [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ -- Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Query de vendas no mês
Uma idéia... http://mportes.blogspot.com/2005/11/trabalhando-com-intervalos-de-datas.html On 4/20/07, Fabio Santos [EMAIL PROTECTED] wrote: bom eu vejo algumas formas de você fazer isso. - Primeiro você fazer um loop num cursor diario e consultando a tabela de produto para verificar se tem o produto na tabela de venda. tipo: faz um for de 1 a 31 e com um cursor de produtos você verifica cada dia/produto na tabela de venda. com o resultado final retorna um cursor ou coloca em uma tabela. outra opcao se voce sempre verifica do dia anterior para tras, eh voce fazer um procedimento que preencha a tabela de venda com qtde zero se o dia anterior for null. e ai coloca um job para dar start nessa procedure 1 vez por dia. abraços -Mensagem original- De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Carlos Maurilio Silva Enviada em: sexta-feira, 20 de abril de 2007 14:31 Para: Oracle BR Assunto: [oracle_br] Query de vendas no mês Caros, boa tarde! Estou precisando de montar a seguinte query: Tenho numa tabela: data, produto e qtde vendida por dia. Qdo não há venda de um produto em determinado dia, não é gravada nehuma informação na tabela. Preciso montar uma query que me dê as vendas diárias por produto, mas, para os dias que não houveram vendas preciso informar zero (0). Ex: data prod qtde 02/04/07 123 25.00 04/04/07 123 12.00 05/04/07 123 9.00 . . Query -- 02/04/2007 123 25.00 03/04/2007 123 0.00 -- note-se que não há registro do dia 03 na tabela para o produto 123. 04/04/2007 123 12.00 05/04/2007 123 9.00 Obrigado, Carlim -_-_-_-_-__ Fale com seus amigos de graça com o novo Yahoo! Messenger HYPERLINK http://br.messenger.yahoo.com/http://br.messenger-.yahoo.com/ [As partes desta mensagem que não continham texto foram removidas] -- Internal Virus Database is out-of-date. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.25/745 - Release Date: 3/4/2007 12:48 -- Internal Virus Database is out-of-date. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.25/745 - Release Date: 3/4/2007 12:48 [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] ORDER BY em coluna alfanumérica
Corte os alphas da string e a transforme em numero! ops$marcio:LX10G select x from t order by 1; X -- 111A 11A 1A 222A 22A 2A 6 rows selected. ops$marcio:LX10G select x from t order by to_number(translate(x,'ABC...',' ')); X -- 1A 2A 11A 22A 111A 222A 6 rows selected. On 4/19/07, raposao [EMAIL PROTECTED] wrote: Boa tarde a todos. Uma vez vi nesse grupo um exemplo de uma query onde o ORDER BY numa coluna alfanumérica diferenciava números de palavras. Por exemplo: ORDER BY normal: 1A 11A 111A 2A 22A 222A ORDER BY que eu vi: 1A 2A 11A 22A 111A 222A Caso alguém tenha esse exemplo, poderia me enviar, por favor? Muito obrigado. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] tablespace
A mesma idéia em http://mportes.blogspot.com/2006/05/sql-dinmico.html basta fazer algo dinamico. select 'alter table '|| table_name ||' move tablespace ...;' from user_tables; On 4/19/07, Alessandro Damo [EMAIL PROTECTED] wrote: Boa tarde a todos, Gostaria de saber como eu faco para mudar todos os segmentos de uma tablespace para outra tablespace. Executando somente uma vez a query, sem ter que mover a tablespace de cada tabela uma a uma. Obrigado a Todos Alessandro. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Ajuda com select
Leandro, tudo que voce precisa é: insert into teste (id, mensagem ) select rownum, nome from grupo; On 4/19/07, Leandro Concon [EMAIL PROTECTED] wrote: Senhores, bom dia! Estou precisando recuperar o valor retornado do select e sete-lo em uma variavel local VARCHAR2. Valor retornado será utilizado para inserir em outra campo de outra tabela. Abaixo um exemplo de como seria DECLARE var_mensagem VARCHAR2(2000); BEGIN SELECT DISTINCT 'TESTE' || GRUPO.NOME INTO var_mensagem FROM GRUPO; DBMS_OUTPUT.PUT_LINE(var_mensagem); INSERT TESTE (ID,MENSAGEM) VALUES (1,var_mensagem); END; Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Capturar ID da sessão
ops$marcio:LX92 select sid, serial# from v$session where audsid = userenv('sessionid'); SID SERIAL# - - 11 5 1 row selected. On 4/19/07, Carlos Maurilio Silva [EMAIL PROTECTED] wrote: Bom dia, Numa aplicação, gostaria de criar uma tabela temporária e que nela tivesse o ID (serial#, sid) como complemento do nome desta tabela. Como eu faço pra conseguir pegar o sid e serial# da minha sessão corrente, uma vez que posso estar com mais de uma sessão aberta. Oracle9i Enterprise Edition Release 9.2.0.3.0 Obrigado, Carlim __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: CBO e RBO
; count = number of times OCI procedure was executed cpu = cpu time in seconds executing elapsed = elapsed time in seconds executing disk = number of physical reads of buffers from disk query = number of buffers gotten for consistent read current = number of buffers gotten in current mode (usually for update) rows = number of rows processed by the fetch or execute call SELECT COUNT(*) FROM dual call count cpu elapsed disk query current rows --- - - --- --- --- --- --- Parse 1 0.02 0.02 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.00 0.00 0 1 4 1 --- - - --- --- --- --- --- total 4 0.02 0.02 0 1 4 1 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: 121 Rows Row Source Operation --- --- 1 SORT AGGREGATE 1 TABLE ACCESS FULL DUAL No Oracle 9i, com o otimizador CHOOSE sem estatística coletada o banco funciona como RULE. Se em uma query que realiza junção de tabelas, por exemplo 5 tabelas envolvidas, houver estatística coletada em duas tabelas e as demas sem estatisticas qual otimizador o Oracle ira utilizar (CHOOSE ou RULE)? -- Aqui na Oi Internet você ganha ou ganha. Além de acesso grátis com qualidade, ganha contas ilimitadas de email com 1 giga cada uma. Ganha espaço ilimitado para hospedar sua página pessoal. Ganha flog, suporte grátis e muito mais. Baixe grátis o Discador em http://www.oi.com.br/discador e comece a ganhar. Agora, se o seu negócio é voar na internet sem pagar uma fortuna, assine Oi Internet banda larga e ganhe modem grátis. Clique em http://www.oi.com.br/bandalarga e aproveite essa moleza! [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Fazer histórico de todas as transações efetuadas em tabelas
Sistema monstruoso - Sempre é bom pensar e repensar qualquer requisito antes de implementar. Portanto, considere os impactos sobre a implementação da solução abaixo em seu ambiente. http://mportes.blogspot.com/search?q=fga On 4/11/07, Marcelo Magalhães [EMAIL PROTECTED] wrote: Caro colegas, Estou com um problema no desenvolvimento de um sistema de informação que irá utilizar Oracle, possivelmente 10g, com relação á historiar todas as transações (INSERT, UPDATE, DELETE) efetuadas nas tabelas do sistema. Este sistema poderá ter mais de 100 tabelas e algumas com algumas dezenas de colunas e ainda por cima o numero de registros já passa de 50 milhões, ou seja, é um sistema mostruoso. Me informaram que o 10g tem uma funcionalidade que historia as alterações feitas em campos, armazenando o usuário, data, hora, etc. que fez as alterações (INSERT, UPDATE, DELETE). Existe mesmo esta funcionalidade? Onde teria material de leitura para tal funcionalidade? Abraço a todos. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Data Pump
E quando voce faz import usando fromuser/touser voce espera enviar somente tabelas??? Não, voce precisa especificar com outro parâmetro, certo? No datapump também... use TABLESIdentifies a list of tables to import. Assim como no import normal. On 4/16/07, Eli Dias [EMAIL PROTECTED] wrote: Ola Até ai tudo bem que esse parametro irá transferir todo o esquema do usuário, mas para efetuar somente o import das tabelas. Por exemplo com o usuario x quero realizar o impd e transferir as tabelas de um *.dmp para o usuário y. Valeu --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu impdp help=y ... REMAP_SCHEMA Objects from one schema are loaded into another schema. ... On 4/15/07, Eli Dias [EMAIL PROTECTED] wrote: Boa noite. Galera existe algum parametro no IMPDP que realize a mesma função do fromuser/touser do import? -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Dúvida SQL Loader
qual a versão do banco? E qual sistema operacional? (E eu juro que é a última vez que pergunto! ;-) On 4/16/07, Clayton Rocha [EMAIL PROTECTED] wrote: Boa tarde! Tenho uma pasta com cerca de 45 arquivos CSV no mesmo padrão de formato e quero subir para o banco com SQL Loader. A rotina para subir um dos arquivos já está funcionando, no entanto gostaria de saber se tem como ordenar o SQL Loader para ler de todos os arquivos com o mesmo comando ou se eu preciso pensar em algum batch avançado para isso... Obrigado desde já! Clayton Rocha [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] ORA-12571 TNS-packet writer failure
Revise essa procedure, veja se não há nada hard coded nela apontando a um ambiente específico. On 4/16/07, Jorge Augusto Lustosa [EMAIL PROTECTED] wrote: Pessoal, estou com um problema. Preciso de ajuda. Tenho uma aplicação que executa uma procedure (esta proc faz leitura em algumas tabelas de sistemas de terceiros) e grava alguns dados em uma tabela temporária. A aplicação funciona perfeitamente em ambiente de homologação. Quando coloco em ambiente de produção aparece o erro ORA-12571 TNS-packet writer failure. A aplicação no ambiente de homologação apontando para a base de produção funciona perfeitamente. A aplicação no ambiente de produção apontando para a base de homologação também funciona. Só dá problema quando tudo está no ambiente de produção. Se executo somente a procedure, no ambiente de produção, sem o uso da aplicação tudo funciona. A aplicação executa outras procedures e tudo funciona, somente uma está me dando este problema. Será que alguém do grupo já teve este problema ou pode me dar uma dica? Já andei procurando no Google, mas até agora não consegui entender este erro. Ambiente de produção = Oracle 8i Ambiente de homologação = Oracle 8i e 9 Obrigado pela atenção. -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Data Pump
impdp help=y ... REMAP_SCHEMA Objects from one schema are loaded into another schema. ... On 4/15/07, Eli Dias [EMAIL PROTECTED] wrote: Boa noite. Galera existe algum parametro no IMPDP que realize a mesma função do fromuser/touser do import? -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Subquery na cláusula select
33 0.30 0.30 1185 4385 0 3000 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: 61 Rows Row Source Operation --- --- 3000 HASH JOIN 3000 TABLE ACCESS FULL T2 655473 TABLE ACCESS FULL T1 Ele teve que ler 655 mil linhas juntamente com as 3000 para depois o HASH. Muito esforço. Já com a subquery. select t2.object_id, t2.created, ( select object_name from t1 where t1.object_id = t2.object_id ) object_name from t2 call count cpuelapsed disk querycurrent rows --- -- -- -- -- -- -- Parse1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 31 0.05 0.06 44 9075 0 3000 --- -- -- -- -- -- -- total 33 0.05 0.06 44 9075 0 3000 Misses in library cache during parse: 1 Optimizer goal: CHOOSE Parsing user id: 61 Rows Row Source Operation --- --- 3000 TABLE ACCESS BY INDEX ROWID T1 3000 INDEX RANGE SCAN OBJIDX (object id 33158) 3000 TABLE ACCESS FULL T2 Através do índice, ele evitou praticamente 652 mil linhas (grosso modo falando), mas o esforço foi bem menor. E para abreviar a resposta, que acho enorme, vou colocar os 2 tkprofs do 10g, basicamente é a mesma situação a GRANDE diferença é que eu tive que ralar para sair esse resultado ( até cascade = false) eu usei - e a quantidade de registros da t1 também teve que ser de 1 milhão e pouco. select t2.object_id, t2.created, t1.object_name from t1, t2 where t1.object_id = t2.object_id call count cpuelapsed disk querycurrent rows --- -- -- -- -- -- -- Parse1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 31 0.59 0.59 0 7539 0 3000 --- -- -- -- -- -- -- total 33 0.59 0.59 0 7539 0 3000 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 55 Rows Row Source Operation --- --- 3000 HASH JOIN (cr=7539 pr=0 pw=0 time=94445 us) 3000 TABLE ACCESS FULL T2 (cr=11 pr=0 pw=0 time=21060 us) 1123458 TABLE ACCESS FULL T1 (cr=7528 pr=0 pw=0 time=6740811 us) === select t2.object_id, t2.created, ( select object_name from t1 where t1.object_id = t2.object_id ) object_name from t2 call count cpuelapsed disk querycurrent rows --- -- -- -- -- -- -- Parse1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 31 0.23 0.23 0 9078 0 3000 --- -- -- -- -- -- -- total 33 0.23 0.23 0 9078 0 3000 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 55 Rows Row Source Operation --- --- 3000 TABLE ACCESS BY INDEX ROWID T1 (cr=9037 pr=0 pw=0 time=186784 us) 3000 INDEX RANGE SCAN OBJIDX (cr=6037 pr=0 pw=0 time=83942 us)(object id 63397) 3000 TABLE ACCESS FULL T2 (cr=41 pr=0 pw=0 time=21058 us) Não é uma materia fácil de entendimento a priori, mas se ainda ficou dúvida, replica que o Chiappa explica! :-) On 4/13/07, h_marinox [EMAIL PROTECTED] wrote: Pessoal, Eu gostaria de entender quais são as vantagens e desvantagens de usar uma subquery na cláusula select. Quando usar e quando não usar. Obrigado e viva a Sexta-Feira abraços hmarinox -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Criar diretorio
se estiver usando 10g, o dbms_scheduler consegue. http://mportes.blogspot.com/2005/10/dbmsscheduler-executando-bat.html http://mportes.blogspot.com/2007/01/dbmsscheduler-no-linux.html On 4/12/07, Roberto Souza Silva [EMAIL PROTECTED] wrote: Bom dia amigos. Alguem pode me dizer que eh possivel criar diretorios em PL? Nao estou falando do CREATE OR REPLACE DIRECTORY. E aproveitando tambem gostaria de saber se existe alguma package que execute comandos externos, tipo executar um arquivo BAT em algum diretorio do ALL_DIRECTORIES! Pois se existe resolvo a questao acima. Obrigado e uma otima 5-Feira a todos. Roberto [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] datafiles grandes
No HP-UX trabalho com datafiles desse porte sem nenhum problema. Estão no EMC (storage). On 4/11/07, Miguel Angelo Crosariol [EMAIL PROTECTED] wrote: Oi gente, estou com uma duvida, e preciso resolver logo se possivel ainda hj pois tenho que migrar o banco, trabalho com datafiles grandes em torno de 10GB/20GB, e certa vez uma pessoa me falou que era melhor dividir me varios arquivos de 2GB, pergunta , oque é melhor ( em termos de desempenho e I/O de disco ) ? 5 arquivos de 2GB ou 1 arquivo de 10GB a maquina : - dual xeon - 8GB ram - CentOS 4 X86_64 - Oracle 10g 64 Obrigado Miguel [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Versão do Banco
ops$marcio:LX10G select platform_name from v$database; PLATFORM_NAME --- Linux IA (32-bit) 1 row selected. On 4/12/07, Mauricio Roberto Maciel [EMAIL PROTECTED] wrote: Pessoal: Como faço para descobrir se o meu banco é de 64 bits? Obrigado Mauricio [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Como criar histórico de alterações
Na versão 10g voce pode usar o dbms_fga, mas com esse volume - prepara disco. http://mportes.blogspot.com/2005/05/audit-trail-fga-fine-grained-audit-10g.html Usei uma solução caseira certa vez em um cliente, mas não recomendo pra voce (nesse volume). http://mportes.blogspot.com/2005/05/audit-trail-soluo-caseira.html On 4/12/07, Marcelo Magalhaes [EMAIL PROTECTED] wrote: Caro colegas, Estou com uma dúvida de como cirar um histórico de alterações de informações arnazenadas no Oracle. Me disseram que o próprio Oracle tem esta funcionalidade, é verdade? Qual versão tem isso? Como obter maiores informações sobre tal funcionalidade? Para ter uma idéia do problema; o sistema tem umas 100 tabelas cada uma com uns 20 campos.. e tenho uma tabela com mais de 50 milhões de registros... ou seja o sistema é enorme. Quero historiar todas esta tabelas, armazenando no histórico a data/hora da alteração, usuário que fez, valor antigo e valor novo. Tem como fazer isso? Como? Abraços. __ Marcelo Vicente Vianna Magalhães Rio de Janeiro R.J. Departamento de Engenharia Eletrônica Escola de Engenharia Universidade Federal do Rio de Janeiro __ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/[EMAIL PROTECTED]/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] Apostilas » Dicas e Exemplos » Funções » Mundo Oracle » Package » Procedure » Scripts » Tutoriais acesse: http://www.oraclebr.com.br/codigo/ListaCodigo.php -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/[EMAIL PROTECTED]/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Duvida OS
Acho que o problema não é qual o melhor SO e sim QUEM vai administrá-lo. Se a empresa tem pessoal que administra Windows e ninguém experiente em Linux, então, neste caso, Linux não deveria ser nem considerado (caso não haja budget para treinamento e administração externa). É muito importante ter um SA para suportar o ambiente operacional onde o Oracle será instalado. Portanto, faça um planejamento rigoroso, onde os skills das pessoas deve ser levado em conta - e não caia na armadilha do treinamento: uma pessoa recém treinada, não está preparada para assumir um Sistema Operacional em produção (claro que isso é meu pensamento). Agora, em minha opinião, mas porque conheço o Linux mais que Windows, eu instalaria o Oracle no Linux -- só e somente só, porque conheço a plataforma, tenho experiência nesta plataforma. E porque o Linux é Rock'n Roll... :-) On 4/11/07, Welvis Douglas Silva Moreto [EMAIL PROTECTED] wrote: Olá Pessoal, estamos em duvida aqui na empresa... estamos mudando a maquina que o oracle está instalado, gostaria de saber o seguinte. qual SO é melhor Windows 2003 ou Red Hat AS 3 ou 4, atualmente estamos usando o oracle Oracle9i Release 9.2.0.4.0 - Production PL/SQL Release 9.2.0.4.0 - Production CORE 9.2.0.3.0 Production TNS for Linux: Version 9.2.0.4.0 - Production NLSRTL Version 9.2.0.4.0 - Production onde em um futuro bem proximos estaremos instalando o 10G, qual seria a melhor opção? obrigado pela ajuda.! att, Welvis Douglas __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Envio de uma clob com + de 32767 caracteres - URGENTE
Já verificou como está na origem. Passando os olhos no seu código, não vejo nenhum problema. Voce usa o utl_file.put() que prepara a linha e não gera um \n (new line). Mas nunca fiz um arquivo texto que tivesse mais de 32k no longo da linha, não sei se é permitido no sistema opernacional. On 4/10/07, a_coelho59 [EMAIL PROTECTED] wrote: Marcio, agora tenho outro problema: O ficheiro está completo mas, parte a linha quando atinge 32767 bytes e coloca o ficheiro xml mal estruturado, conforme o exemplo. PartsInvoiceLine type=invoice Part PartNu mber=139427 FranchiseName=OPEL IsFranchise=false/ Quantity1/Quantity UnitCost31.15/UnitCost UnitPrice62.3/UnitPrice UnitListPrice62.3/UnitListPrice Purchase Source=Manufacturer/ /PartsInvoiceLine Quem puder agradeço --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu Voce está dentro de um looping e sabe quem está te jogando fora não? Quando voce usa o dbms_lob.read, na última passagem ele joga o no_data_found e manda o ponteiro pra fora do looping. Faltou na sua lógica o tratamento do no_data_found para gravar o resto. Acho que um bom inicio seria: ... EXCEPTION when no_data_found then utl_file.put(v_file, v_buffer); utl_file.fflush( v_file ); utl_fclose( v_file ); END ENVIA_XML; Eu tirei o WHEN OTHERS de propósito... evite usá-lo. Quando tiver um tempo, dá uma lidinho em http://mportes.blogspot.com/2005/07/boas-prticas-de-programao-when- others.html On 4/9/07, a_coelho59 [EMAIL PROTECTED] wrote: Caros amigos; Se me puderem ajudar agradeço. Tenho uma Clob com mais 32767 caracteres. Tenho este procedure para gerar um file. Mas não sei como fazer o output da clob com todos os caracteres para o file. O procedimento é este, se alguem me puder ajudar agradeço: PROCEDURE ENVIA_XML IS V_DIR VARCHAR2(7) := 'http://aplfms:/dload'; V_NOME VARCHAR2(15) := 'VD_PECAS_PQ.xml'; V_FILE UTL_FILE.FILE_TYPE ; V_CLOB CLOB ; V_BUFFER_SIZE VARCHAR2(32767) ; V_BUFFER VARCHAR2(32767) ; V_AMOUNT BINARY_INTEGER := 32767 ; V_POS INTEGER := 1 ; BEGIN SELECT p.lin.getClobVal() INTO V_CLOB FROM PC_PQ_LIN_XML1 p WHERE p.sqfile = 1 ; V_FILE := UTL_FILE.fopen(V_DIR, V_NOME , 'W', V_BUFFER_SIZE); LOOP DBMS_LOB.READ(V_CLOB, V_AMOUNT, V_POS, V_BUFFER); UTL_FILE.put(V_FILE, V_BUFFER); V_POS := V_POS + V_AMOUNT; END LOOP; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(SQLERRM); UTL_FILE.fclose(V_FILE); END ENVIA_XML; Obrigado -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Envio de uma clob com + de 32767 caracteres - URGENTE
Pra ser sincero, nem fui lá nos docs. ;-) Obrigado. Nunca precisei ir tão longe com a linha, ou seja, 32k é byte pra dedeu. Outra possibilidade além de rotina externa, poderia ser gravar isso em blob, usando o put_raw. (mas é chute, não testei...) On 4/10/07, jlchiappa [EMAIL PROTECTED] wrote: Márcio, ao que eu entendi o cara quer ler/gravar arquivo texto com linhas maiores que 32767 bytes,né ? Aí não é limitação de SO, é limitação da própria UTL_FILE, o manual Oracle(r) Database PL/SQL Packages and Types Reference no capítulo sobre a UTL_FILE já nos diz (grifo com *s meu) : UTL_FILEFOPEN Function This function opens a file. You can specify the maximum line size and have a maximum of 50 files open simultaneously. See also FOPEN_NCHAR Function. Syntax UTL_FILE.FOPEN ( location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2, max_linesize IN BINARY_INTEGER) RETURN file_type; Parameters ... blablabla ... max_linesize Maximum number of characters for each line, including the newline character, for this file (minimum value 1, maximum value 32767 ). If unspecified, Oracle supplies a default value of 1024. === então com utl_file essa (estranha!!) requisição de ler/gravar arquivo com linhas maiores que isso não rola, extrapola o limite da utl_file - digo estranha porque muitas vezes nem editores de texto especializados manipulam arquiivos com linhas to largas, é incomum pra dizer o mínimo Pra essa necessidade então o colega terá que escrever uma rotina EXTERNA ao PL/SQL (em C ou Java, provavelmente) e a chamar do PL/SQL via external proc ou java proc. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes [EMAIL PROTECTED] escreveu Já verificou como está na origem. Passando os olhos no seu código, não vejo nenhum problema. Voce usa o utl_file.put() que prepara a linha e não gera um \n (new line). Mas nunca fiz um arquivo texto que tivesse mais de 32k no longo da linha, não sei se é permitido no sistema opernacional. On 4/10/07, a_coelho59 [EMAIL PROTECTED] wrote: Marcio, agora tenho outro problema: O ficheiro está completo mas, parte a linha quando atinge 32767 bytes e coloca o ficheiro xml mal estruturado, conforme o exemplo. PartsInvoiceLine type=invoice Part PartNu mber=139427 FranchiseName=OPEL IsFranchise=false/ Quantity1/Quantity UnitCost31.15/UnitCost UnitPrice62.3/UnitPrice UnitListPrice62.3/UnitListPrice Purchase Source=Manufacturer/ /PartsInvoiceLine Quem puder agradeço --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Voce está dentro de um looping e sabe quem está te jogando fora não? Quando voce usa o dbms_lob.read, na última passagem ele joga o no_data_found e manda o ponteiro pra fora do looping. Faltou na sua lógica o tratamento do no_data_found para gravar o resto. Acho que um bom inicio seria: ... EXCEPTION when no_data_found then utl_file.put(v_file, v_buffer); utl_file.fflush( v_file ); utl_fclose( v_file ); END ENVIA_XML; Eu tirei o WHEN OTHERS de propósito... evite usá-lo. Quando tiver um tempo, dá uma lidinho em http://mportes.blogspot.com/2005/07/boas-prticas-de-programao- when- others.html On 4/9/07, a_coelho59 acoelho@ wrote: Caros amigos; Se me puderem ajudar agradeço. Tenho uma Clob com mais 32767 caracteres. Tenho este procedure para gerar um file. Mas não sei como fazer o output da clob com todos os caracteres para o file. O procedimento é este, se alguem me puder ajudar agradeço: PROCEDURE ENVIA_XML IS V_DIR VARCHAR2(7) := 'http://aplfms:/dload'; V_NOME VARCHAR2(15) := 'VD_PECAS_PQ.xml'; V_FILE UTL_FILE.FILE_TYPE ; V_CLOB CLOB ; V_BUFFER_SIZE VARCHAR2(32767) ; V_BUFFER VARCHAR2(32767) ; V_AMOUNT BINARY_INTEGER := 32767 ; V_POS INTEGER := 1 ; BEGIN SELECT p.lin.getClobVal() INTO V_CLOB FROM PC_PQ_LIN_XML1 p WHERE p.sqfile = 1 ; V_FILE := UTL_FILE.fopen(V_DIR, V_NOME , 'W', V_BUFFER_SIZE); LOOP DBMS_LOB.READ(V_CLOB, V_AMOUNT, V_POS, V_BUFFER); UTL_FILE.put(V_FILE, V_BUFFER); V_POS := V_POS + V_AMOUNT; END LOOP; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(SQLERRM); UTL_FILE.fclose(V_FILE); END ENVIA_XML; Obrigado -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning- oracle.html [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com
Re: [oracle_br] Re: Envio de uma clob com + de 32767 caracteres - URGENTE
A curiosidade matou o gato. Fiz o exemplo e postei no blog. http://mportes.blogspot.com/2007/04/dbmslob-10g.html Funciona, mas é preciso abrir o arquivo com 'wb' senão ele continua limitando em 32k. On 4/10/07, jlchiappa [EMAIL PROTECTED] wrote: Só complementando - agora, pensando mais friamente, acho que o put_raw vai funcionar sim : o limite existe MAS como o raw não adiciona nem procura por caracter eol, o cara vai poder ler a linha lá grandona MAS em vários pedaços de 32767 bytes, como mostrado em http://www.oracle-base.com/articles/9i/ExportBlob9i.php , sim... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, jlchiappa [EMAIL PROTECTED] escreveu Pois é, é byte pra dedéu, é um pedido incomum pra dizer o mínimo - e na verdade eu só fui nas docs pra confirmar, eu já tinha um feeling de que isso seria limitação (conhecendo o nosso amigo PL/SQL, que nada mais é do que uma série de structs C com alguns programinhas que os acessam, e sabendo que muitos desses caras foram limitados em 32 Kb - que é o valor máximo pra vários compiladores C em ambiente 32 bits - , eu já imaginava que devia ter esse limite Quanto à utl_file.put_raw, não sei se funcionaria, já que a própria chamada inicial obrigatória do utl_file.fopen tem o limite, é testar []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Pra ser sincero, nem fui lá nos docs. ;-) Obrigado. Nunca precisei ir tão longe com a linha, ou seja, 32k é byte pra dedeu. Outra possibilidade além de rotina externa, poderia ser gravar isso em blob, usando o put_raw. (mas é chute, não testei...) On 4/10/07, jlchiappa jlchiappa@ wrote: Márcio, ao que eu entendi o cara quer ler/gravar arquivo texto com linhas maiores que 32767 bytes,né ? Aí não é limitação de SO, é limitação da própria UTL_FILE, o manual Oracle(r) Database PL/SQL Packages and Types Reference no capítulo sobre a UTL_FILE já nos diz (grifo com *s meu) : UTL_FILEFOPEN Function This function opens a file. You can specify the maximum line size and have a maximum of 50 files open simultaneously. See also FOPEN_NCHAR Function. Syntax UTL_FILE.FOPEN ( location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2, max_linesize IN BINARY_INTEGER) RETURN file_type; Parameters ... blablabla ... max_linesize Maximum number of characters for each line, including the newline character, for this file (minimum value 1, maximum value 32767 ). If unspecified, Oracle supplies a default value of 1024. === então com utl_file essa (estranha!!) requisição de ler/gravar arquivo com linhas maiores que isso não rola, extrapola o limite da utl_file - digo estranha porque muitas vezes nem editores de texto especializados manipulam arquiivos com linhas to largas, é incomum pra dizer o mínimo Pra essa necessidade então o colega terá que escrever uma rotina EXTERNA ao PL/SQL (em C ou Java, provavelmente) e a chamar do PL/SQL via external proc ou java proc. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Já verificou como está na origem. Passando os olhos no seu código, não vejo nenhum problema. Voce usa o utl_file.put() que prepara a linha e não gera um \n (new line). Mas nunca fiz um arquivo texto que tivesse mais de 32k no longo da linha, não sei se é permitido no sistema opernacional. On 4/10/07, a_coelho59 acoelho@ wrote: Marcio, agora tenho outro problema: O ficheiro está completo mas, parte a linha quando atinge 32767 bytes e coloca o ficheiro xml mal estruturado, conforme o exemplo. PartsInvoiceLine type=invoice Part PartNu mber=139427 FranchiseName=OPEL IsFranchise=false/ Quantity1/Quantity UnitCost31.15/UnitCost UnitPrice62.3/UnitPrice UnitListPrice62.3/UnitListPrice Purchase Source=Manufacturer/ /PartsInvoiceLine Quem puder agradeço --- Em oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Voce está dentro de um looping e sabe quem está te jogando fora não? Quando voce usa o dbms_lob.read, na última passagem ele joga o no_data_found e manda o ponteiro pra fora do looping. Faltou na sua lógica o tratamento do no_data_found para gravar o resto. Acho que um bom inicio seria: ... EXCEPTION when no_data_found
Re: [oracle_br] Join
Fabio, Se não colocar nada no relacionamento, a query retorna PRODUTO CARTESIANO. Portanto, em sua sugestão, a segunda query vai provocar produto cartesiano, não full outer join. Ex. se a t1 tem 10 linhas e a t2 tem 10, a segunda query vai trazer 100 linhas (10x10). Dá para reproduzir facilmente. ops$marcio:LX10G create table t1 as select rownum id from all_users where rownum = 10; Table created. ops$marcio:LX10G create table t2 as select (rownum+5) id from all_users where rownum = 10; Table created. ops$marcio:LX10G ops$marcio:LX10G select * from t1 full outer join t2 on ( t1.id = t2.id ) order by 1; IDID - - 1 2 3 4 5 6 6 7 7 8 8 9 9 1010 14 13 15 12 11 15 rows selected. ops$marcio:LX10G ops$marcio:LX10G select count(*) from t1, t2; COUNT(*) - 100 1 row selected. ops$marcio:LX10G ops$marcio:LX10G select * from t1, t2 where t1.id = t2.id (+) 2 union all 3 select * from t1, t2 where t1.id (+) = t2.id and t1.id is null 4 order by 1 5 / IDID - - 1 2 3 4 5 6 6 7 7 8 8 9 9 1010 11 12 13 14 15 15 rows selected. On 4/10/07, Fabio Santos [EMAIL PROTECTED] wrote: Qual a versão do oracle? Se for 9i, pode fazer com full outer join. Se for 8i eh so nao colocar nada no relacionamento select t1.c1, t2.c1 from t1 full outer join t2 on t1.c1 = t2.c1; ou select t1.c1, t2.c1 from t1, t2; -Mensagem original- De: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] Em nome de Cristiano Mascarenhas da Silva Enviada em: segunda-feira, 9 de abril de 2007 10:00 Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Assunto: [oracle_br] Join Prezados, bom dia, Fazendo um join no oracle, não é aceito colocar o sinal (+) dos dois lados, exemplo: where a.campo (+) = b.campo (+) Então como fazemos essa consulta com outer join nas duas tabelas? Sds, Cristiano Mascarenhas da Silva -- Internal Virus Database is out-of-date. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.25/745 - Release Date: 3/4/2007 12:48 -- Internal Virus Database is out-of-date. Checked by AVG Free Edition. Version: 7.5.446 / Virus Database: 268.18.25/745 - Release Date: 3/4/2007 12:48 [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Envio de uma clob com + de 32767 caracteres - OFF TOPIC
Aqui na lista, ainda não tinha divulgado. Aquele dia foi muito engraçado... O pior é que tudo aquilo aconteceu!! É verídico. Obrigado pelo feedback. Abraços, On 4/10/07, FERNANDES Marco A SOFTTEK [EMAIL PROTECTED] wrote: Fala Márcio, beleza ? Vc já deve ter publicado isso aqui na lista mas como aproveitei pra vasculhar seu blog eu achei essa preciosidade !!! risos http://mportes.blogspot.com/2005/07/dba-de-peso.html Muito bom ! Acho que muitos aqui vão gostar ! risos Nada como encarar a vida de bom humor ! parabéns ! Valeu pela contribuição do clob ! matou a pau ! 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: Marcio Portes Sent: terça-feira, 10 de abril de 2007 11:38 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Re: Envio de uma clob com + de 32767 caracteres - URGENTE A curiosidade matou o gato. Fiz o exemplo e postei no blog. http://mportes.blogspot.com/2007/04/dbmslob-10g.html http://mportes.blogspot.com/2007/04/dbmslob-10g.html Funciona, mas é preciso abrir o arquivo com 'wb' senão ele continua limitando em 32k. On 4/10/07, jlchiappa [EMAIL PROTECTED] jlchiappa%40yahoo.com.brmailto: jlchiappa% jlchiappa%2540yahoo.com.br wrote: Só complementando - agora, pensando mais friamente, acho que o put_raw vai funcionar sim : o limite existe MAS como o raw não adiciona nem procura por caracter eol, o cara vai poder ler a linha lá grandona MAS em vários pedaços de 32767 bytes, como mostrado em http://www.oracle-base.com/articles/9i/ExportBlob9i.php http://www.oracle-base.com/articles/9i/ExportBlob9i.php , sim... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, jlchiappa [EMAIL PROTECTED] escreveu Pois é, é byte pra dedéu, é um pedido incomum pra dizer o mínimo - e na verdade eu só fui nas docs pra confirmar, eu já tinha um feeling de que isso seria limitação (conhecendo o nosso amigo PL/SQL, que nada mais é do que uma série de structs C com alguns programinhas que os acessam, e sabendo que muitos desses caras foram limitados em 32 Kb - que é o valor máximo pra vários compiladores C em ambiente 32 bits - , eu já imaginava que devia ter esse limite Quanto à utl_file.put_raw, não sei se funcionaria, já que a própria chamada inicial obrigatória do utl_file.fopen tem o limite, é testar []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Pra ser sincero, nem fui lá nos docs. ;-) Obrigado. Nunca precisei ir tão longe com a linha, ou seja, 32k é byte pra dedeu. Outra possibilidade além de rotina externa, poderia ser gravar isso em blob, usando o put_raw. (mas é chute, não testei...) On 4/10/07, jlchiappa jlchiappa@ wrote: Márcio, ao que eu entendi o cara quer ler/gravar arquivo texto com linhas maiores que 32767 bytes,né ? Aí não é limitação de SO, é limitação da própria UTL_FILE, o manual Oracle(r) Database PL/SQL Packages and Types Reference no capítulo sobre a UTL_FILE já nos diz (grifo com *s meu) : UTL_FILEFOPEN Function This function opens a file. You can specify the maximum line size and have a maximum of 50 files open simultaneously. See also FOPEN_NCHAR Function. Syntax UTL_FILE.FOPEN ( location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2, max_linesize IN BINARY_INTEGER) RETURN file_type; Parameters ... blablabla ... max_linesize Maximum number of characters for each line, including the newline character, for this file (minimum value 1, maximum value 32767 ). If unspecified, Oracle supplies a default value of 1024. === então com utl_file essa (estranha!!) requisição de ler/gravar arquivo com linhas maiores que isso não rola, extrapola o limite da utl_file - digo estranha porque muitas vezes nem editores de texto especializados manipulam arquiivos com linhas to largas, é incomum pra dizer o mínimo Pra essa necessidade então o colega terá que escrever uma rotina EXTERNA ao PL/SQL (em C ou Java, provavelmente) e a chamar do PL/SQL via external proc ou java proc. []s Chiappa --- Em oracle_br@yahoogrupos.com.broracle_br%40yahoogrupos.com.brmailto: oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com .broracle_br% 40yahoogrupos.com.br, Marcio Portes portes.marcio@ escreveu Já verificou
Re: [oracle_br] Re: ERRO ao instalar o Workflow 2.6.3
Mais um chute ae... acho que a versão do WF 2.6.3 não instala no 10gR2. Os binários são construídos na versão 10.1.0.3 Então voce vai ter que patchear o WF. Acho que por isso que ele reclama do Home. Mas é puro chute!! On 4/9/07, jlchiappa [EMAIL PROTECTED] wrote: Não trabalho com esse produto, mas a msg parece ser BEM clara : Este não é um ORACLE_HOME do 10g. == ou seja, vc tem na mesma máquina algum produto Oracle (banco, cliente, o que for), de versão INFERIOR à 10g, e o tal Workflow ** exige ** que seja instalado numa oracle home (diretório) versão 10g, informe outra oracle_home em outro diretório na instalação... []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Marcos Macedo [EMAIL PROTECTED] escreveu Olá pessoal, estou tentando instalar o Workflow Server Builder 2.6.3. Só que apresenta o seguinte erro ao tentar instalar: Este não é um ORACLE_HOME do 10g. Interompa a instalação. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for 32-bit Windows: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production O Universal Installer é a versão 10.1.0.2.0, Não sei se a versão do installer faz diferença. OBS: O Workflow Server Builder foi baixado do site da oracle.com Marcos Adriano Macedo __ 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] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Envio de uma clob com + de 32767 caracteres
Voce está dentro de um looping e sabe quem está te jogando fora não? Quando voce usa o dbms_lob.read, na última passagem ele joga o no_data_found e manda o ponteiro pra fora do looping. Faltou na sua lógica o tratamento do no_data_found para gravar o resto. Acho que um bom inicio seria: ... EXCEPTION when no_data_found then utl_file.put(v_file, v_buffer); utl_file.fflush( v_file ); utl_fclose( v_file ); END ENVIA_XML; Eu tirei o WHEN OTHERS de propósito... evite usá-lo. Quando tiver um tempo, dá uma lidinho em http://mportes.blogspot.com/2005/07/boas-prticas-de-programao-when-others.html On 4/9/07, a_coelho59 [EMAIL PROTECTED] wrote: Caros amigos; Se me puderem ajudar agradeço. Tenho uma Clob com mais 32767 caracteres. Tenho este procedure para gerar um file. Mas não sei como fazer o output da clob com todos os caracteres para o file. O procedimento é este, se alguem me puder ajudar agradeço: PROCEDURE ENVIA_XML IS V_DIR VARCHAR2(7) := 'http://aplfms:/dload'; V_NOME VARCHAR2(15) := 'VD_PECAS_PQ.xml'; V_FILE UTL_FILE.FILE_TYPE ; V_CLOB CLOB ; V_BUFFER_SIZE VARCHAR2(32767) ; V_BUFFER VARCHAR2(32767) ; V_AMOUNT BINARY_INTEGER := 32767 ; V_POS INTEGER := 1 ; BEGIN SELECT p.lin.getClobVal() INTO V_CLOB FROM PC_PQ_LIN_XML1 p WHERE p.sqfile = 1 ; V_FILE := UTL_FILE.fopen(V_DIR, V_NOME , 'W', V_BUFFER_SIZE); LOOP DBMS_LOB.READ(V_CLOB, V_AMOUNT, V_POS, V_BUFFER); UTL_FILE.put(V_FILE, V_BUFFER); V_POS := V_POS + V_AMOUNT; END LOOP; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(SQLERRM); UTL_FILE.fclose(V_FILE); END ENVIA_XML; Obrigado -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Atualizar tabela com dados de outra
Uma trigger chamando uma package, sim, seria uma opção. Agora, é difícil opinar sem conhecer ao menos um exemplo do que é a aplicação. On 4/7/07, Igor Laguardia [EMAIL PROTECTED] wrote: Voce dize eu fazer uma trigger na tabela principal? Sao sistemas diferentes e não é uma tabela é uma View. Em 06/04/07, Marcio Portes [EMAIL PROTECTED]portes.marcio%40gmail.com escreveu: O processo que atualiza a primeira tabela não pode atualizar a segunda? Por que há necessidade de um processo batch para atualização? Pergunto isso, porque um job de 2 em 2 minutos não tem muito sentido (para este caso). On 4/6/07, Igor Laguardia [EMAIL PROTECTED] igorlf%40gmail.comigorlf%40gmail.com wrote: Prezados, Quero atualizar os dados de uma tabela, com as informações de outra tabela. O cenário é que tenho uma tabela que possui praticamente os mesmos dados que outra, e tenho um job que de 2 em 2 min atualiza os dados de uma na outra. Eu faço de uma maneira muito lenta, atualizo registro por registro, porem as tabelas possuiem a chave primaria identica, eu queria fazer algo mais dinamico, alguem pode me ajudar? -- [ ]'s Igor Laguardia - Pedras no caminho?Guardo todas, um dia vou construir um castelo. (Fernando Pessoa) [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas] -- [ ]'s Igor Laguardia - Pedras no caminho?Guardo todas, um dia vou construir um castelo. (Fernando Pessoa) [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Duvida em Select com Index
O que acontece é que: quando os dados são conhecidos pelo Oracle, através das estatísticas, o otimizador, por meio de cálculos aritméticos (isso pode ser visto com o dump 10053) decide qual a melhor forma de trazer os dados, que é a parte mais difícil, digamos, da execução da query. Obviamente, o otimizador conhece a ordem se seus dados através do CLUSTERING_FACTOR na DBA_INDEXES, quanto mais próximo essa valor estiver do número de blocos, mais organizado estão seus dados em relação a seu índice e, portanto, menos trabalho com o ORDER BY ele vai ter. Também comecei minha jornada na decada de 80, mas com o COBOL. A diferença entre o Oracle e os demais bancos é a forma otimizada de realizar os trabalhos de busca de dados. Já trabalhei com Sybase e vi bem pouco de SQL Server, e não sei se hoje em dia eles trabalham com algo semelhante a recuperação de dados baseado em estatística. No Sybase, havia um tal índice clusterizado, que era mais ou menos a IOT no Oracle, que trazia os dados de forma ordenada ao índice, entretanto, mesmo tabelas do tipo IOT do Oracle, não garantem que a ordem seja a da primary key, depende do plano que otimizador escolhe - é lógico que se o ORDER BY for da primary key da IOT e somente ela estiver envolvida no SELECT, o otimizador evita o SORT ORDER BY, porém, uma vez envolvida em uma query com outras tabelas, o otimizador volta a fazer o SORT ORDER BY por último. Quanto ao hint, tente descobrir, através dos planos de execução, porque voce TEVE que hintar a query. Pode ser problema de estatística antiga, má configuração de alguns parâmetros do CBO, como por ex., OPTIMIZER_INDEX_CACHING, OPTIMIZER_INDEX_COST_ADJ, DB_FILE_MULTIBLOCK_READ_COUNT, também, se alguma tabela envolvida na sua query não tenha estatística, o oracle usa estatística inventada e isso não leva o otimizador a tomar a decisão correta (no default statitics, por ex., numero de bloco é 1, média do tamanho da linha é 100 bytes, etc), enfim, voce precisa investigar porque teve que usar hint. E provavelmente, em uma migração ou upgrade futuro, terá impacto com esse hint. On 4/5/07, Arnaldo Vicente Scarin [EMAIL PROTECTED] wrote: Obrigado Marcio, mas gostaria de falar mais a respeito. Quando eu começei a trabalhar com Informática, na década de 80, utilizei conceitos como Banco de Dados xBase. Um indice servia para acelerar um pesquisa além de organizar os dados de acordo com a chave indicada para aquele indice. Dessa forma, quando se fazia uma consulta atraves de um Seek e armazenava-se o resultado, esse resultado estava indexado da forma com que seria necessário. A minha duvida paira exatamente nisso. Um banco de dados tão poderoso como o Oracle, utilizar um indice somente para acelerar uma consulta me parece uma coisa descabida, uma vez que ele guarda o timestamp da linha para formar a ordenação no indice, uma visualização desse table na ordem da chave do indice não seria nada dificil de ser feita. Nessa minha forma de análise, o Otimizador (desculpe a confusão com o parser) não precisaria ter o segundo trabalho de re-ordernar os dados, uma vez que eles já estariam na ordem correta. Não sei se outros bancos de dados trabalham da mesma forma que o Oracle, mas eu trabalhei com SQL-Server e se eu não me engano, ele retorna os dados de acordo com o Index utilizado. Quanto a utilização de Hint, eu fiz uma analisa atraves do Pl/Sql Developer, e para o mesmo select o tempo de resposta utilizando o Hint está cerca de 60% mais rápido do que a utilização sem ele. Mais uma vez obrigado, - Mensagem original De: Marcio Portes [EMAIL PROTECTED] portes.marcio%40gmail.com Para: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Enviadas: Quinta-feira, 5 de Abril de 2007 19:24:20 Assunto: Re: [oracle_br] Duvida em Select com Index Arnaldo, Se voce quer que seu result set venha em alguma ordem, voce NECESSITA usar o ORDER BY. É obrigatório e amplamente discutido na internet, inclusive o Jonathan Lewis escreveu uma artigo excelente sobre esse tema. http://jonathanlewi s.wordpress. com/2007/ 03/05/ordering/ Outra coisa, hint de indice não é uma boa idéia, fiz um pequeno artigo sobre índices um tempinho atrás. http://mportes. blogspot. com/2005/ 05/ndices- falando-livremen te.html No seu caso, (se estiver na versão 10g) um hint interessante para ser usado com ORDER BY seria o /*+ FIRST_ROWS(n) */ onde n é o número de linhas esperado para a consulta. Não há movimentação de parse quando o order by é usado, acho que voce quis dizer otimizador. O order by acontece na sua porção de memória (PGA) e, portanto, longe do parse. A última operação, na execução da query, é a ordenação. On 4/4/07, Arnaldo V. Scarin [EMAIL PROTECTED] com.br wrote: Boa tarde a Todos, Sou novo no grupo e não sou DBA, sou Analista de Sistemas. Hoje eu estava debatendo com outras pessoas e me disseram que um Select feito com hint (forçando o Indice) pode não retornar o ResultSet
Re: [oracle_br] Atualizar tabela com dados de outra
O processo que atualiza a primeira tabela não pode atualizar a segunda? Por que há necessidade de um processo batch para atualização? Pergunto isso, porque um job de 2 em 2 minutos não tem muito sentido (para este caso). On 4/6/07, Igor Laguardia [EMAIL PROTECTED] wrote: Prezados, Quero atualizar os dados de uma tabela, com as informações de outra tabela. O cenário é que tenho uma tabela que possui praticamente os mesmos dados que outra, e tenho um job que de 2 em 2 min atualiza os dados de uma na outra. Eu faço de uma maneira muito lenta, atualizo registro por registro, porem as tabelas possuiem a chave primaria identica, eu queria fazer algo mais dinamico, alguem pode me ajudar? -- [ ]'s Igor Laguardia - Pedras no caminho?Guardo todas, um dia vou construir um castelo. (Fernando Pessoa) [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Dúvida SQL Loader
Qual a versão do banco??? On 4/5/07, Clayton Rocha [EMAIL PROTECTED] wrote: Boa tarde a todos, Tenho um arquivo de texto mais ou menos no seguinte padrão: DATAINICIO DATAFIM HORAINICIO HORAFIM 01/03/2007 10/03/2007 10:00 9:00 01/02/2007 15/02/2007 15:00 16:30 01/01/2007 01/03/2007 12:00 11:00 Preciso fazer um sqlloader desse arquivo e como vou utilizar o tipo DATE para as datas, pensei em utilizar a própria coluna para as horas, mas para isso precisaria concatenar de alguma forma no processo. Alguém tem uma idéia de como posso fazer isso pelo loader? Pensei em algo do tipo: Arquivo CTL: APPEND (datainicio position((01:09)||position(xx_horainicio:yy_horainicio)) date, datafim position((xx_datafim:yy_datafim)||position(xx_horafim:yy_horafim)) date) Alguém saberia me dizer se é possivel algo assim, ou teria uma outra idéia? Grato, Clayton Rocha [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Duvida em Select com Index
Arnaldo, Se voce quer que seu result set venha em alguma ordem, voce NECESSITA usar o ORDER BY. É obrigatório e amplamente discutido na internet, inclusive o Jonathan Lewis escreveu uma artigo excelente sobre esse tema. http://jonathanlewis.wordpress.com/2007/03/05/ordering/ Outra coisa, hint de indice não é uma boa idéia, fiz um pequeno artigo sobre índices um tempinho atrás. http://mportes.blogspot.com/2005/05/ndices-falando-livremente.html No seu caso, (se estiver na versão 10g) um hint interessante para ser usado com ORDER BY seria o /*+ FIRST_ROWS(n) */ onde n é o número de linhas esperado para a consulta. Não há movimentação de parse quando o order by é usado, acho que voce quis dizer otimizador. O order by acontece na sua porção de memória (PGA) e, portanto, longe do parse. A última operação, na execução da query, é a ordenação. On 4/4/07, Arnaldo V. Scarin [EMAIL PROTECTED] wrote: Boa tarde a Todos, Sou novo no grupo e não sou DBA, sou Analista de Sistemas. Hoje eu estava debatendo com outras pessoas e me disseram que um Select feito com hint (forçando o Indice) pode não retornar o ResultSet em ordem se eu não usar um Order by, ou seja, se eu fizer o seguinte select: Select /*+ INDEX ( ENTIDADE PK_ENTIDADE4 ) */ cpfcgc, nome, apelido, datacadastro from entidade where cpfcgc between '2' and '2z' onde PK_Entidade4 é um indice somente do campo CPFCGC, poderá sair fora da ordem? A priori acho isso estranho, pois o indice (se eu não me engano o Oracle usa o formato b-tree), organiza as linhas de acordo com o campo indicado como chave do indice, e consequentemente o resultset sairia em ordem, mas em contra partida, se eu tenho que usar um order by eu estou forçando o parser do banco criar uma tabela temporaria para descarregar todos os resultados e depois executar um sort nesse resultset. Não seria um contrasenso isso? Obrigado, Arnaldo [As partes desta mensagem que não continham texto foram removidas] -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] bug... help
O que o alert diz? On 4/2/07, zero_br_2002 [EMAIL PROTECTED] wrote: Uso a query abaixo para trazer os dados de venda... ela funcionava sem nenhum problema até eu atualizar minha versao para 10.2.0.1.0, uso Oracle 64 no SLes 10 x86_64. Quando executo a query ele derruba minha conexao.. ORA-03114 alguem ja teve esse tipo de problema? O pior eh q nao posso fazer downgrade... select decode(grouping(pr.pro_descricao),1,'Total',n.nfs_numero_nota) as nfs_numero_nota, it.mov_sequencial, decode(grouping(pr.pro_descricao),0,pr.pro_descricao) as pro_descricao, decode(grouping(pr.uni_codg),0,pr.uni_codg) as uni_codg, decode(grouping(it.mov_qtdade),0,it.mov_qtdade) as mov_qtdade, round(decode(grouping(decode (n.nfs_modulo_origem_nota,'TRANSFERENCIA',it.mov_preco_unitario, it.mov_preco_unitario - it.mov_desconto_unitario) / decode (n.nfs_modulo_origem_nota,'VENDA COLIGADA',1.10,1.25)) * 0.88) / 0.93))),0, decode (n.nfs_modulo_origem_nota,'TRANSFERENCIA',it.mov_preco_unitario, it.mov_preco_unitario - it.mov_desconto_unitario) / decode (n.nfs_modulo_origem_nota,'VENDA COLIGADA',1.10,1.25)) * 0.88) / 0.93))),2) as mov_custo_medio_atu, sum(decode(n.nfs_modulo_origem_nota,'TRANSFERENCIA', (it.mov_preco_unitario * it.mov_qtdade), ((round(it.mov_preco_unitario - it.mov_desconto_unitario) / decode(n.nfs_modulo_origem_nota,'VENDA COLIGADA',1.10,1.25)) * 0.88) / 0.93),2)* it.mov_qtdade Custo_medio from itens_nota it, notas_de_saida n, produto pr, sufixo s, empresa e where it.pro_codg_interno = pr.pro_codg_interno and pr.suf_codg = s.suf_codg and it.nfs_sequencial = n.nfs_sequencial and it.mov_tipo_movto not in ('CM','DC','CA','RD','RO') and n.nfs_status in('N') and it.cst_codg in (select distinct t.cst_codg from tributacoes t where t.emp_codg = e.emp_codg and t.tri_aliq_final_subs != 0 and t.tri_agrega_ao_total_nf = 'N') and n.nfs_uf != e.emp_uf and n.nfs_dta_emissao_nota between :DATA_INICIAL and :DATA_FINAL and e.emp_codg = n.emp_codg and e.emp_codg = :EMP_CODG and n.cno_codg_natureza = :CNO_CODG group by rollup (n.nfs_numero_nota, it.mov_sequencial,pr.pro_descricao,pr.uni_codg,it.mov_qtdade,decode (n.nfs_modulo_origem_nota,'TRANSFERENCIA',it.mov_preco_unitario, it.mov_preco_unitario - it.mov_desconto_unitario) / decode (n.nfs_modulo_origem_nota,'VENDA COLIGADA',1.10,1.25)) * 0.88) / 0.93))) having (grouping(pr.uni_codg)) != 1 and (grouping(it.mov_qtdade)) != 1 and (grouping(pr.pro_descricao)) != 1 and (grouping(decode (n.nfs_modulo_origem_nota,'TRANSFERENCIA',it.mov_preco_unitario, it.mov_preco_unitario - it.mov_desconto_unitario) / decode (n.nfs_modulo_origem_nota,'VENDA COLIGADA',1.10,1.25)) * 0.88) / 0.93 != 1 or ((grouping(it.mov_sequencial)) = 1) -- or ((grouping(n.nfs_numero_nota)) = 0) order by n.nfs_numero_nota -- Marcio Portes Material Tecnico em Portugues - http://mportes.blogspot.com Practical Learning Oracle - http://mportes.blogspot.com/2006/02/practical-learning-oracle.html [As partes desta mensagem que não continham texto foram removidas]