Re: RES: Res: [oracle_br] Corrupção de dados
Você menciona que os selects retornam ok, então você consegue dar um: CREATE TABLE TESTE AS SELECT * FROM XX; 2011/4/26 Carlos Alfredo M. Menezes carlos.mene...@usinacoruripe.com.br Não colega, tentativa de export também dá o mesmo erro. Mas tentei vários SQL´s nesta mesma tabela e todos retornam sem problemas. Curioso. Att, Carlos Alfredo M. de Menezes Analista de Suporte Sr. (82) 3217-2828 / 9921-0603 -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de David Ricardo Enviada em: terça-feira, 26 de abril de 2011 11:00 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: Res: [oracle_br] Corrupção de dados Carlos, Você consegue exportar essa tabela apenas? Caso consiga exporta-la por completo, sugiro que o faça e recrie-a , para que ele realoque o objeto em outro segement block. Abraço Em 26 de abril de 2011 10:52, Carlos Alfredo M. Menezes carlos.mene...@usinacoruripe.com.br escreveu: Caro colega, bom dia. Obrigado pela dica, tentei fazer o procedimento, mas não estou tendo sucesso em fazer a visão v$database_block_corruption ser populada. Veja como fiz: sapdtc101:orasm0 2 rman target = / Recovery Manager: Release 10.2.0.4.0 - Production on Tue Apr 26 10:19:14 2011 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: SM0 (DBID=1149775909) RMAN backup validate check logical database; Starting backup at 26-APR-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=125 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=9 name=/oracle/SM0/sapdata2/sr3_6/sr3.data6 input datafile fno=00012 name=/oracle/SM0/sapdata2/sr3_9/sr3.data9 input datafile fno=4 name=/oracle/SM0/sapdata2/sr3_1/sr3.data1 input datafile fno=6 name=/oracle/SM0/sapdata2/sr3_3/sr3.data3 input datafile fno=5 name=/oracle/SM0/sapdata2/sr3_2/sr3.data2 input datafile fno=8 name=/oracle/SM0/sapdata2/sr3_5/sr3.data5 input datafile fno=7 name=/oracle/SM0/sapdata2/sr3_4/sr3.data4 input datafile fno=00010 name=/oracle/SM0/sapdata2/sr3_7/sr3.data7 input datafile fno=00011 name=/oracle/SM0/sapdata2/sr3_8/sr3.data8 input datafile fno=00023 name=/oracle/SM0/sapdata2/sr3_12/sr3.data12 input datafile fno=00022 name=/oracle/SM0/sapdata2/sr3_11/sr3.data11 input datafile fno=00013 name=/oracle/SM0/sapdata2/sr3_10/sr3.data10 input datafile fno=00014 name=/oracle/SM0/sapdata3/sr3701_1/sr3701.data1 input datafile fno=00015 name=/oracle/SM0/sapdata3/sr3701_2/sr3701.data2 input datafile fno=00016 name=/oracle/SM0/sapdata3/sr3701_3/sr3701.data3 input datafile fno=00017 name=/oracle/SM0/sapdata3/sr3701_4/sr3701.data4 input datafile fno=2 name=/oracle/SM0/sapdata1/undo_1/undo.data1 input datafile fno=00024 name=/oracle/SM0/sapdata2/sr3_13/sr3.data13 input datafile fno=00019 name=/oracle/SM0/sapdata4/sr3db_1/sr3db.data1 input datafile fno=00020 name=/oracle/SM0/sapdata4/sr3db_2/sr3db.data2 input datafile fno=00021 name=/oracle/SM0/sapdata4/sr3db_3/sr3db.data3 input datafile fno=1 name=/oracle/SM0/sapdata1/system_1/system.data1 input datafile fno=3 name=/oracle/SM0/sapdata1/sysaux_1/sysaux.data1 input datafile fno=00018 name=/oracle/SM0/sapdata4/sr3usr_1/sr3usr.data1 channel ORA_DISK_1: backup set complete, elapsed time: 00:12:26 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current control file in backupset including current SPFILE in backupset channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02 Finished backup at 26-APR-11 Após isso, continua sem registrar nenhuma corrupção lógica: SQL select * from v$database_block_corruption; no rows selected Mas se tento fazer o validate na tabela com problemas: SQL analyze table sapsr3.snap validate structure; analyze table sapsr3.snap validate structure * ERROR at line 1: ORA-08103: object no longer exists Mas alguma sugestão?? Att, Carlos Alfredo M. de Menezes Analista de Suporte Sr. -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de David Ricardo Enviada em: terça-feira, 26 de abril de 2011 09:52 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: Res: [oracle_br] Corrupção de dados Carlos bom dia, tudo bem? Já solucionou seu problema? Caso não tenha solucionado ainda, dê uma passadinha neste endereço, lá tem um passo a passo de como usar o BMR via RMAN, talvez isso lhe ajude a elucidar algumas coisas. http://databaseguard.blogspot.com/2009/08/rman-bmr-block-media-recover .html No mais se precisar de ajuda, meu email é drb.rica...@gmail.com Abraço.
Re: [oracle_br] Instância parada
Marcelo, nao eh preciso ter uma instancia para rodar o create pfile from spfile; siga as recomendacoes do ivan do jeito que seu banco esta que vai funcionar abs. 2010/8/16 Ivan Ricardo Schuster ivanr...@gmail.com Marcelo Por padrão, no windows o spfile fica no seguinte caminho: ORACLE_HOME/database/spfileSID.ora Confirme os valores das variáveis de ambiente ORACLE_SID e ORACLE_HOME. Ex: C:\echo %ORACLE_SID% orcl Verifique se o arquivo SPFILE existe. No SQLPLUS use o comando (substitua as variáveis): create pfile='c:\temp\pfile.txt' from spfile='ORACLE_HOME/database/spfileSID.ora'; Verifique se o pfile gerado possui algum parametro de cluster, por exemplo cluster_database, cluster_database_instances, etc e apague ou comente. Faça o caminho inverso: create spfile from pfile='c:\temp\pfile.txt'; Tente iniciar o banco normalmente. 2010/8/16 Marcelo Porto marcelo.po...@ymail.commarcelo.porto%40ymail.com : No alert não há entrada nenhuma após o shutdown feito ontem a noite, isto é, nem começar a inicialização do banco sequer ele faz. Agora a pouco tentei incializar o banco através do ORADIM com este comando: E:\oracle\product\10.2.0\DEDIC\bin\oradim.exe -startup -sid dedic -usrpwd * -log oradim.log -nocheck 0 E foi regado um outro alert.log mas não no que estava sendo utilizado antes e com ele surgiu a seguinte entrada: Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc Mon Feb 08 07:48:57 2010 ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production Windows NT Version V5.2 Service Pack 2 CPU : 8 - type 8664, 2 Physical Cores Process Affinity: 0x Memory (Avail/Total): Ph:15270M/16378M, Ph+PgF:17394M/17814M Instance name: dedic Redo thread mounted by this instance: 0 none Oracle process number: 0 Windows thread id: 2252, image: ORACLE.EXE *** 2010-02-08 07:48:57.468 = begin preloading .sym files = end preloading .sym files Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc Mon Feb 08 08:09:26 2010 ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production Windows NT Version V5.2 Service Pack 2 CPU : 8 - type 8664, 2 Physical Cores Process Affinity: 0x Memory (Avail/Total): Ph:15168M/16378M, Ph+PgF:17266M/17814M Instance name: dedic Redo thread mounted by this instance: 0 none Oracle process number: 0 Windows thread id: 560, image: ORACLE.EXE *** 2010-02-08 08:09:26.515 = begin preloading .sym files = end preloading .sym files Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc Tue Feb 09 09:57:12 2010 ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production Windows NT Version V5.2 Service Pack 2 CPU : 8 - type 8664, 2 Physical Cores Process Affinity: 0x Memory (Avail/Total): Ph:15583M/16378M, Ph+PgF:17635M/17814M Instance name: dedic Redo thread mounted by this instance: 0 none Oracle process number: 0 Windows thread id: 1560, image: ORACLE.EXE *** 2010-02-09 09:57:12.796 = begin preloading .sym files = end preloading .sym files Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc Fri Feb 12 12:00:50 2010 ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production Windows NT Version V5.2 Service Pack 2 CPU : 8 - type 8664, 2 Physical Cores Process Affinity: 0x Memory (Avail/Total): Ph:15539M/16378M, Ph+PgF:17590M/17814M Instance name: dedic Redo thread mounted by this instance: 0 none Oracle process number: 0 Windows thread id: 1880, image: ORACLE.EXE *** 2010-02-12 12:00:50.796 = begin preloading .sym files = end preloading .sym files Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc Fri Feb 12 12:22:44 2010 ORACLE V10.2.0.4.0 - 64bit Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production Windows NT Version V5.2 Service Pack 2 CPU : 8 - type 8664, 2 Physical Cores Process Affinity: 0x Memory (Avail/Total): Ph:15524M/16378M, Ph+PgF:17580M/17814M Instance name: dedic Redo thread mounted by this instance: 0 none Oracle process number: 0 Windows thread id: 1992, image: ORACLE.EXE *** 2010-02-12 12:22:44.890 = begin preloading .sym files = end preloading .sym files Dump file e:\oracle\product\10.2.0\dedic\rdbms\trace\dedic_ora_0.trc
Re: [oracle_br] Oracle Hint
Complementando o que o amigo Raul disse, a sua sintaxe esta errada, ou seja, o Oracle desconsidera esse HINT, para ele é apenas um comentario... e sendo que você tem histogramas coletados, ele escolhe o uso de indice de acordo com o caso, por isso a situação muda de acordo com o valor do cd_situacao_arquivo... não tem nada a ver com o hint, que no seu caso nao existe... para forcar o uso de indice sempre nessa querie, apenas mude a sua sintaxe , naum existe o hint INDEX_RS, mas sim INDEX 2010/4/15 Raul Francisco Costa F. de Andrade, DBA raulf...@gmail.com Caro amigo A tabela citada deve ter histogramas coletados provavelmente, sendo assim o número 1 deve ter poucas vezes na tabela, já o número 3 deve ter mais. Sendo assim, através do histograma o otimizador acredita ser melhor (e provavelmente será) ler a tabela toda ao invés de utilizar o índice. A sintaxe da sua hint está meio estranha também! tente fazer: select /*+ index(owner.tabela index_name) */ from owner.tabela; Em 15 de abril de 2010 13:54, Eduardo eduardo.pa...@gmail.com escreveu: Senhores, eu tenho um select que possui 2 custos mudando um parametro no where: Gostaria de saber porque ele está usando o index somente quando o cd_situacao_arquivo é 1, já tentei usar o hint para ele usar o indice mas ele teima em fazer full table scan. Tem solução isso? ### set autotrace traceonly explain; SELECT /* +INDEX_rs IX_FK_ARQ_DIV_SIT_ARQ */ ad.sg_ue, ad.cd_arquivo FROM arquivo_divulgacao ad WHERE ad.cd_situacao_arquivo = 3; -- Execution Plan -- SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=11 Card=4 K Bytes=104 K) 1 PARTITION LIST SINGLE (Cost=11 Card=4 K Bytes=104 K) 2 1 TABLE ACCESS FULL ADMELEGERAL.ARQUIVO_DIVULGACAO (Cost=11 Card=4 K Bytes=104 K) ### set autotrace traceonly explain; SELECT /* +INDEX_rs IX_FK_ARQ_DIV_SIT_ARQ */ ad.sg_ue, ad.cd_arquivo FROM arquivo_divulgacao ad WHERE ad.cd_situacao_arquivo = 1; Execution Plan -- SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=2 Card=1 Bytes=22) 1 TABLE ACCESS BY GLOBAL INDEX ROWID ADMELEGERAL.ARQUIVO_DIVULGACAO (Cost=2 Card=1 Bytes=22) 2 1 INDEX RANGE SCAN ADMELEGERAL.IX_FK_ARQ_DIV_SIT_ARQ (Cost=1 Card=1) -- -- Eduardo -- -- Raul Francisco da Costa Ferreira de Andrade DBA - OCA - Oracle Certified Associate COBIT Foundation 4.1 Fone: (41)8855-8874 Brt email: raulf...@gmail.com Skype: raul.andrade www.clickdba.com Não somos seres humanos passando por uma experiência espiritual Somos seres espirituais passando por uma experiência humana. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -- Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Invitation to connect on LinkedIn
LinkedIn MARCELO CAUDURO requested to add you as a connection on LinkedIn: -- Carmine Andre, I'd like to add you to my professional network on LinkedIn. - MARCELO Accept invitation from MARCELO CAUDURO http://www.linkedin.com/e/hWdLbEQovS9WxUla2SAnQ1WHcdNiQNfnEPkab4_YW6T/blk/I1883254811_2/1BpC5vrmRLoRZcjkkZt5YCpnlOt3RApnhMpmdzgmhxrSNBszYOnP4Ne3gRczcUe359bTljsz5IrQBqbPoPdjAPd38Qcj4LrCBxbOYWrSlI/EML_comm_afe/ View invitation from MARCELO CAUDURO http://www.linkedin.com/e/hWdLbEQovS9WxUla2SAnQ1WHcdNiQNfnEPkab4_YW6T/blk/I1883254811_2/39vcj4Ud3kOcPwUckALqnpPbOYWrSlI/svi/ -- DID YOU KNOW you can use your LinkedIn profile as your website? Select a vanity URL and then promote this address on your business cards, email signatures, website, etc http://www.linkedin.com/e/ewp/inv-21/ -- (c) 2010, LinkedIn Corporation [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Invitation to connect on LinkedIn
LinkedIn I'd like to add you to my professional network on LinkedIn. - MARCELO MARCELO CAUDURO DBA at Inmetrics Campinas Area, Brazil Confirm that you know MARCELO CAUDURO https://www.linkedin.com/e/isd/1142455014/lVhwPKw7/ -- (c) 2010, LinkedIn Corporation [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Invitation to connect on LinkedIn
LinkedIn I'd like to add you to my professional network on LinkedIn. - MARCELO MARCELO CAUDURO DBA at Inmetrics Campinas Area, Brazil Confirm that you know MARCELO CAUDURO https://www.linkedin.com/e/isd/1142455009/2ldvWUWm/ -- (c) 2010, LinkedIn Corporation [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Permitir que outro usuário veja seu job ao fazer select na all_jobs e o execute
up. On 10/8/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Alguem ? On 10/6/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Pessoal, Eu criei uma procedure com um usuário X. connect system/manager; create user X identified by X; grant connect,resource,create public synonym to X; create user Y identified by Y; grant connect,resource to Y; connect X/X; create or replace procedure teste123 as a number; begin a:=1; end; / Depois disso criei com o mesmo usuário um job que chama essa procedure. connect X/X; declare i binary_integer; begin dbms_job.submit(job = i,what = 'BEGIN teste123; END;',next_date = (trunc(sysdate,'hh24')+12/24),interval = 'sysdate+1/24'); end; / commit / quando eu dou um select na user_jobs com esse usuário ele retorna connect X/X; select * from user_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- 228 X X X 6/10/2006 1 16:43:25 6/10/2006 1 17:43:25 0 N sysdate+1/24 0 BEGIN teste123; END; NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENC 010200020100 0 quando eu dou um select na all_jobs com esse usuário ele retorna connect X/X select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- 228 X X X 6/10/2006 1 16:43:25 6/10/2006 1 17:43:25 0 N sysdate+1/24 0 BEGIN teste123; END; NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENC 010200020100 0 Mas eu preciso que um usuário Y execute esse job. Assim, com esse usuário Y eu dou um select em all_jobs, mas a consulta não retorna nada. connect Y/Y; select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- Com o usuário X, crio um sinonimo público para a procedure chamado pelo Job. connect X/X; create public synonym teste123 for teste123; Dou grant dessa procedure para Y. connect X/X; grant execute on teste123 to Y; Mas , como o usuário Y, não consigo ver nada ainda na all_jobs. connect Y/Y select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV
[oracle_br] Permitir que outro usuário veja seu job ao fazer select na all_jobs e o execute
Pessoal, Eu criei uma procedure com um usuário X. connect system/manager; create user X identified by X; grant connect,resource,create public synonym to X; create user Y identified by Y; grant connect,resource to Y; connect X/X; create or replace procedure teste123 as a number; begin a:=1; end; / Depois disso criei com o mesmo usuário um job que chama essa procedure. connect X/X; declare i binary_integer; begin dbms_job.submit(job = i,what = 'BEGIN teste123; END;',next_date = (trunc(sysdate,'hh24')+12/24),interval = 'sysdate+1/24'); end; / commit / quando eu dou um select na user_jobs com esse usuário ele retorna connect X/X; select * from user_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- 228 X X X 6/10/2006 1 16:43:25 6/10/2006 1 17:43:25 0 N sysdate+1/24 0 BEGIN teste123; END; NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENC 010200020100 0 quando eu dou um select na all_jobs com esse usuário ele retorna connect X/X select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- 228 X X X 6/10/2006 1 16:43:25 6/10/2006 1 17:43:25 0 N sysdate+1/24 0 BEGIN teste123; END; NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENC 010200020100 0 Mas eu preciso que um usuário Y execute esse job. Assim, com esse usuário Y eu dou um select em all_jobs, mas a consulta não retorna nada. connect Y/Y; select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- -- -- Com o usuário X, crio um sinonimo público para a procedure chamado pelo Job. connect X/X; create public synonym teste123 for teste123; Dou grant dessa procedure para Y. connect X/X; grant execute on teste123 to Y; Mas , como o usuário Y, não consigo ver nada ainda na all_jobs. connect Y/Y select * from all_jobs; JOB LOG_USER PRIV_USER SCHEMA_USERLAST_DATE LAST_SEC THIS_DATE THIS_SEC NEXT_DATE NEXT_SEC TOTAL_TIME BROKEN INTERVAL FAILURES WHAT NLS_ENV MISC_ENV INSTANCE -- -- -- -- --- --- --- -- -- --
[oracle_br] Re: Usuario não acessa nada via Pl/Sql mas acessa via Sql/Plus
Alguem ? On 9/4/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Alguem ? On 9/4/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Pessoal, tenho um usuario que não acessa nada via pl/sql developer mas via sql/plus sim, é muito estranho . eu sei que alguem talvez diga : Ah isso é configuracao do Developer mas isso soh acontece em uma instancia. e a tabela product_profile esta vazia Alguem imagina o que possa ser ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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
[oracle_br] Re: Usuario não acessa nada via Pl/Sql mas acessa via Sql/Plus
Se eu der role de DBA funciona On 9/5/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Alguem ? On 9/4/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Alguem ? On 9/4/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Pessoal, tenho um usuario que não acessa nada via pl/sql developer mas via sql/plus sim, é muito estranho . eu sei que alguem talvez diga : Ah isso é configuracao do Developer mas isso soh acontece em uma instancia. e a tabela product_profile esta vazia Alguem imagina o que possa ser ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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
[oracle_br] Re: Describe não mostra nada e aplicação centura não acessa objeto - Objeto tem de ser removido e dai ....
up On 8/16/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Pessoal, estou com um grande problema, aplicação (em centura) não consegue acessar algumas procedures especificas da base embora tenha grant para a mesma. Quando vci no sqlplus e da-se um describe nela , nào volta nenhum parametro. Dai temos de dropar a procedure e cria-la de novo. Dai a aplicacao acessa a procedure e o describe retorna os parametros ou assinatura. Tanto em 8i como 9i. Alguem ja se deparou com isso ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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
[oracle_br] Describe não mostra nada e aplicação centura não acessa objeto - Objeto tem de ser removido e dai ....
Pessoal, estou com um grande problema, aplicação (em centura) não consegue acessar algumas procedures especificas da base embora tenha grant para a mesma. Quando vci no sqlplus e da-se um describe nela , nào volta nenhum parametro. Dai temos de dropar a procedure e cria-la de novo. Dai a aplicacao acessa a procedure e o describe retorna os parametros ou assinatura. Tanto em 8i como 9i. Alguem ja se deparou com isso ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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] Dirty buffers inspected
O que eu queria é o seguinte é conseguir tirar um diagnostico... por exemplo, tenho uma maquina X , dai eu tenho q primeiro fazer isso e isso ? Por exemplo, se os Hits de Buffers estiverem baixos eu devo mexer no DB_CACHE_SIZE eu queria conseguir generalizar ou saber o que é importante em cada caso (linux,windows, ata) para conseguir resolver esse problema em qualquer hardware que seja... nao nesse especifico como uma formula Eu vi sugestoes na documentacao de alterar o LOG_CHECKPOINT_INTERVAL... mas eu queria a ajuda de vocês que são mais experientes no assuntos On 5/10/06, Luis Claudio Arruda Figueiredo [EMAIL PROTECTED] wrote: Marcelo eu acho que seu banco é 9i correto?! Mas não temos infos sobre s.o (windows,Linux,Unix) formatação do file system, hardware (tipos de disco, controladora memoria e processador) ajudariam a clarear um pouco as coisas já que latches não são problemas simples de resolver sem um conjunto de informações. Utilizar parametros não docs eu acho meio arriscado antes de fazer uma análise mais completa e alguns que você citou são obsoletos. Esse problema pode ser relacionado a freelist. verifique a nota Note:62172.1 que eu acredito que seja mais adequada ao seu caso. abs, Luis Figueiredo. --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Pesquisando um pouco verifiquei que tenho de obter sempre um valor tendendo a zero de dirty buffers inspected, afinal, pelo que entendi, esses valores são buffers ja gravados em disco mas ainda não liberados Estou tentado diminuir esse número, mas como a maquina nào é multiprocessada, eu não podia aumentar ou colocar mais um processo de DBWR, então eu fiz os seguintes ajustes : alter system set dbwr_io_slaves = 10 scope=spfile; alter system set DISK_ASYNCH_IO=false scope=spfile; Para ver ser o DBWR ficava mais eficiente, mas isso não ajudou Não sei se o fato de eu ter colocado um valor alto para o dbwr_io_slaves tenha prejudicado, estou pensando em mudar para 4. Lendo alguns documentos verifiquei que no Oracle 8i pode ser alterado o parametro _DB_BLOCK_WRITE_BATCH e no 9i/10g o parametro _DB_WRITER_MAX_WRITES para ajudar. Mas não tenho encontrado ajuda para saber um valor a ser setado. Alguem conhece algum procedimento em relacao a esses parametros, alguma formula, ou alguma outra maneira de baixar os dirty buffers inspected ? Pensei em sintonizart melhor os checkpoints com os parametros FAST_START_MTTR_TARGET , FAST_START_IO_TARGE... , seria uma boa opçõa ? Desde já agradeço, Marcelo Cauduro. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE var lrec_target=_top;var lrec_URL=new Array();lrec_URL[1]= http://br.ard.yahoo.com/SIG=12ff5f45m/M=396559.7942981.9356151.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1147219721/A=3634211/R=0/id=flashurl/SIG=15494h0pu/*http://lt.dell.com/lt/lt.aspx?CID=12387LID=335659DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs ;var lrec_flashfile= http://br.i1.yimg.com/br.yimg.com/i/br/ads7/080506_y300x250_maio01_dhs_dimension5150.swf?clickTAG=_javascript_:LRECopenWindow(1)http://br.i1.yimg.com/br.yimg.com/i/br/ads7/080506_y300x250_maio01_dhs_dimension5150.swf?clickTAG=_javascript_:LRECopenWindow%281%29 ;var lrec_altURL= http://br.ard.yahoo.com/SIG=12ff5f45m/M=396559.7942981.9356151.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1147219721/A=3634211/R=1/id=altimg/SIG=15494h0pu/*http://lt.dell.com/lt/lt.aspx?CID=12387LID=335659DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs ;var lrec_altimg= http://br.i1.yimg.com/br.yimg.com/i/br/ads7/080506_y300x250_maio01_dhs_dimension5150.gif ;var lrec_width=300;var lrec_height=250; - 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 Termos do Serviço do Yahoo
[oracle_br] LOG_CHECKPOINT_INTERVAL
Existe alguma formula para definir esse parametro ? Ele interterfere no tempo de checkpoint, eu sei que o ORACLE 10g tem parametros por exemplo (na versao Entreprise) que administrarm o Checkpoint com TARGETS mas eu queria saber como definir esse parametro numa versao Standard do 10g e no 8i/9i... Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE 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 Termos do Serviço do Yahoo!.
[oracle_br] Write Requests - V$sysstat - Evento
Pessoal, quero realizar a seguinte consulta para identificar Dirty Blocks, mas esse evento eu não acho na V$SYSSTAT... ja olehi no 8i, 9i e 10g e nada ... por favor... alguem pode me ajudar Dirty Queue Length SELECT SUM(DECODE(name,'summed dirty queue length',value)) / SUM(DECODE(name,'write requests',value)) Average Write Queue Length FROM v$sysstat WHERE name IN ( 'summed dirty queue length','write requests') AND value 0; [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE 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 Termos do Serviço do Yahoo!.
[oracle_br] Dirty buffers inspected
Pesquisando um pouco verifiquei que tenho de obter sempre um valor tendendo a zero de dirty buffers inspected, afinal, pelo que entendi, esses valores são buffers ja gravados em disco mas ainda não liberados Estou tentado diminuir esse número, mas como a maquina nào é multiprocessada, eu não podia aumentar ou colocar mais um processo de DBWR, então eu fiz os seguintes ajustes : alter system set dbwr_io_slaves = 10 scope=spfile; alter system set DISK_ASYNCH_IO=false scope=spfile; Para ver ser o DBWR ficava mais eficiente, mas isso não ajudou Não sei se o fato de eu ter colocado um valor alto para o dbwr_io_slaves tenha prejudicado, estou pensando em mudar para 4. Lendo alguns documentos verifiquei que no Oracle 8i pode ser alterado o parametro _DB_BLOCK_WRITE_BATCH e no 9i/10g o parametro _DB_WRITER_MAX_WRITES para ajudar. Mas não tenho encontrado ajuda para saber um valor a ser setado. Alguem conhece algum procedimento em relacao a esses parametros, alguma formula, ou alguma outra maneira de baixar os dirty buffers inspected ? Pensei em sintonizart melhor os checkpoints com os parametros FAST_START_MTTR_TARGET , FAST_START_IO_TARGE... , seria uma boa opçõa ? Desde já agradeço, Marcelo Cauduro. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE 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 Termos do Serviço do Yahoo!.
[oracle_br] performance pks com tamanhos diferentes
Pessoal, Uma dúvida : Se eu tiver FK's com o mesmo tipo de dados... mas com o tamanho diferente... isso pode me gerar problema d performance? OBS -- eh logico q isso eh uma pessima modelagem... mas levando em consideracao apenas questoes performaticas Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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 Termos do Serviço do Yahoo!.
[oracle_br] FBI e Rebuild no CBO
Quando criamos uma coluna indexada com função, o Oracle cria uma estrutura interna onde para cada valor possivel na funcao ele tem uma resultado. Como ela é deterministica isso é possível. Mas aí é que esta o problema. tenho uma função que se você passar um determinada valor , ela sempre vai retornar o mesmo valor se , e somente se , uma outra coluna de uma outra tabela contiver um determinado valor, agora, se essa coluna de outra tabela for alterada, o valor que a funcão retorna deve ser outro. Mas o que esta acontencedo ? Quando eu passo o valor para a FBI ela retorna um valor X, se eu altero a coluna da outra tabela que devia fazer a FBI retorna Y ao inves de X, ela ainda retorna X, na verdade ela retorna Y apenas se, e somente se, eu der uma rebuild no index. Como solucionar esse problema sem ter que ficar dando rebuild nos indices ? Oracle 8i e 9i. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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 Termos do Serviço do Yahoo!.
[oracle_br] Migração RBO CBO e Coluna com função muito mais usada no CBO - 70 mil para 250 mil
Estou migrando de RBO para CBO Supondo que no meu caso seja impossivel fazer um FBI. Quando faço a querie utilizando regra ela é usada 70 mil vezes, quando uso Custo, na mesma querie com os mesmos parametros, ela é utilizada 250 mil vezes. Tem algum parametro da Instancia que deve ser alterado para que isso não aconteça ? Como calcular o custo dessa função ? Quais são as alternativas viáveis ? OBSERVACAO - digo ser inviavel fazer FBI, pois acredito que venha haver uma solução para meu outro problema enviado no email com o Assunto - FBI e Rebuild no CBO Oracle 8i e 9i. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Yahoo! Grupos, um serviço oferecido por: PUBLICIDAD 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 Termos do Serviço do Yahoo!.
Re: [oracle_br] Superando o NVL - Solucao melhor - http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm - Problem 6
Alguem tem uma sugestão ? On 4/18/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Mas como fazer um FBI com um valor que seria uma variavel de bind ? Eu uso CBO, teria de forçar o Hint mesmo assim ? On 4/18/06, Anderson Haertel Rodrigues [EMAIL PROTECTED] wrote: Marcelo, Uma solução baseada em FBI deve resolver o teu problema, certo? create index nomeindex on tabela (nvl(nomecoluna,'null')); Só que tu terás que modificar a tua Query e forçar (através de HINT) o uso do índice criado acima. Ok? Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Florianópolis/SC --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: Tudo bem, mas eu queria saber uma outra solução... esta não estão muito satisfatórias... On 4/18/06, Rubens Bernardes [EMAIL PROTECTED] wrote: Para vc analisar melhor performance vc deveria fazer um trace entre as opções de query que vc encontrar eu vejo as seguintes 1 (versão atual) where campo = nvl ( variavel, campo) 2 -- sql dinâmico todas tem vantagens e desvantagens --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Pessoal, como obter uma performance melhor nos casos onde você tem a seguiten situacao where campo = nvl ( variavel, campo) ou seja, vc pode enviar um valor na variavel, dai vc vai querer comparar o campo sempre a esse valor, ja se vc naum passar nada, ou seja, variavel nula ele usa o valor do campo mesmo para fazer a comparacao, desta forma sempre true. sei de uma maneira para deixar o caso acima melhor ... ... where campo = variavel unionl ... where variavel = null mas queria outra alternativa sem ter que reescrever a querie... e algo mais performatico também (se é que existe) vi algo interessante no site : http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm fala de SELECT account_name, trans_date, amount_FROM transaction_WHERE account_name = NVL(:acc_name, account_name); Rather, you should follow this example: SELECT account_name, trans_date, amount _FROM transaction_ WHERE account_name LIKE NVL(:acc_name, '%'); substituir usando o like... mas eu estou usando valores numericos... e pelo que parece a dica acima nao deu certo, alguem tem uma solucao melhor e que funcione ? Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. - 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 Termos do Serviço do Yahoo!. ___ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *Links do
Re: [oracle_br] Re: Valor máximo do MULTIBLOCK_READ
Nesse caso WAIT #3: nam='db file scattered read' ela= 27789 p1=24 p2=10 p3=36 Qual seria então o valor ideal ja que o I/o maximo é 36kb ? On 4/18/06, jlchiappa [EMAIL PROTECTED] wrote: Desconheço bugs pra isso, dá uma checada no metalink pra sua versão mas acho que não vai ter não, é uma funcionalidade bem antiga do db. O impacto que vc poderá ter é que o CBO vai pensar que o full table scan ficou mais barato, pode ser que em algum SQL ele passe a dar preferência pra full table scan, mas isso vc corrige com os params de optimizer_nn, principalmente o optimizer_index_cost_adj (fazendo o índice ficar mais barato vc deverá ver muito menos table scans), teste aí seus princiopais SQLs antes de mudar em produção []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Thiago Lazzarotto [EMAIL PROTECTED] escreveu Fiz o teste aqui e o valor máximo que obtive foi 128 mesmo colocando o parametro para 512 por exemplo... Acho que vou ter um grande ganho já que hj o meu valor é 8. Existe algum problema em aumentar esse valor? Pode haver algum outro tipo de impacto negativo na performance? Algum bug conhecido? Obrigado. jlchiappa escreveu: Thiago, não achei a msg que enviei originalmente, mas talvez tenha havido erro/omissão de minha parte, segue exemplo completo (chiappa é o usuário dba, e scott é o usuário comum) : [EMAIL PROTECTED]:SQLcreate tablespace TS_EXT_10 datafile '/u2/oradata/COBPROD/data01/ts_ext_10_01.dbf' size 100M 2 extent management local uniform size 10m nologging; Tablespace criado. [EMAIL PROTECTED]:SQLalter user scott quota unlimited on TS_EXT_10; Usuário alterado. scott:SQLcreate table TAB_TESTE tablespace TS_EXT_10 as (select * from all_objects); Tabela criada. scott:SQLBEGIN 2 for i in 1..200 loop 3 insert into TAB_TESTE (select * from all_objects); 4 commit; 5 end loop; 6* END; / scott:SQL commit; scott:SQL alter session set db_file_multiblock_read_count=128; Sessão alterada. [EMAIL PROTECTED]:SQLselect sid, serial# from v$session where username='SCOTT'; SID SERIAL# --- 625266 1 linha selecionada. [EMAIL PROTECTED]:SQLexec sys.dbms_system.set_ev(62, 5266, 10046, 12, ''); Procedimento PL/SQL concluído com sucesso. scott:SQL select /*+ FULL */ * FROM TAB_TESTE; scott:SQL exit olhar dentro do arquivo .trc gerado : sid=PRD:/u1/app/oracle/admin/PRD/udumpgrep -i 'db file' prd_ora_26020.trc WAIT #3: nam='db file scattered read' ela= 27789 p1=24 p2=10 p3=36 Note que o evento de table scan se chama 'db file scattered read', e não 'sequential', como está na msg. Caso vc não saia de 8 blocos no multiblock read reproduzindo o exemplo acima, duas possibilidades aí : a) na maioria dos unix há um parâmetro (MAXPHYS ou similar) que controla o tamanho máximo de I/O, talvez erradamente ele deve estar como 64 Kb (que corresponde a 8 blocos de 8Kb) - digo erradamente porque na MAIORIA esmagadora dos hardwares modernos se consegue mais q isso... b) o seu volume de disco tem stripping de 64 Kb : quando vc cria um volume (principalmente num array de discos) vc entre outras coisas informa o stripping , ie, qual o mínimo de I/O que será feito em cada acesso, se foi informado 64 Kb, é isso que vc obterá []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Thiago Lazzarotto [EMAIL PROTECTED] escreveu Senhores... Eu tenho definido no meu banco o db_file_multiblock_read_count = 8. Eu fiz o teste que o chiappa passou para ver qual o valor máximo para ser definido no meu parâmetro... Acontece que o valor é sempre 8. Daí surgiu a minha dúvida: esse é o valor máximo que o SO/Hardware suporta ou ele está usando esse valor ao máximo por causa do parâmetro já setado? Meu banco é 8.1.7.4 HPUX 11.11 Segue o teste do chiappa. Existem outras maneiras, mas como normalmente isso é uma quantidade de blocos que totaliza 1Mb, ou coisa do tipo, pra vc saber é testar, vc cria uma tablespace LMT uniform size de 10Mb, cria nela uma tabela qquer com PCTFREE 1 PCTUSED 99 e com várias centenas de milhares de linhas, e faz um trace 10046 level 12 de uma sessão fazendo SELECT /*+ FULL */ * from nomedatabela, isso resulta num arquivo .TRC que entre muitas outras vai ter linhas do tipo : WAIT #3: nam='db file scattered read' ela= 249287 p1=41 p2=4234 p3=nnn nnn é a quantidade de blocos que ele pôde ler duma vez, db_file_multiblock_read_count deve ter o maior dos nnn que vc achar no arquivo. Obrigado. Thiago. -- Atenção! As
[oracle_br] Superando o NVL - Solucao melhor - http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm - Problem 6
Pessoal, como obter uma performance melhor nos casos onde você tem a seguiten situacao where campo = nvl ( variavel, campo) ou seja, vc pode enviar um valor na variavel, dai vc vai querer comparar o campo sempre a esse valor, ja se vc naum passar nada, ou seja, variavel nula ele usa o valor do campo mesmo para fazer a comparacao, desta forma sempre true. sei de uma maneira para deixar o caso acima melhor ... ... where campo = variavel unionl ... where variavel = null mas queria outra alternativa sem ter que reescrever a querie... e algo mais performatico também (se é que existe) vi algo interessante no site : http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm fala de SELECT account_name, trans_date, amount_FROM transaction_WHERE account_name = NVL(:acc_name, account_name); Rather, you should follow this example: SELECT account_name, trans_date, amount _FROM transaction_ WHERE account_name LIKE NVL(:acc_name, '%'); substituir usando o like... mas eu estou usando valores numericos... e pelo que parece a dica acima nao deu certo, alguem tem uma solucao melhor e que funcione ? Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Superando o NVL - Solucao melhor - http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm - Problem 6
Tudo bem, mas eu queria saber uma outra solução... esta não estão muito satisfatórias... On 4/18/06, Rubens Bernardes [EMAIL PROTECTED] wrote: Para vc analisar melhor performance vc deveria fazer um trace entre as opções de query que vc encontrar eu vejo as seguintes 1 (versão atual) where campo = nvl ( variavel, campo) 2 -- sql dinâmico todas tem vantagens e desvantagens --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Pessoal, como obter uma performance melhor nos casos onde você tem a seguiten situacao where campo = nvl ( variavel, campo) ou seja, vc pode enviar um valor na variavel, dai vc vai querer comparar o campo sempre a esse valor, ja se vc naum passar nada, ou seja, variavel nula ele usa o valor do campo mesmo para fazer a comparacao, desta forma sempre true. sei de uma maneira para deixar o caso acima melhor ... ... where campo = variavel unionl ... where variavel = null mas queria outra alternativa sem ter que reescrever a querie... e algo mais performatico também (se é que existe) vi algo interessante no site : http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm fala de SELECT account_name, trans_date, amount_FROM transaction_WHERE account_name = NVL(:acc_name, account_name); Rather, you should follow this example: SELECT account_name, trans_date, amount _FROM transaction_ WHERE account_name LIKE NVL(:acc_name, '%'); substituir usando o like... mas eu estou usando valores numericos... e pelo que parece a dica acima nao deu certo, alguem tem uma solucao melhor e que funcione ? Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. - 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 Termos do Serviço do Yahoo!. ___ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos
Re: [oracle_br] Superando o NVL - Solucao melhor - http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm - Problem 6
Mas como fazer um FBI com um valor que seria uma variavel de bind ? Eu uso CBO, teria de forçar o Hint mesmo assim ? On 4/18/06, Anderson Haertel Rodrigues [EMAIL PROTECTED] wrote: Marcelo, Uma solução baseada em FBI deve resolver o teu problema, certo? create index nomeindex on tabela (nvl(nomecoluna,'null')); Só que tu terás que modificar a tua Query e forçar (através de HINT) o uso do índice criado acima. Ok? Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Florianópolis/SC --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: Tudo bem, mas eu queria saber uma outra solução... esta não estão muito satisfatórias... On 4/18/06, Rubens Bernardes [EMAIL PROTECTED] wrote: Para vc analisar melhor performance vc deveria fazer um trace entre as opções de query que vc encontrar eu vejo as seguintes 1 (versão atual) where campo = nvl ( variavel, campo) 2 -- sql dinâmico todas tem vantagens e desvantagens --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Pessoal, como obter uma performance melhor nos casos onde você tem a seguiten situacao where campo = nvl ( variavel, campo) ou seja, vc pode enviar um valor na variavel, dai vc vai querer comparar o campo sempre a esse valor, ja se vc naum passar nada, ou seja, variavel nula ele usa o valor do campo mesmo para fazer a comparacao, desta forma sempre true. sei de uma maneira para deixar o caso acima melhor ... ... where campo = variavel unionl ... where variavel = null mas queria outra alternativa sem ter que reescrever a querie... e algo mais performatico também (se é que existe) vi algo interessante no site : http://oracle-docs.dartmouth.edu/dba-docs/articles/cbo.htm fala de SELECT account_name, trans_date, amount_FROM transaction_WHERE account_name = NVL(:acc_name, account_name); Rather, you should follow this example: SELECT account_name, trans_date, amount _FROM transaction_ WHERE account_name LIKE NVL(:acc_name, '%'); substituir usando o like... mas eu estou usando valores numericos... e pelo que parece a dica acima nao deu certo, alguem tem uma solucao melhor e que funcione ? Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. - 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 Termos do Serviço do Yahoo!. ___ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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] [EMAIL PROTECTED]http://[EMAIL PROTECTED]/?subject=Unsubscribe - O
[oracle_br] Configurar uma instancia corretamente - Expert Oracle Database Architecture
Para configurar uma instancia é necessário estar atento a varios parametros de inicialização , como por exemplo PGA_AGGREGATE_TARGET (9i) e outros parametros. Os livros Expert One on One: Oracle / Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions ou Effective Oracle by Design tratam desses assuntos ? Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] Re: Configurar uma instancia corretamente - Expert Oracle Database Architecture
Alguem sabe ? Foi o chiappa que recomendou esses livros. On 4/17/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Para configurar uma instancia é necessário estar atento a varios parametros de inicialização , como por exemplo PGA_AGGREGATE_TARGET (9i) e outros parametros. Os livros Expert One on One: Oracle / Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions ou Effective Oracle by Design tratam desses assuntos ? Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: RES: Limpar TableSpaces
Por que vc diz : aí num caso desses é bem mais trabalhoso antes do banco 10g ? O que o banco 10g facilita nesse ultimo caso citado ? On 4/17/06, jlchiappa [EMAIL PROTECTED] wrote: Ederson, deixe-me tentar esclarecer e aumentar aí : na verdade, é ** MUITO ** fácil vc descobrir o HWM , DESDE que vc conheça os conceitos a respeito e não vá procurar o que não existe. São eles : a) hwm não é apenas o ponto na tablespace onde chegou a escrita de dados, e sim o ponto MAIS ALTO em CADA DATAFILE da tablespace onde já chegou a escrita de dados ** E ** cujos extents ainda não foram dropados/movidos b) NÃO existe um hwm da tablespace, e sim UM hwm em CADA datafile c) dentro dum datafile, o espaço é alocado por extents, extents são compostos por blocos, e os blocos num datafile são sequenciais, assim de acordo com o conceito a) , se eu achar o último bloco do extent mais alto, imediatamente acima fica o hwm. Exemplo : [EMAIL PROTECTED]:SQLcreate tablespace TS_TESTE datafile 'D:\O9IR2\O9IR2 \TS_TESTE_01.DBF' size 100M nologging; [EMAIL PROTECTED]:SQLselect * from dba_tablespaces where tablespace_name='TS_TESTE'; TABLESPACE_NAMEBLOCK_SIZE INITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUSCONTENTS LOGGING FOR EXTENT_MAN ALLOCATIO PLU SEGMEN -- -- -- - - -- -- -- -- - - - --- -- - --- -- TS_TESTE 8192 65536 1 2147483645 65536 ONLINEPERMANENT NOLOGGING NO LOCAL SYSTEMNO MANUAL [EMAIL PROTECTED]:SQLcreate table TAB1 tablespace TS_TESTE nologging as (select * from scott.emp where 1=2); Tabela criada. [EMAIL PROTECTED]:SQLcreate table TAB2 tablespace TS_TESTE nologging as (select * from dba_objects where 1=2); Tabela criada. [EMAIL PROTECTED]:SQLBEGIN 2 for i in 1..100 loop 3 insert into TAB1 (select * from scott.emp); 4 commit; 5 end loop; 6 END; 7 / Procedimento PL/SQL concluído com sucesso. [EMAIL PROTECTED]:SQLselect owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME, file_id, max(block_id) from dba_extents where tablespace_name='TS_TESTE' 2 group by owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME, file_id 3* order by file_id, 6 , owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME; OWNERSEGMENT_TYPE SEGMENT_NAME PARTITION_NAMEFILE_ID MAX(BLOCK_ID) -- -- - -- -- -- SYSTEM TABLE TAB2 2 17 SYSTEM TABLE TAB1 2 25 == no caso o maior block_id já usado nesse tal datafile número dois (o único da tablespace por enquanto) é o bloco 25, vamos ver quantos blocos tenho nesse extent a partir desse bloco : [EMAIL PROTECTED]:SQLselect blocks from dba_extents where tablespace_name='TS_TESTE' and file_id=2 and block_id=25; BLOCKS -- 8 OK, a partir do bloco 25 tenho mais 8, em bytes isso fica : [EMAIL PROTECTED]:SQLselect (25+8) * 8192 from dual; (25+8)*8192 -- 270336 o datafile que quero shrinkar (digamos) tem : [EMAIL PROTECTED]:SQLselect * from dba_data_files where tablespace_name='TS_TESTE'; FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTESUSER_BLOCKS - - -- -- -- - -- --- -- - - -- -- -- D:\O9IR2\O9IR2 \TS_TESTE_01.DBF 2 TS_TESTE104857600 12800 AVAILABLE 2 NO 0 0 0 104792064 12792 == inclusive, veja que tenho BYTES=104857600 e USER_BYTES=104792064, por que ?? A diferença de 64 Kb é o BITMAP das tablespaces LMT, como é o caso da minha,algo que o pessoal SEMPRE parecer esquecer de levar em conta... No caso, tenho 104792064 bytes de tamanho efetivo, só uso 270336 bytes, do byte 270337 em diante poderia shrinkar : [EMAIL PROTECTED]:SQLselect 65536 + 270336 from dual; 65536+270336 -- 335872 [EMAIL PROTECTED]:SQLalter database datafile 'D:\O9IR2\O9IR2 \TS_TESTE_01.DBF' resize 335872; Banco de dados alterado. [EMAIL PROTECTED]:SQLselect * from dba_data_files where
Re: [oracle_br] Re: Configurar uma instancia corretamente - Expert Oracle Database Architecture
Legal, ! O do Jonathan Lewis seria o Cost-Based Oracle Fundamentals ? On 4/17/06, jlchiappa [EMAIL PROTECTED] wrote: É claro, por principais entende-se os que mais comumente resultam em aumento de performance e/ou facilidade de uso e/ou prevenção de erros, mas NÂO é de modo algum completíssimo a ponto de se poder fazer tunning só por esse livro. O procedimento que eu recomendo é : primeiro manuais Oracle, DEPOIS esse livro pra ter idéias tuning mais geral, o do Jonathan Lewis para ajustes de CBO, o do Guy harrison para tunning de SQL, aí vai... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, jlchiappa [EMAIL PROTECTED] escreveu Oi Marcelo, seguinte : o Expert Oracle Database Architecture: 9i and 10g Programming fala sim sobre ajuste dos principais parâmetros, inclusive apresenta casos-exemplo em cima. O ponto só é que o autor SUPÕE que a pessoa já estudou os manuais Oracle, então com certeza já sabe para que serve o dito parâmetro, ele não repete a teoria exposta nos manuais. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Alguem sabe ? Foi o chiappa que recomendou esses livros. On 4/17/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Para configurar uma instancia é necessário estar atento a varios parametros de inicialização , como por exemplo PGA_AGGREGATE_TARGET (9i) e outros parametros. Os livros Expert One on One: Oracle / Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions ou Effective Oracle by Design tratam desses assuntos ? Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: RES: Limpar TableSpaces
Perfeito !!! Valeu Chiappa. On 4/17/06, jlchiappa [EMAIL PROTECTED] wrote: É que pra esse trabalho de liberar espaço quando vc sabe que não vai mais haver DMLs e a hwm está alta e há muitos espaço em branco que só seriam re-usados em DMLs , no 10g vc tem a opção de SEGMENT SHRINK, como mostrado em http://asktom.oracle.com/pls/ask/f? p=4950:8:F4950_P8_DISPLAYID:17312316112393 e documentado nos manuais 10g, e isso funciona MESMO que o segmento esteja espalhado em vários datafiles da tablespace, nas versões inferiores não tem acordo, é move ou rebuild do segmento pra depois se poder fazer o shrink, e se forem muitos datafiles isso é um pouquinho incômodo, é isso. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Por que vc diz : aí num caso desses é bem mais trabalhoso antes do banco 10g ? O que o banco 10g facilita nesse ultimo caso citado ? On 4/17/06, jlchiappa [EMAIL PROTECTED] wrote: Ederson, deixe-me tentar esclarecer e aumentar aí : na verdade, é ** MUITO ** fácil vc descobrir o HWM , DESDE que vc conheça os conceitos a respeito e não vá procurar o que não existe. São eles : a) hwm não é apenas o ponto na tablespace onde chegou a escrita de dados, e sim o ponto MAIS ALTO em CADA DATAFILE da tablespace onde já chegou a escrita de dados ** E ** cujos extents ainda não foram dropados/movidos b) NÃO existe um hwm da tablespace, e sim UM hwm em CADA datafile c) dentro dum datafile, o espaço é alocado por extents, extents são compostos por blocos, e os blocos num datafile são sequenciais, assim de acordo com o conceito a) , se eu achar o último bloco do extent mais alto, imediatamente acima fica o hwm. Exemplo : [EMAIL PROTECTED]:SQLcreate tablespace TS_TESTE datafile 'D:\O9IR2 \O9IR2 \TS_TESTE_01.DBF' size 100M nologging; [EMAIL PROTECTED]:SQLselect * from dba_tablespaces where tablespace_name='TS_TESTE'; TABLESPACE_NAMEBLOCK_SIZE INITIAL_EXTENTNEXT_EXTENTMIN_EXTENTS MAX_EXTENTS PCT_INCREASE MIN_EXTLEN STATUS CONTENTS LOGGING FOR EXTENT_MAN ALLOCATIO PLU SEGMEN -- -- -- - - -- -- -- -- - - - --- -- - --- -- TS_TESTE 8192 65536 1 2147483645 65536 ONLINE PERMANENT NOLOGGING NO LOCAL SYSTEMNO MANUAL [EMAIL PROTECTED]:SQLcreate table TAB1 tablespace TS_TESTE nologging as (select * from scott.emp where 1=2); Tabela criada. [EMAIL PROTECTED]:SQLcreate table TAB2 tablespace TS_TESTE nologging as (select * from dba_objects where 1=2); Tabela criada. [EMAIL PROTECTED]:SQLBEGIN 2 for i in 1..100 loop 3 insert into TAB1 (select * from scott.emp); 4 commit; 5 end loop; 6 END; 7 / Procedimento PL/SQL concluído com sucesso. [EMAIL PROTECTED]:SQLselect owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME, file_id, max(block_id) from dba_extents where tablespace_name='TS_TESTE' 2 group by owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME, file_id 3* order by file_id, 6 , owner, SEGMENT_TYPE, SEGMENT_NAME, PARTITION_NAME; OWNERSEGMENT_TYPE SEGMENT_NAME PARTITION_NAMEFILE_ID MAX (BLOCK_ID) -- -- - -- -- -- SYSTEM TABLE TAB2 2 17 SYSTEM TABLE TAB1 2 25 == no caso o maior block_id já usado nesse tal datafile número dois (o único da tablespace por enquanto) é o bloco 25, vamos ver quantos blocos tenho nesse extent a partir desse bloco : [EMAIL PROTECTED]:SQLselect blocks from dba_extents where tablespace_name='TS_TESTE' and file_id=2 and block_id=25; BLOCKS -- 8 OK, a partir do bloco 25 tenho mais 8, em bytes isso fica : [EMAIL PROTECTED]:SQLselect (25+8) * 8192 from dual; (25+8)*8192 -- 270336 o datafile que quero shrinkar (digamos) tem : [EMAIL PROTECTED]:SQLselect * from dba_data_files where tablespace_name='TS_TESTE'; FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTESUSER_BLOCKS
[oracle_br] Tem que adaptar a querie para RBO ?
Temos um sistema que foi feito para funcionar com o otimizador em regras. Tem uma querie que funciona melhor em regra do que em custo. Por isso fizermos alterações na querie (join com tabela de 1 linha, FBI...) e agora ela ficou boa no custo também. Mas aí é que fica a dúvida, pois tivemos que alterar a querie para ela ficar boa... por isso queria saber : É possivel algum caso que, mesmo com todas as estatisticas , histogramas e etcs... corretos, todos os parametros de configuracao (optimizer...) corretos... e mesmo assim o RULE ser melhor que o COST ??? Como nesse caso (embora pode ser que os parametros / estisticas /histogramas nao sejam os ideais ) onde só alterando a querie foi possivel obter uma melhor performance ? Muito obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] Livro que aborda bastante statspack
Alguem sabe algum livro que aborda statspack ?? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] db file sequential read
Muito estranho... o seguinte evento... que pelo que li é um evento que mostra a leitura de um bloco fisico para memoria quando se usa indices... .parece q tem alguns outros casos... mas enfim... estou com uma querie q ta parada faz um tempao... e eh esse evento q ta nela... essa tabela tem indice e eu to fazendo inserst... tudo bem.. alguem pode me dizer.. desabilita os indice... mas minha pergunta é : pq isto acontencedo num oracle 10g, quando na mesma maquina, num oracle 8i isso demorou minutos... e agora ja faz horas que esses inserts estao rodando no 10g ? Lembrando q os dados sao iguais Obrigado [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] RBA - redo byte address - CONTROL FILE - Resetlogs
E o RBA Alguem entende ??? On 4/7/06, Luis Claudio Arruda Figueiredo [EMAIL PROTECTED] wrote: Marcelo. Boa noite. Amigo pelo que sei a opcao do Resetlogs é utilizada em recuperações de mídia incompleta ou quando você utiliza um controlfile para redefinir a numeração de logs. Ex...: Recover Database Until change 2214 using backup controlfile; Ou Recover Database Until time'2006-04-07:12:00:00' using backup controlfile; Nesse ponto o Oracle encerra automaticamente a recuperação quando atingir o SCN correto. Execute novamente um backup completo do seu db caso contrário você não irá conseguir recuperar as alterações feitas após redefinir os logs. --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Estava lendo esses dois artigos : http://esemrick.blogspot.com/2006/02/backup-control-files-are-they-special.html http://www.ixora.com.au/notes/rba.htm).http://www.ixora.com.au/notes/rba.htm%29. Um deles explica a importancia do RESETLOGS e o outro fala de RBA. Mas me confundi no conceito do RESETLOGS (pelo q sei ele volta o SCN para o inicio) e RBA e o relacionamente entre ambos. e o pq de ambos. Alguem poderia me dar uma luz ? Muito Obrigado [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. - 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 Termos do Serviço do Yahoo!. ___ Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. http://br.info.mail.yahoo.com/ -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Exp Imp utilizando o Data Pump
CONTROLFILE por apenas RECOVER DATABASE, e depois ALTER DATABASE OPEN RESETLOGS, isso deve funcionar. Abraço. André Campos -- Início da mensagem original --- De: oracle_br@yahoogrupos.com.br Para: oracle_br@yahoogrupos.com.br Cc: Data: Thu, 6 Apr 2006 15:27:05 -0300 Assunto: Re: [oracle_br] Exp Imp utilizando o Data Pump kra... tem certeza q funciona ? estou obtendo o erro : ORA-01589: must use RESETLOGS or NORESETLOGS option for database open quando tento alter database open resetlogs ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/u5/oradata/orarboho/system_01.dbf' Lembrando q as duas maquinas não estão em Archive On 3/31/06, Reginaldo F. Silva wrote: Os caminhos serao ajustados no arquivo gerado '\ControlFile.out Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: sexta-feira, 31 de março de 2006 13:17 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Exp Imp utilizando o Data Pump Não ira dar problema nos datafiles ? eles não estão com o diretorio da outra maquina ? On 3/31/06, Reginaldo F. Silva wrote: Outra maneira sem usar Exp/Imp set oracle_sid=SID1 sqlplus / as sysdba alter database backup controlfile to trace as '\ControlFile.out' reuse; shutdown immediate; exit; faça uma cópia fria do banco renomeando a pasta para o caminho desejado (ex: F:\Oradata\Base1 - G:\Oradata\Base2) set oracle_sid=SID1 sqlplus / as sysdba startup exit; edite o arquivo \ControlFile.out e ajuste o novo nome base e caminho. Ex: CREATE CONTROLFILE REUSE DATABASE OLD_NAME NORESETLOGS NOARCHIVELOG para CREATE CONTROLFILE REUSE SET DATABASE NEW_NAME RESETLOGS NOARCHIVELOG Crie o arquivo initSID2.ora para a nova base Crie a instancia (oradim -new ...) set oracle_sid=SID2 sqlplus / as sysdba startup nomount pfile=\initSID2.ora @\ControlFile.out Este método pode ser usado inclusive para copiar para outros servidores (manter exatamente a mesma versão do oracle) Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de wpedroti Enviada em: quinta-feira, 30 de março de 2006 17:13 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Exp Imp utilizando o Data Pump olá Pessoal, Sou novo no grupo e já estou com problemas no import, tentei detalhar o máximo possível do erro, caso alguém tenha uma luz, desde já agradeço. Obrigado Oracle 10g em um servidor RedHat 4.0. Tenho o seguinte script para fazer o export: su - oracle -c /oracle/product/10.2.0/db_1/bin/expdp luk/[EMAIL PROTECTED] schemas=DOV directory=DOV DUMPFILE=$nomearq_dov LOGFILE=expdp_dov.log O log da exportação: . . exported LUK.SCSDO0A0 8.398 KB 40 rows Master table LUK.SYS_EXPORT_SCHEMA_01 successfully loaded/unloaded ** Dump file set for LUK.SYS_EXPORT_SCHEMA_01 is: /bkp/luk/dov2006_Mar_24.dmp Job LUK.SYS_EXPORT_SCHEMA_01 successfully completed at 02:02:55 A importação é feita em uma máquina com sistema operacional WXP Script da importação: impdp luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log O log da importação Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Tabela-mestre LUK.SYS_IMPORT_SCHEMA_01 carregada/descarregada com sucesso Iniciando LUK.SYS_IMPORT_SCHEMA_01: luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log Processando o tipo de objeto SCHEMA_EXPORT/USER ORA-31684: O tipo de objeto USER:LUK já existe ORA-31684: O tipo de objeto
[oracle_br] RBA - redo byte address - CONTROL FILE - Resetlogs
Estava lendo esses dois artigos : http://esemrick.blogspot.com/2006/02/backup-control-files-are-they-special.html http://www.ixora.com.au/notes/rba.htm). Um deles explica a importancia do RESETLOGS e o outro fala de RBA. Mas me confundi no conceito do RESETLOGS (pelo q sei ele volta o SCN para o inicio) e RBA e o relacionamente entre ambos. e o pq de ambos. Alguem poderia me dar uma luz ? Muito Obrigado [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Exp Imp utilizando o Data Pump
kra... tem certeza q funciona ? estou obtendo o erro : ORA-01589: must use RESETLOGS or NORESETLOGS option for database open quando tento alter database open resetlogs ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/u5/oradata/orarboho/system_01.dbf' Lembrando q as duas maquinas não estão em Archive On 3/31/06, Reginaldo F. Silva [EMAIL PROTECTED] wrote: Os caminhos serao ajustados no arquivo gerado 'caminho\ControlFile.out Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: sexta-feira, 31 de março de 2006 13:17 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Exp Imp utilizando o Data Pump Não ira dar problema nos datafiles ? eles não estão com o diretorio da outra maquina ? On 3/31/06, Reginaldo F. Silva [EMAIL PROTECTED] wrote: Outra maneira sem usar Exp/Imp set oracle_sid=SID1 sqlplus / as sysdba alter database backup controlfile to trace as 'caminho\ControlFile.out' reuse; shutdown immediate; exit; faça uma cópia fria do banco renomeando a pasta para o caminho desejado (ex: F:\Oradata\Base1 - G:\Oradata\Base2) set oracle_sid=SID1 sqlplus / as sysdba startup exit; edite o arquivo caminho\ControlFile.out e ajuste o novo nome base e caminho. Ex: CREATE CONTROLFILE REUSE DATABASE OLD_NAME NORESETLOGS NOARCHIVELOG para CREATE CONTROLFILE REUSE SET DATABASE NEW_NAME RESETLOGS NOARCHIVELOG Crie o arquivo initSID2.ora para a nova base Crie a instancia (oradim -new ...) set oracle_sid=SID2 sqlplus / as sysdba startup nomount pfile=caminho\initSID2.ora @caminho\ControlFile.out Este método pode ser usado inclusive para copiar para outros servidores (manter exatamente a mesma versão do oracle) Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de wpedroti Enviada em: quinta-feira, 30 de março de 2006 17:13 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Exp Imp utilizando o Data Pump olá Pessoal, Sou novo no grupo e já estou com problemas no import, tentei detalhar o máximo possível do erro, caso alguém tenha uma luz, desde já agradeço. Obrigado Oracle 10g em um servidor RedHat 4.0. Tenho o seguinte script para fazer o export: su - oracle -c /oracle/product/10.2.0/db_1/bin/expdp luk/[EMAIL PROTECTED] schemas=DOV directory=DOV DUMPFILE=$nomearq_dov LOGFILE=expdp_dov.log O log da exportação: . . exported LUK.SCSDO0A0 8.398 KB 40 rows Master table LUK.SYS_EXPORT_SCHEMA_01 successfully loaded/unloaded ** Dump file set for LUK.SYS_EXPORT_SCHEMA_01 is: /bkp/luk/dov2006_Mar_24.dmp Job LUK.SYS_EXPORT_SCHEMA_01 successfully completed at 02:02:55 A importação é feita em uma máquina com sistema operacional WXP Script da importação: impdp luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log O log da importação Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Tabela-mestre LUK.SYS_IMPORT_SCHEMA_01 carregada/descarregada com sucesso Iniciando LUK.SYS_IMPORT_SCHEMA_01: luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log Processando o tipo de objeto SCHEMA_EXPORT/USER ORA-31684: O tipo de objeto USER:LUK já existe ORA-31684: O tipo de objeto SEQUENCE:LUK.TOTALCL_DFSEQ já existe Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE ORA-39151: A tabela LUK.MCUSR0A0 existe. Todos os metadados e dados dependentes serão ignorados em decorrência de table_exists_action ignorado Processando o tipo de objeto SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS O job LUK.SYS_IMPORT_SCHEMA_01 foi concluído com 655 erro(s) em 13:13:40 -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br
Re: [oracle_br] Exp Imp utilizando o Data Pump
kra... o erro q da quando rodo o arquivo de trace do control file.. Cluster altered. SP2-0734: unknown command beginning Recovery i... - rest of line ignored. SP2-0734: unknown command beginning or if the ... - rest of line ignored. ORA-00283: recovery session canceled due to errors ORA-01610: recovery using the BACKUP CONTROLFILE option must be done SP2-0734: unknown command beginning Database c... - rest of line ignored. ALTER DATABASE OPEN RESETLOGS * ERROR at line 1: ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/u5/oradata/orarboho/system_01.dbf' SP2-0734: unknown command beginning Commands t... - rest of line ignored. SP2-0734: unknown command beginning Online tem... - rest of line ignored. SP2-0734: unknown command beginning Other temp... - rest of line ignored. ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oracle/oradata/dvbco2/temp_01.dbf' REUSE * ERROR at line 1: ORA-01109: database not open SP2-0734: unknown command beginning End of tem... - rest of line ignored. SQL recover database ORA-00283: recovery session canceled due to errors ORA-01610: recovery using the BACKUP CONTROLFILE option must be done o arquivo de control file é CREATE CONTROLFILE SET DATABASE ORARBOHO RESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 1024 MAXINSTANCES 1 MAXLOGHISTORY 13120 LOGFILE GROUP 1 '/u5/oradata/orarboho/log1a.log' SIZE 1M, GROUP 2 '/u5/oradata/orarboho/log2a.log' SIZE 1M, GROUP 3 '/u5/oradata/orarboho/log3b.log' SIZE 1M DATAFILE '/u5/oradata/orarboho/system_01.dbf', '/u5/oradata/orarboho/f_01.dbf', '/u5/oradata/orarboho/f_01.dbf', '/u5/oradata/orarboho/rbs_01.dbf', '/u5/oradata/orarboho/o_data_01.dbf', '/u5/oradata/orarboho/rs_01.dbf', '/u5/oradata/orarboho/io_index_01.dbf', '/u5/oradata/orarboho/co_data_01.dbf', '/u5/oradata/orarboho/co_index_01.dbf', '/u5/oradata/orarboho/oject_data_01.dbf', '/u5/oradata/orarboho/ac_index_02.dbf', '/u5/oradata/orarboho/s_data_01.dbf', '/u5/oradata/orarboho/s_index_01.dbf', '/u5/oradata/orarboho/e_index_01.dbf', '/u5/oradata/orarboho/idge_data_01.dbf' CHARACTER SET WE8ISO8859P1 ; # Recovery is required if any of the datafiles are restored backups, # or if the last shutdown was not normal or immediate. RECOVER DATABASE # Database can now be opened zeroing the online logs. ALTER DATABASE OPEN RESETLOGS; # Commands to add tempfiles to temporary tablespaces. # Online tempfiles have complete space information. # Other tempfiles may require adjustment. ALTER TABLESPACE TEMP ADD TEMPFILE '/u02/oracle/oradata/dvbco2/temp_01.dbf' REUSE; # End of tempfile additions. # On 4/6/06, Andre Campos [EMAIL PROTECTED] wrote: Cara, Quando vc gerar o trace com o comando :ALTER DATABASE BACKUP CONTROFILE TO TRACE RESETLOGS , ao editar o arquivo troque o REUSE por SET e na linha de recover troque o RECOVER DATABASE USING BACKUP CONTROLFILE por apenas RECOVER DATABASE, e depois ALTER DATABASE OPEN RESETLOGS, isso deve funcionar. Abraço. André Campos -- Início da mensagem original --- De: oracle_br@yahoogrupos.com.br Para: oracle_br@yahoogrupos.com.br Cc: Data: Thu, 6 Apr 2006 15:27:05 -0300 Assunto: Re: [oracle_br] Exp Imp utilizando o Data Pump kra... tem certeza q funciona ? estou obtendo o erro : ORA-01589: must use RESETLOGS or NORESETLOGS option for database open quando tento alter database open resetlogs ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/u5/oradata/orarboho/system_01.dbf' Lembrando q as duas maquinas não estão em Archive On 3/31/06, Reginaldo F. Silva wrote: Os caminhos serao ajustados no arquivo gerado '\ControlFile.out Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: sexta-feira, 31 de março de 2006 13:17 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] Exp Imp utilizando o Data Pump Não ira dar problema nos datafiles ? eles não estão com o diretorio da outra maquina ? On 3/31/06, Reginaldo F. Silva wrote: Outra maneira sem usar Exp/Imp set oracle_sid=SID1 sqlplus / as sysdba alter database backup controlfile to trace as '\ControlFile.out' reuse; shutdown immediate; exit; faça uma cópia fria do banco renomeando a pasta para o caminho desejado (ex: F:\Oradata\Base1 - G:\Oradata\Base2) set oracle_sid=SID1 sqlplus / as sysdba startup exit; edite o arquivo \ControlFile.out e ajuste o novo nome base e caminho. Ex: CREATE CONTROLFILE REUSE DATABASE OLD_NAME NORESETLOGS
Re: [oracle_br] ORA-01031: insufficient privileges
Como esta o seu sqlnet.ora ? On 4/1/06, Igor Graminhani [EMAIL PROTECTED] wrote: Ola pessoal, Estou tentando conectar num banco de teste e está aparecendo a seguinte mensagem de erro: ORA-01031: insufficient privileges Esse erro acontece com qualquer usuário que eu tente logar no banco, seja, como SYS ou SYSTEM, porém esse erro acontece apenas na instância ISMTESTE Bem, tentamos recriar o arquivo de senha no Servidor Linux (servidor onde se encontra a instância ISMTESTE) através do ORAPWD, conforme comando abaixo: orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=senha (obs: no init.ora o parâmetro remote_login_passwordfile já está 'EXCLUSIVE') Porém, ainda persiste o erro. O que poderia ser feito para corrigir esse erro e acessar o banco? Obrigado, Igor -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] Re: TkProf - LIOs
Alguem tem ideia ? On 4/3/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: No relatorio do tkprof, o total de LIOs é igual a query + current ou apenas o valor de query ? Exemplo : call count cpuelapsed disk query currentrows --- -- -- -- -- -- -- Parse0 0.00 0.00 0 0 0 0 Execute 10 6.20 5.78 0 0 0 0 Fetch 10 4.14 3.70 0 20 0 10 --- -- -- -- -- -- -- total 20 10.34 9.48 0 20 0 10 PIO = 0 (valor de disk) LIO = 20 (valor de current) Seria isso ??? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: TkProf - LIOs
Como vcs costumam fazer a analise num trace ? On 4/5/06, Anderson Haertel Rodrigues [EMAIL PROTECTED] wrote: Olá Marcelo, Deve ser Query + Current. Att, Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Florianópolis/SC --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: Alguem tem ideia ? On 4/3/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: No relatorio do tkprof, o total de LIOs é igual a query + current ou apenas o valor de query ? Exemplo : call count cpuelapsed disk query currentrows --- -- -- -- -- -- -- Parse0 0.00 0.00 0 0 0 0 Execute 10 6.20 5.78 0 0 0 0 Fetch 10 4.14 3.70 0 20 0 10 --- -- -- -- -- -- -- total 20 10.34 9.48 0 20 0 10 PIO = 0 (valor de disk) LIO = 20 (valor de current) Seria isso ??? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos http://br.yahoo.com/info/utos.html ___ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fi8b1rb/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1144263874/A=3365371/R=2/id=noscript/SIG=110csbogi/*http://www.yahoo.com.br/cinema -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: TkProf - LIOs
Obrigado pela dica, vou dar uma olhada. On 4/5/06, Anderson Haertel Rodrigues [EMAIL PROTECTED] wrote: Marcelo, Tu desejas saber como fazer tuning ou apenas analisar o resultado do TKPROF? São coisas diferentes. O que você realmente deseja? Se for Analisar o resultado do tkprof eu sugiro a leitura com calma e endentendo bem de dois PDFs da Oracle (documentação oficial): Database Performance Planning.pdf Database Performance Tuning Guide and Reference.pdf Este último explica bem detalhamente a sintaxe do TKPROF bem como o que é cada retorno do mesmo. Se for fazer Tuning é mais abrangente e complexo. Seriam algumas indicações (algumas até já passaram pela lista), somando conhecimento+experiência. Att, Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Florianópolis/SC --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: Como vcs costumam fazer a analise num trace ? On 4/5/06, Anderson Haertel Rodrigues [EMAIL PROTECTED] wrote: Olá Marcelo, Deve ser Query + Current. Att, Anderson Haertel Rodrigues Administrador de Banco de Dados - DBA Florianópolis/SC --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: Alguem tem ideia ? On 4/3/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: No relatorio do tkprof, o total de LIOs é igual a query + current ou apenas o valor de query ? Exemplo : call count cpuelapsed disk query currentrows --- -- -- -- -- -- -- Parse0 0.00 0.00 0 0 0 0 Execute 10 6.20 5.78 0 0 0 0 Fetch 10 4.14 3.70 0 20 0 10 --- -- -- -- -- -- -- total 20 10.34 9.48 0 20 0 10 PIO = 0 (valor de disk) LIO = 20 (valor de current) Seria isso ??? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos http://br.yahoo.com/info/utos.html ___ Yahoo! doce lar. Faça do Yahoo! sua homepage. http://br.yahoo.com/homepageset.html -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fi8b1rb/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1144263874/A=3365371/R=2/id=noscript/SIG=110csbogi/*http://www.yahoo.com.br/cinema -- *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] [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas
[oracle_br] Instancias iguais com RBO com resultados diferentes - indo em busca do CBO
Pessoal, Essa ta me quebrando a cabeça, é o seguinte: Estou ajudando na migracao de otimizador de regras para custo. Ja pegamos varios papers, muitos recomendados pela lista. Entretanto, queria ter uma instancia na mesma maquina para fazer comparações. Tipo, no custo demorou X minutos e com regras Y minutos. Lembrando que a maquina de Custo é um Oracle 10g e a de regra um Oracle 8i. Mas antes de começar as comparações de Custo e Regra, quero me assegurar que a instancia de regra nessa maquina esta tendo o mesmo desempenho com Regra do que em outra maquina bastante usado pelos desenvolvedores (hardware igual). Mas ta dando uma baita diferenca nos testes Os inits.ora das duas estão iguais ( com excessao que o db_block_size da mais rapida esta 4k e o da mais lenta esta 8k, mas acho q naum eh isso). Alguem sabe como consigo definir o porque da diferença ? Vou colocar abaixo o init das duas instancias, chamar a mais rapida de sidA e a mais lenta de sidB. Lembrando que a sidB eu quero usar como comparativo com a maquina Custo, mas não ta dando, afinal , ela não tem se mostrado igual a outra instancia da outra maquina com Regra. Outro ponto : Como estou fazendo comparaçoes, deixei a estrutura das tabelas identicas init_trans,maxmintudo igual... linha iguais Quem pode me dar uma luz ? -- sidB db_name = sidB instance_name = sidB service_names = sidB control_files = (/u1/oracle/oradata/sidB/control01.ctl, /u4/oracle/oradata/sidB/control02.ctl, /u4/oracle/oradata/sidB/control03.ctl) open_cursors = 1500 max_enabled_roles = 80 db_block_buffers = 2048 shared_pool_size = 50331648 shared_pool_reserved_size=5033164 large_pool_size = 8192000 java_pool_size = 2500 log_checkpoint_interval = 1 log_checkpoint_timeout = 1800 processes = 350 log_buffer = 163840 background_dump_dest = /u1/app/oracle/admin/sidB/bdump core_dump_dest = /u1/app/oracle/admin/sidB/cdump user_dump_dest = /u1/app/oracle/admin/sidB/udump db_block_size = 8192 remote_login_passwordfile = exclusive os_authent_prefix = compatible = 8.1.7 sort_area_size = 65536 sort_area_retained_size = 65536 event=36 trace name errorstack level 3 _complex_view_merging=true -- sidA db_name = sidA instance_name = sidA service_names = sidA control_files = (/u01/oracle/oradata/sidA/control01.ctl, /u02/oracle/oradata/sidA/control02.ctl) open_cursors = 1500 max_enabled_roles = 80 db_block_buffers = 2048 shared_pool_size = 50331648 shared_pool_reserved_size=5033164 large_pool_size = 8192000 java_pool_size = 2500 log_checkpoint_interval = 1 log_checkpoint_timeout = 1800 processes = 350 log_buffer = 163840 rollback_segments = ( R04, R01, R02, R03 ) background_dump_dest = /u01/app/oracle/admin/sidA/bdump core_dump_dest = /u01/app/oracle/admin/sidA/cdump user_dump_dest = /u01/app/oracle/admin/sidA/udump db_block_size = 4096 remote_login_passwordfile = exclusive os_authent_prefix = compatible = 8.1.7 sort_area_size = 65536 sort_area_retained_size = 65536 event=36 trace name errorstack level 3 _complex_view_merging=true -- TKPROF sidB declare teste date; begin for i in 1..259635 loop teste := sBcRoundDiaUtil(to_date('11-jan-06')); end loop; end; call count cpuelapsed disk querycurrent rows --- -- -- -- -- -- -- Parse1 0.00 0.00 0 0 0 0 Execute 1 41.02 41.73 0 0 0 1 Fetch0 0.00 0.00 0 0 0 0 --- -- -- -- -- -- -- total2 41.02 41.73 0 0 0 1 Misses in library cache during parse: 0 Optimizer goal: RULE Parsing user id: 20 select user# from sys.user$ where name = 'OUTLN' 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 Fetch1 0.00 0.00 0 2 0 1 --- -- -- -- -- -- -- total3 0.00 0.00 0 2 0 1 Misses in library cache during parse: 0 Optimizer goal: RULE Parsing user id: SYS (recursive depth: 2) Rows Row Source Operation --- --- 1 TABLE ACCESS BY INDEX ROWID USER$ 1 INDEX UNIQUE SCAN
Re: [oracle_br] Re: Instancias iguais com RBO com resultados diferentes - indo em busca do CBO
Chiappa, concordo absolutamente com vc... pois tenho seguido seus comentarios a risca... mas aqui o problema é que quero comparar um RBO com CBO... da para fazer isso em 10g ? pensando q nao, a minha ideia foi , instalo uma instancia 8i igual a que o pessoal usa no desenvolvimento e comparo com a 10g,... mas o problema é: essa instancia de 8i em RBO ta mais lerdo que a instancia de 8i em RBO q o pessoal utiliza no desenvolvimento por isso coloquei no email os parametros das duas 8i dai qndo conseguir ver o pq da diferenca entre as duas 8i.,. iria compara-las com 10g mas se naum for possivel essa comparacao, com o que posso comparar a 10g ? se eu colocar RULE no 10g vai funcionar ? porque poderia criar uma nova instancia de10g... mas mesmo se fosse possivel fazer isso com 10g... gostaria que me ajudassem a identificar o porque dessas duas instancia iguais, em maquinas diferentes, com hardwares iguais, darem tempos diferentes On 4/5/06, jlchiappa [EMAIL PROTECTED] wrote: Colega, quando vc diz : Lembrando que a maquina de Custo é um Oracle 10g e a de regra um Oracle 8i. já de cara eu digo, ENORMES chances de não funcionar direito, 8i é absolutamente DIFERENTE de 10g, testes preferencialmente TEM QUE ser feitos em versões idênticas - no seu caso isso é AUMENTADO em muito, pois há n+1 parâmetros que já são setados por default ou criados no banco default do 10g que DIFEREM RADICALMENTE do 8i... E como dito em outra thread aqui, CBO ** implica ** em estatísticas, histogramas, configs as mais diversas sendo exigidas, vc FEZ isso, se não fez não funciona direito MESMO. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Essa ta me quebrando a cabeça, é o seguinte: Estou ajudando na migracao de otimizador de regras para custo. Ja pegamos varios papers, muitos recomendados pela lista. Entretanto, queria ter uma instancia na mesma maquina para fazer comparações. Tipo, no custo demorou X minutos e com regras Y minutos. Lembrando que a maquina de Custo é um Oracle 10g e a de regra um Oracle 8i. Mas antes de começar as comparações de Custo e Regra, quero me assegurar que a instancia de regra nessa maquina esta tendo o mesmo desempenho com Regra do que em outra maquina bastante usado pelos desenvolvedores (hardware igual). Mas ta dando uma baita diferenca nos testes Os inits.ora das duas estão iguais ( com excessao que o db_block_size da mais rapida esta 4k e o da mais lenta esta 8k, mas acho q naum eh isso). Alguem sabe como consigo definir o porque da diferença ? Vou colocar abaixo o init das duas instancias, chamar a mais rapida de sidA e a mais lenta de sidB. Lembrando que a sidB eu quero usar como comparativo com a maquina Custo, mas não ta dando, afinal , ela não tem se mostrado igual a outra instancia da outra maquina com Regra. Outro ponto : Como estou fazendo comparaçoes, deixei a estrutura das tabelas identicas init_trans,maxmintudo igual... linha iguais Quem pode me dar uma luz ? -- sidB db_name = sidB instance_name = sidB service_names = sidB control_files = (/u1/oracle/oradata/sidB/control01.ctl, /u4/oracle/oradata/sidB/control02.ctl, /u4/oracle/oradata/sidB/control03.ctl) open_cursors = 1500 max_enabled_roles = 80 db_block_buffers = 2048 shared_pool_size = 50331648 shared_pool_reserved_size=5033164 large_pool_size = 8192000 java_pool_size = 2500 log_checkpoint_interval = 1 log_checkpoint_timeout = 1800 processes = 350 log_buffer = 163840 background_dump_dest = /u1/app/oracle/admin/sidB/bdump core_dump_dest = /u1/app/oracle/admin/sidB/cdump user_dump_dest = /u1/app/oracle/admin/sidB/udump db_block_size = 8192 remote_login_passwordfile = exclusive os_authent_prefix = compatible = 8.1.7 sort_area_size = 65536 sort_area_retained_size = 65536 event=36 trace name errorstack level 3 _complex_view_merging=true -- sidA db_name = sidA instance_name = sidA service_names = sidA control_files = (/u01/oracle/oradata/sidA/control01.ctl, /u02/oracle/oradata/sidA/control02.ctl) open_cursors = 1500 max_enabled_roles = 80 db_block_buffers = 2048 shared_pool_size = 50331648 shared_pool_reserved_size=5033164 large_pool_size = 8192000 java_pool_size = 2500 log_checkpoint_interval = 1 log_checkpoint_timeout = 1800 processes = 350 log_buffer = 163840 rollback_segments = ( R04, R01, R02, R03 ) background_dump_dest = /u01/app/oracle/admin/sidA/bdump core_dump_dest = /u01/app/oracle/admin/sidA/cdump user_dump_dest = /u01/app/oracle/admin/sidA/udump db_block_size = 4096 remote_login_passwordfile = exclusive
Re: [oracle_br] Re: ORA-01031: insufficient privileges
Tentou comentar a linha SQLNET.AUTHENTICATION_SERVICES= (NTS) ? colocando # SQLNET.AUTHENTICATION_SERVICES= (NTS) ??? On 4/5/06, Igor Graminhani [EMAIL PROTECTED] wrote: O sqlnet.ora do banco de desenvolvimento estava assim: # SQLNET.ORA Network Configuration File: /app/oracle/product/9ir2/network/admin/sqlnet.ora # Generated by Oracle configuration tools. SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) NAMES.DEFAULT_DOMAIN = site Porém, já tentei alterar o parametro SQLNET.AUTHENTICATION_SERVICES= (NONE), mas não funcionou. Atenciosamente, Igor --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Como esta o seu sqlnet.ora ? On 4/1/06, Igor Graminhani [EMAIL PROTECTED] wrote: Ola pessoal, Estou tentando conectar num banco de teste e está aparecendo a seguinte mensagem de erro: ORA-01031: insufficient privileges Esse erro acontece com qualquer usuário que eu tente logar no banco, seja, como SYS ou SYSTEM, porém esse erro acontece apenas na instância ISMTESTE Bem, tentamos recriar o arquivo de senha no Servidor Linux (servidor onde se encontra a instância ISMTESTE) através do ORAPWD, conforme comando abaixo: orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=senha (obs: no init.ora o parâmetro remote_login_passwordfile já está 'EXCLUSIVE') Porém, ainda persiste o erro. O que poderia ser feito para corrigir esse erro e acessar o banco? Obrigado, Igor - - Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ - - __ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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]oracle_br- [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http
Re: [oracle_br] Re: Instancias iguais com RBO com resultados diferentes - indo em busca do CBO
Então ficam mais 5 questões : - o db_block_size afeta a performance de um oltp ? ou melhor, de 4kb para 8kb da diferenca ? - posso comparar um 8i e um 10g na mesma maquina - o 8i com RBO e o 10g com CBO , esperando que o 10g seja igual ou mais rapido ? - se eu coloco RBO no 10g, ele suporta então regras ? mas a questão é, ele com Regras vai ser mais performatico que um 8i com regra ? - qual sua sugestão para fins comparativos , comparar o 10g CBO com o 8i RBO ou com o 10g RBO (se puder e for mais performatico que o 8i com regras) ? - parametros do init file mudaram do 8i para o 10g, tem algum documento onde consiga ter uma detalhamento disso para tentar configura-los o mais igual possivel ? Obrigado. On 4/5/06, jlchiappa [EMAIL PROTECTED] wrote: Peraí, vamos por partes : inicialmente, se vc tem duas instâncias 8i em RBO em duas máquinas diferentes com as mesmas configs, mesmas tabelas, realmente idênticas, mas com performance mutíssimo diferente, será que simplesmente a CARGA das máquinas não está diferente - ie, se ma máquina de desenvolvimento vc só tem o banco de desenvolvimento com meia dúzia de sessões MAS o outro banco está na máquina produção (onde obviamente ele NÂO está sozinho, há n+1 rodando nela) não vai MESMO dar par comparar coisa alguma, pois a máquina produção , sendo submetida a uma CARGA muito maior, com taxa de I/O e de uso de CPU ambas lá em cima, só pode mesmo ser lenta... Por isso é que o ideal seria vc ter uma máquina HOMOLOGAÇÂO, ie, semelhante à Produção mas sem a carga toda que produção suporta, justamente pra vc poder passar essa homologação pra CBO, aí sim, vc teria em máquinas com cargas parecidas, params iguais, hardwares o mais parecido possível, aí SIM dá pra vc apontar ah, é o RBO aqui, é o CBO ali só que está pegando. Quanto ao 10g, vc até pode rodá-lo sim em RBO, não é suportado mas pro teste inicial, ok. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa, concordo absolutamente com vc... pois tenho seguido seus comentarios a risca... mas aqui o problema é que quero comparar um RBO com CBO... da para fazer isso em 10g ? pensando q nao, a minha ideia foi , instalo uma instancia 8i igual a que o pessoal usa no desenvolvimento e comparo com a 10g,... mas o problema é: essa instancia de 8i em RBO ta mais lerdo que a instancia de 8i em RBO q o pessoal utiliza no desenvolvimento por isso coloquei no email os parametros das duas 8i dai qndo conseguir ver o pq da diferenca entre as duas 8i.,. iria compara-las com 10g mas se naum for possivel essa comparacao, com o que posso comparar a 10g ? se eu colocar RULE no 10g vai funcionar ? porque poderia criar uma nova instancia de10g... mas mesmo se fosse possivel fazer isso com 10g... gostaria que me ajudassem a identificar o porque dessas duas instancia iguais, em maquinas diferentes, com hardwares iguais, darem tempos diferentes On 4/5/06, jlchiappa [EMAIL PROTECTED] wrote: Colega, quando vc diz : Lembrando que a maquina de Custo é um Oracle 10g e a de regra um Oracle 8i. já de cara eu digo, ENORMES chances de não funcionar direito, 8i é absolutamente DIFERENTE de 10g, testes preferencialmente TEM QUE ser feitos em versões idênticas - no seu caso isso é AUMENTADO em muito, pois há n+1 parâmetros que já são setados por default ou criados no banco default do 10g que DIFEREM RADICALMENTE do 8i... E como dito em outra thread aqui, CBO ** implica ** em estatísticas, histogramas, configs as mais diversas sendo exigidas, vc FEZ isso, se não fez não funciona direito MESMO. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Essa ta me quebrando a cabeça, é o seguinte: Estou ajudando na migracao de otimizador de regras para custo. Ja pegamos varios papers, muitos recomendados pela lista. Entretanto, queria ter uma instancia na mesma maquina para fazer comparações. Tipo, no custo demorou X minutos e com regras Y minutos. Lembrando que a maquina de Custo é um Oracle 10g e a de regra um Oracle 8i. Mas antes de começar as comparações de Custo e Regra, quero me assegurar que a instancia de regra nessa maquina esta tendo o mesmo desempenho com Regra do que em outra maquina bastante usado pelos desenvolvedores (hardware igual). Mas ta dando uma baita diferenca nos testes Os inits.ora das duas estão iguais ( com excessao que o db_block_size da mais rapida esta 4k e o da mais lenta esta 8k, mas acho q naum eh isso). Alguem sabe como consigo definir o porque da diferença ? Vou colocar abaixo o init das duas instancias, chamar a mais rapida de sidA e a mais lenta de sidB. Lembrando que a sidB eu quero usar como comparativo com
Re: [oracle_br] Re: Instancias iguais com RBO com resultados diferentes - indo em busca do CBO
Chiapa, Valeu pelas respostas, elas eram o que eu precisava. On 4/5/06, jlchiappa [EMAIL PROTECTED] wrote: seguem as respostas pra cada item : --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Então ficam mais 5 questões : - o db_block_size afeta a performance de um oltp ? ou melhor, de 4kb para 8kb da diferenca ? Normalmente não muito - veja vc, a diferença principal de um block de 4 Kb pra um de 8 Kb é que no bloco maior há menos chance de frequentemente houver registro que não coube inteiro no bloco e é alocado novo bloco, mas tipicamente num oltp, bem normalizado, não há registros tão longos, então nem isso. Normalmente o pessoal opta por 8 kb porque é um valor médio de bloco, funciona bem nem é um dos menores valores que pode levar à maior frequencia de regs migrados ou I/O muito pequeno, nem é dos maiores onde pode haver um pouco mais de espaço não-usado ou I/O um pouco mais excessivo. Mas não, não vi até hoje um caso onde duas máquinas com mesma versão de banco , os parâmetros iguais, carga de máquina igual, dê diferença significativa por causa de block size, a não ser em casos extremos (ie, usa o menor de todos, 2 Kb , ou o maior , normalmente 32 Kb). - posso comparar um 8i e um 10g na mesma maquina - o 8i com RBO e o 10g com CBO , esperando que o 10g seja igual ou mais rapido ? Pode, a questão só é que eventualmente outra sessão pode , em tese, a qquer momento disparar alguma coisa pesada no outro banco, aí a máquina sobrecarregada, o CBO até monta o melhor plano possível mas por causa da carga causada pela outra sessão mesmo esse melhor plano demora... Esse é que é o X de vc estar testando numa máquina com outras coisas rodando, às vezes fica difícil vc filtrar interferências das outras coisas naquilo que vc está testando, é por isso que é RECOMENDADO se fazer isso em outra máquina só com a coisa a testar... - se eu coloco RBO no 10g, ele suporta então regras ? Por suporta vc quer dizer se funciona ? Sim, tranquilamente funcionar funciona, mas com certeza a Oracle não recomenda, e afaik não dá suporte. mas a questão é, ele com Regras vai ser mais performatico que um 8i com regra ? A tendência não é : se tudo o resto for igual, provavelmente 10g em modo de regra deve ser basicamente idêntico ao 8i em modo de regra, pois o otimizador de regras não muda desde a versão 7 do banco... As chances de vc eventualmente obter performance melhor no 10g são pequenas, só mesmo se alguma das features novas dele que não dependa de otimizador proporcionarem isso (como por exemplo afaik são o array size automático em pl/sql, as melhorias de redo, os gerenciamentos automatizados de SGA, etc) - na prática, porém, o meu palpite é que se o 8i em rbo estiver com redo log bem tunado, já estiver fazendo algum array processing onde necessário, tiver a SGA bem dimensionadinha, etc, não vejo muita margem para grandes diferenças. - qual sua sugestão para fins comparativos , comparar o 10g CBO com o 8i RBO ou com o 10g RBO (se puder e for mais performatico que o 8i com regras) ? Minha sugestão é simples : imagino que vc está com o 10g no meio porque quer migrar pra ele no final das contas, certo ?? Então a idéia é , numa máquina de homologação, o mais semelhante possível à Produção, tenha o 8i em regra, que nem a produção, uma vez comprovado por testes que a performance está basicamente idêntica vc passa esse banco pra CBO (e faz TODOS os settings necessários pro CBO funcionar, vai haver queries que talvez vc tenha que alterar, terá que coletar stats, determinar necessidade de histogramas, enfim, mexer bastante, o que é relativamente extenso), uma vez isso feito e testado e obtido algum ganho (que deve sim haver no CBO), e eventualmente ajustadas as relativamente poucas queries que precisarem, aí sim demonstrado que o CBO foi bem, só aí vc migra pra 10g : acho que fazer duas alterações pesadas (ie, ir de RBO pra CBO , e de 8i pora 10g ) numa tacada só é por demais arriscado. []s Chiappa -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fd72ua0/M=399886.8024024.9109235.2369893
[oracle_br] Rollback Segments
Por que os segmentos de rollback ficam offline depois dar shutdown ? Eu criei eles numa tablespace diferente da system. O oracle é o 8i. Tem como deixa-los online automaticamente ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] TkProf - LIOs
No relatorio do tkprof, o total de LIOs é igual a query + current ou apenas o valor de query ? Exemplo : call count cpuelapsed disk querycurrent rows --- -- -- -- -- -- -- Parse0 0.00 0.00 0 0 0 0 Execute 10 6.20 5.78 0 0 0 0 Fetch 10 4.14 3.70 0 20 0 10 --- -- -- -- -- -- -- total 20 10.34 9.48 0 20 0 10 PIO = 0 (valor de disk) LIO = 20 (valor de current) Seria isso ??? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] TRACE
Para gerar o TRACE file eu uso o comando alter session set sql_trace=true e ele gera um arquivo com nome ora_XXX.trc... o que seria esse XXX ? tem como eu espcificar um nome ? outra cosia, tem como gerar um arquivo de trace novo apenas emitindo um comando ? Por exemplo, se eu de alter session set sql_trace=false e alter session set sql_trace=true ele cria novo arquivo de trace e deixa de usar o mesmo ? pois ele atualmente usa o mesmo arquivo mesmo se eu der alter session set sql_trace=false Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: Copiar bancos
Legal !!! onde esta pasta com esses scripts ? pois naum achei na pagina do grupo nenhuma pasta do chiapa Valew. On 4/2/06, Luis Claudio Arruda Figueiredo [EMAIL PROTECTED] wrote: Marcelo boa tarde. O que o chiappa quiz dizer é que se o seu servidor é multi processado você pode utilizar todos os ecursos da sua máquina. Ex..:Se você possui 4 schemas em uma máquina com 4 procs você pode fazer o exp em paralelo dos 4, ou se possuir apenas 1 schema vocÇe pode dividir as tabelas em uma range de 4 e fazer o exp. O chiappa a alguns meses disponibilizou na web uma pasta com vários scripts (até hoje não consegui ler todos) e lá também tem um how to de exp imp. e você pode utilizar o exp help=y para verificar o help dos parâmetros do exp imp. abs, Luis Figueiredo. --- Marcelo Cauduro [EMAIL PROTECTED] escreveu: - Essas dicas realmente foram incriveis !!! mas ficaram algumas duvidas... o chiappa falou de ***vc primeiro faz ** vários ** exps em paralelo (quantas a tua máquina suportar sem arrear), só de dados, cada um pegando uma porção das tabelas* ** como pegart essa uma porcao de tabelas ? vc diz pegar tabelas usando o parametro tables ? ou usar os schemas? vc naum aconselha fazer um full=y? mas nao ficaria inviavel caso vc tenha centenas e centenas de tabelas ? *depois vc gera um script .sql desses índices e constraints (opção INDEXFILE do imp), e altera esse script para criar os índices com NOLOGGING (e PARALLEL se a máquina suporta) e as constraints com ENABLE NOVALIDATE.* Vc tem alguma dica para editar/alterar mais rapidamente esses arquivos ? outra coisa, soh para confirmar, qndo faco o exp com o indexfile, coloco rows=n constraints=y indexes=y, mas ele coloca os scripts de criacao da tabelas la ? esta correto Valew. On 3/31/06, Jemerson Dutra [EMAIL PROTECTED] wrote: Realmente Incrivel, fiz um teste usando os parametros que o chiapa deu uns toques e meu export que durava horas veio para casa dos 23 minutos. Porem creio que meu hardware nao a altura do de vcs. Jemerson Valeu chiappa. --- Em oracle_br@yahoogrupos.com.br, DBA - ORACLE [EMAIL PROTECTED] escreveu Depois do help do Chiappa, fiz o export da base de produção e durou 40 minutos, indexes=n direct=y compress=n grants=y constranits=n Detalhe...o servidor de produção tem 25GB gerando um dump de 15GB Marcio Em 29/03/06, jlchiappa [EMAIL PROTECTED] escreveu: Colega, com certeza 10 Gb num servidor bom de Produção (que além de RAM, esteja com discos rápidos, controladora de fibra), que (obviamente!) na hora do export esteja com uma carga leve, ou mesmo sem carga, num banco decentemente configurado, sendo export local E usando as opções adequadas de performance, não é NEM DE LONGE uma carga extrema assim pra levar horas e horas, um exemplo na minha máquina de produção (hp-ux 64 bits, 24 processadores, 32 Gb de RAM, arrays de discos EMC Symmetrix DMX Series alocado/gerenciado pelo PowerPath, com filesystems cooked ) : [EMAIL PROTECTED]:SQLselect num_rows, avg_row_len from dba_tables where table_name='TMP_MIGEP_101891'; NUM_ROWSAVG_ROW_LEN -- -- 59541295248 == essa tabela é um pouco larga, como se vê pelo AVG_ROW_LEN, mas não está com muito white-space, pois : [EMAIL PROTECTED]:SQLselect 59541295*248 from dual; 59541295*248 -- 14766241160 == pela média se esperava coisa de 14 Gb, real alocado eu tenho coisa de 16 : [EMAIL PROTECTED]:SQLselect sum(bytes) from dba_extents where segment_name='TMP_MIGEP_101891'; SUM(BYTES) 16.735.272.960 == ou seja, é até mais do que os seus 10 Gb, ok ? Vamos fazer o export (neste momento a máquina está em uso, mas com uma carga relativamente leve, alguns usuários rodando reports diários, nada excepcional) : usr_adm:PRD:/trafico/usr_admexp chiappa/x buffer=10485760 file=TMP_MIGEP_101891.dmp compress=n grants=n indexes=n direct=y log=TMP_MIGEP_101891.exp tables=usr.TMP_MIGEP_101891 recordlength=65535 statistics=none constraints=n feedback=10 Export: Release 9.2.0.5.0 - Production on Qua Mar 29 10:02:37 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Conectado a: Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production With the Partitioning option JServer Release 9.2.0.5.0 - Production Exportação executada no conjunto de caracteres de WE8ISO8859P1 e no conjunto de caracteres de AL16UTF16 NCHAR OBS: concessões em tabelas/views/seqüências/funções não serão exportadas OBS: índices em tabelas não serão exportados
Re: [oracle_br] Re: IMPORT/EXPORT 8I/9I - WRAPED PROCEDURES - END COMMUNICATION
Vc diz uma sessao de imp criando soh as procedures mas para isso eu teria de fazer um exp full=y com rows=n para pegar as procedures, e depois um imp desse dump ? Digo isso porque olhando no documento de referencia dos utilitarios da oracle, vi que as triggers tem um parametros para exporta-las sozinhas , mas para procedure naum vi... Valeu. On 4/2/06, jlchiappa [EMAIL PROTECTED] wrote: Eu desconheço incompatibilidade per se entre procedures feitas (seja com código wrappado ou não) em 9i serem re-criadas em 8i, no máximo o que talvez poderia estar havendo é a procedure 9i estar usando algum recurso especial do 9i não reconhecido no 8i, e o import 8i por bug ao invés de acusar logo erro fica tentando criar e se perde, mas isso é uma possibilidade remota. O que eu acho mais provável é , em o import demorando tantas e tantas horas assim, vc esteja é tendo a sessão dele na rede sendo encerrada por firewall ou filtro, ou mesmo por configs de seu usuário na rede/servidor, então a sugestão é : USE os procedimentos citados pra acelerar, na hora de importar tenha vários .dmps sendo importados em paralelo, depois crie os índices/constraints rapidamente com as opções de performance citadas, e só *** depois *** dos dados ok aí sim vc tenha uma sessão de imp criando as procedures , pois aí terá menos coisas pro imp fazer, deve demorar menos, menos chance de vc ter a conexão de rede derrubada, que é o que deve estar havendo, imagino eu. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Tinha uma base no 9i (linux) e queria exportar ela para o 8i (windows) , então conectei no 9i pelo 8i e fiz um export full. Deu certo !! Sem warnings !!! Dai criei as tablespaces (deu um grep [existe tb] pelo windows)... tudo ok... comecei o import depois de horas (naum segui os conselhos para acelerar).. deu um erro... falou de end of comunication do arquivo. Parou . Alguem tem ideia do pq ?? Notem, deu erro na parte de import das procedures, e quando parou estava importando um wraped procedure. Será que é isso ? Uma incompatibilidade ^? O que posso fazer ? Foi essa a minha maneira de transferir os dados a melhor ? (sem contar o tempo... afinal poderia ter usado indexfile... :-) ) [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fidb73j/M=403524.8266983.9075311.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1144007584/A=3154525/R=0/SIG=12igfl26t/*http://www.momentumquiz.com.br/index.php?md5ref=372BBEE98E9544bd8B2F9E87847EEEBE -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Re: IMPORT/EXPORT 8I/9I - WRAPED PROCEDURES - END COMMUNICATION
Segui as recomendaçoes, foi bem mais rapido... mas deu o erro de novo IMP-3: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channel isso aconteceu em menos de uma hora... outro erro que aconteceu foi de nao conseguir alocar segmentos na tabelespace de rollback... mas para esse acredito que seja necessario somente criar mais segmentos de rolllback, certo ? agora nao sei se esse problema de segmento possa ter gerado o de cima, mas acho dificil , tb naum sei se uma hora eh pouco para nao perder a sessao... nao imagino o que possa ser... On 4/2/06, jlchiappa [EMAIL PROTECTED] wrote: As procedures não tem, realmente, params para ser exportadas apenas elas, mas elas SEMPRE vêm ou num exp full=y ou num exp com owner=(listadeusuarios)- logicamente, vc vai especificar no export rows=n indexes=n contraints=n triggers=n grants=n statistics=none, o que sobra pra ter no .dmp será mesmo só o DDL das tabelas (que como eu disse em outra msg sempre vêm), os objetos programados( procedures/functions/packages), e itens que pertencem aos usuários mas não contém dados, como views, sequences, sinônimos Na hora de importar só não esqueça , claro, do IGNORE=y para que os objetos já existentes no banco mas que ainda assim constam do .dmp (como as tabelas) tenham a msg de erro correspondente ignorada, e o imp continue depois disso. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Vc diz uma sessao de imp criando soh as procedures mas para isso eu teria de fazer um exp full=y com rows=n para pegar as procedures, e depois um imp desse dump ? Digo isso porque olhando no documento de referencia dos utilitarios da oracle, vi que as triggers tem um parametros para exporta-las sozinhas , mas para procedure naum vi... Valeu. On 4/2/06, jlchiappa [EMAIL PROTECTED] wrote: Eu desconheço incompatibilidade per se entre procedures feitas (seja com código wrappado ou não) em 9i serem re-criadas em 8i, no máximo o que talvez poderia estar havendo é a procedure 9i estar usando algum recurso especial do 9i não reconhecido no 8i, e o import 8i por bug ao invés de acusar logo erro fica tentando criar e se perde, mas isso é uma possibilidade remota. O que eu acho mais provável é , em o import demorando tantas e tantas horas assim, vc esteja é tendo a sessão dele na rede sendo encerrada por firewall ou filtro, ou mesmo por configs de seu usuário na rede/servidor, então a sugestão é : USE os procedimentos citados pra acelerar, na hora de importar tenha vários .dmps sendo importados em paralelo, depois crie os índices/constraints rapidamente com as opções de performance citadas, e só *** depois *** dos dados ok aí sim vc tenha uma sessão de imp criando as procedures , pois aí terá menos coisas pro imp fazer, deve demorar menos, menos chance de vc ter a conexão de rede derrubada, que é o que deve estar havendo, imagino eu. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Tinha uma base no 9i (linux) e queria exportar ela para o 8i (windows) , então conectei no 9i pelo 8i e fiz um export full. Deu certo !! Sem warnings !!! Dai criei as tablespaces (deu um grep [existe tb] pelo windows)... tudo ok... comecei o import depois de horas (naum segui os conselhos para acelerar).. deu um erro... falou de end of comunication do arquivo. Parou . Alguem tem ideia do pq ?? Notem, deu erro na parte de import das procedures, e quando parou estava importando um wraped procedure. Será que é isso ? Uma incompatibilidade ^? O que posso fazer ? Foi essa a minha maneira de transferir os dados a melhor ? (sem contar o tempo... afinal poderia ter usado indexfile... :-) ) [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fidb73j/M=403524.8266983.9075311.1588051/D=brclubs/S
Re: [oracle_br] Re: Copiar bancos
Essas dicas realmente foram incriveis !!! mas ficaram algumas duvidas... o chiappa falou de ***vc primeiro faz ** vários ** exps em paralelo (quantas a tua máquina suportar sem arrear), só de dados, cada um pegando uma porção das tabelas* ** como pegart essa uma porcao de tabelas ? vc diz pegar tabelas usando o parametro tables ? ou usar os schemas? vc naum aconselha fazer um full=y? mas nao ficaria inviavel caso vc tenha centenas e centenas de tabelas ? *depois vc gera um script .sql desses índices e constraints (opção INDEXFILE do imp), e altera esse script para criar os índices com NOLOGGING (e PARALLEL se a máquina suporta) e as constraints com ENABLE NOVALIDATE.* Vc tem alguma dica para editar/alterar mais rapidamente esses arquivos ? outra coisa, soh para confirmar, qndo faco o exp com o indexfile, coloco rows=n constraints=y indexes=y, mas ele coloca os scripts de criacao da tabelas la ? esta correto Valew. On 3/31/06, Jemerson Dutra [EMAIL PROTECTED] wrote: Realmente Incrivel, fiz um teste usando os parametros que o chiapa deu uns toques e meu export que durava horas veio para casa dos 23 minutos. Porem creio que meu hardware nao a altura do de vcs. Jemerson Valeu chiappa. --- Em oracle_br@yahoogrupos.com.br, DBA - ORACLE [EMAIL PROTECTED] escreveu Depois do help do Chiappa, fiz o export da base de produção e durou 40 minutos, indexes=n direct=y compress=n grants=y constranits=n Detalhe...o servidor de produção tem 25GB gerando um dump de 15GB Marcio Em 29/03/06, jlchiappa [EMAIL PROTECTED] escreveu: Colega, com certeza 10 Gb num servidor bom de Produção (que além de RAM, esteja com discos rápidos, controladora de fibra), que (obviamente!) na hora do export esteja com uma carga leve, ou mesmo sem carga, num banco decentemente configurado, sendo export local E usando as opções adequadas de performance, não é NEM DE LONGE uma carga extrema assim pra levar horas e horas, um exemplo na minha máquina de produção (hp-ux 64 bits, 24 processadores, 32 Gb de RAM, arrays de discos EMC Symmetrix DMX Series alocado/gerenciado pelo PowerPath, com filesystems cooked ) : [EMAIL PROTECTED]:SQLselect num_rows, avg_row_len from dba_tables where table_name='TMP_MIGEP_101891'; NUM_ROWSAVG_ROW_LEN -- -- 59541295248 == essa tabela é um pouco larga, como se vê pelo AVG_ROW_LEN, mas não está com muito white-space, pois : [EMAIL PROTECTED]:SQLselect 59541295*248 from dual; 59541295*248 -- 14766241160 == pela média se esperava coisa de 14 Gb, real alocado eu tenho coisa de 16 : [EMAIL PROTECTED]:SQLselect sum(bytes) from dba_extents where segment_name='TMP_MIGEP_101891'; SUM(BYTES) 16.735.272.960 == ou seja, é até mais do que os seus 10 Gb, ok ? Vamos fazer o export (neste momento a máquina está em uso, mas com uma carga relativamente leve, alguns usuários rodando reports diários, nada excepcional) : usr_adm:PRD:/trafico/usr_admexp chiappa/x buffer=10485760 file=TMP_MIGEP_101891.dmp compress=n grants=n indexes=n direct=y log=TMP_MIGEP_101891.exp tables=usr.TMP_MIGEP_101891 recordlength=65535 statistics=none constraints=n feedback=10 Export: Release 9.2.0.5.0 - Production on Qua Mar 29 10:02:37 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Conectado a: Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production With the Partitioning option JServer Release 9.2.0.5.0 - Production Exportação executada no conjunto de caracteres de WE8ISO8859P1 e no conjunto de caracteres de AL16UTF16 NCHAR OBS: concessões em tabelas/views/seqüências/funções não serão exportadas OBS: índices em tabelas não serão exportados OBS: restrições em tabelas não serão exportadas Sobre exportar tabelas especificadas ... via Caminho Direto ... O usuário atual foi alterado para usr . . exportando tabela TMP_MIGEP_101891 .. . . == cada pontinho acima é 100 mil linhas (é o param feedback), vc não vê mas aqui na minha tela cada um deles aparece a cada segundo/segundo e meio, e essa performance de ler em direct-mode coisa de 100 mil linhas por segundo é a normal, afaik, prum servidor de Produção. Vamos ver quando termina : -rw-r--r-- 1 usr_admusr16648983040 Mar 29 10:40 TMP_MIGEP_101891.dmp ou seja, levei coisa de pouco mais de meia hora : tudo bem, de repente vc tem um hardware um pouco inferior, que leve uma hora , porém mais que isso é ** inaceitável ** numa máquina de Produção full, se vc está tendo algo pior que isso num caso semelhante ao acima vc TEM
Re: [oracle_br] RES: Import Full /Export Full - Duplicar instancia
Rodei o metadata e ele trouxe CLOB... Pq On 3/30/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Obrigado !!! Gostei da alternativa, muito boa Se o meu for 8i eu nao vou ter essa peckage dbms_metadata, entao teria de fazer na mão , o que também não é dificil, VALEU! Depois de criar as tablespaces é só fazer o imp full com o system/manager, confere ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Vc pode fazer assim: Método 1) Exp . ROWS=N Desta forma o arquivo DMP gerado pode ser editado e vc copia a parte do sql que cria as tablespaces, e daí basta alterar para gravar onde vc quer. Método 2) (para banco 9i acima) select lower(dbms_metadata.get_ddl('TABLESPACE',u.TABLESPACE_NAME)) from dba_tablespaces u; Eu prefiro mais o segundo ... Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto: [EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: quinta-feira, 30 de março de 2006 18:02 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] RES: Import Full /Export Full - Duplicar instancia Se eu tivesse por exemplo, 200 tablespace, não seria inviavel esse processo ? Tem algo mais agil por script , pelo imp ? Tem alguma ferramenta da oracle ? On 3/30/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Essa é a unica maneira ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Faz assim: - na máquina nova, já cria as tablespaces com os mesmos nomes do banco original, mas nos locais onde vc pode criar - no IMP.exe, acrescente IGNORE=Y Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12f6dja3a/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1143760527/A=3365371/R=2/id=noscript/SIG=110csbogi/*http://www.yahoo.com.br/cinema -- *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] [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] Exp Imp utilizando o Data Pump
Não ira dar problema nos datafiles ? eles não estão com o diretorio da outra maquina ? On 3/31/06, Reginaldo F. Silva [EMAIL PROTECTED] wrote: Outra maneira sem usar Exp/Imp set oracle_sid=SID1 sqlplus / as sysdba alter database backup controlfile to trace as 'caminho\ControlFile.out' reuse; shutdown immediate; exit; faça uma cópia fria do banco renomeando a pasta para o caminho desejado (ex: F:\Oradata\Base1 - G:\Oradata\Base2) set oracle_sid=SID1 sqlplus / as sysdba startup exit; edite o arquivo caminho\ControlFile.out e ajuste o novo nome base e caminho. Ex: CREATE CONTROLFILE REUSE DATABASE OLD_NAME NORESETLOGS NOARCHIVELOG para CREATE CONTROLFILE REUSE SET DATABASE NEW_NAME RESETLOGS NOARCHIVELOG Crie o arquivo initSID2.ora para a nova base Crie a instancia (oradim -new ...) set oracle_sid=SID2 sqlplus / as sysdba startup nomount pfile=caminho\initSID2.ora @caminho\ControlFile.out Este método pode ser usado inclusive para copiar para outros servidores (manter exatamente a mesma versão do oracle) Atenciosamente, Reginaldo de Fáveri da Silva Administrador de Banco de Dados Oracle 8i Certified Softplan Plan. Sist. Ltda. Fone.:(0xx48) 3027-8000 Sistema da Qualidade Certificado ISO9001-BVQI/INMETRO -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de wpedroti Enviada em: quinta-feira, 30 de março de 2006 17:13 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Exp Imp utilizando o Data Pump olá Pessoal, Sou novo no grupo e já estou com problemas no import, tentei detalhar o máximo possível do erro, caso alguém tenha uma luz, desde já agradeço. Obrigado Oracle 10g em um servidor RedHat 4.0. Tenho o seguinte script para fazer o export: su - oracle -c /oracle/product/10.2.0/db_1/bin/expdp luk/[EMAIL PROTECTED] schemas=DOV directory=DOV DUMPFILE=$nomearq_dov LOGFILE=expdp_dov.log O log da exportação: . . exported LUK.SCSDO0A0 8.398 KB 40 rows Master table LUK.SYS_EXPORT_SCHEMA_01 successfully loaded/unloaded ** Dump file set for LUK.SYS_EXPORT_SCHEMA_01 is: /bkp/luk/dov2006_Mar_24.dmp Job LUK.SYS_EXPORT_SCHEMA_01 successfully completed at 02:02:55 A importação é feita em uma máquina com sistema operacional WXP Script da importação: impdp luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log O log da importação Conectado a: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Tabela-mestre LUK.SYS_IMPORT_SCHEMA_01 carregada/descarregada com sucesso Iniciando LUK.SYS_IMPORT_SCHEMA_01: luk/[EMAIL PROTECTED] schemas=LUK directory=LUK dumpfile=dov2006_Mar_24.dmp logfile=impdp_dov.log Processando o tipo de objeto SCHEMA_EXPORT/USER ORA-31684: O tipo de objeto USER:LUK já existe ORA-31684: O tipo de objeto SEQUENCE:LUK.TOTALCL_DFSEQ já existe Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE ORA-39151: A tabela LUK.MCUSR0A0 existe. Todos os metadados e dados dependentes serão ignorados em decorrência de table_exists_action ignorado Processando o tipo de objeto SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS O job LUK.SYS_IMPORT_SCHEMA_01 foi concluído com 655 erro(s) em 13:13:40 -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos)
[oracle_br] Import Full /Export Full - Duplicar instancia
Pessoal, Tenho algumas perguntas : 1- Quais são as maneiras para duplicar uma base de dados na mesma maquina ? E duplica-la numa outra (mas com diretorio diferentes de objetos) ? 2- Fiz um export full numa maquina, assim ele copiou tudo (eu espero) até as definicoes de tablespace, mas eu quero fazer agora import full numa outra maquina, contudo ele quer criar as tablespaces em diretorios que não existem nessa maquina, só na outra , o que fazer ? Por favor, eu estou fazendo os procedimentos acima tanto no 10g como no 8i, e não estou usando expdp,impdp no 10g mas sim o exp,imp. Valeu. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] RES: Import Full /Export Full - Duplicar instancia
Essa é a unica maneira ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Faz assim: - na máquina nova, já cria as tablespaces com os mesmos nomes do banco original, mas nos locais onde vc pode criar - no IMP.exe, acrescente IGNORE=Y Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: quinta-feira, 30 de março de 2006 17:01 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Import Full /Export Full - Duplicar instancia Pessoal, Tenho algumas perguntas : 1- Quais são as maneiras para duplicar uma base de dados na mesma maquina ? E duplica-la numa outra (mas com diretorio diferentes de objetos) ? 2- Fiz um export full numa maquina, assim ele copiou tudo (eu espero) até as definicoes de tablespace, mas eu quero fazer agora import full numa outra maquina, contudo ele quer criar as tablespaces em diretorios que não existem nessa maquina, só na outra , o que fazer ? Por favor, eu estou fazendo os procedimentos acima tanto no 10g como no 8i, e não estou usando expdp,impdp no 10g mas sim o exp,imp. Valeu. -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] RES: Import Full /Export Full - Duplicar instancia
Se eu tivesse por exemplo, 200 tablespace, não seria inviavel esse processo ? Tem algo mais agil por script , pelo imp ? Tem alguma ferramenta da oracle ? On 3/30/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Essa é a unica maneira ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Faz assim: - na máquina nova, já cria as tablespaces com os mesmos nomes do banco original, mas nos locais onde vc pode criar - no IMP.exe, acrescente IGNORE=Y Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto: [EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: quinta-feira, 30 de março de 2006 17:01 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Import Full /Export Full - Duplicar instancia Pessoal, Tenho algumas perguntas : 1- Quais são as maneiras para duplicar uma base de dados na mesma maquina ? E duplica-la numa outra (mas com diretorio diferentes de objetos) ? 2- Fiz um export full numa maquina, assim ele copiou tudo (eu espero) até as definicoes de tablespace, mas eu quero fazer agora import full numa outra maquina, contudo ele quer criar as tablespaces em diretorios que não existem nessa maquina, só na outra , o que fazer ? Por favor, eu estou fazendo os procedimentos acima tanto no 10g como no 8i, e não estou usando expdp,impdp no 10g mas sim o exp,imp. Valeu. -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. -- *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] [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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] RES: Import Full /Export Full - Duplicar instancia
Obrigado !!! Gostei da alternativa, muito boa Se o meu for 8i eu nao vou ter essa peckage dbms_metadata, entao teria de fazer na mão , o que também não é dificil, VALEU! Depois de criar as tablespaces é só fazer o imp full com o system/manager, confere ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Vc pode fazer assim: Método 1) Exp . ROWS=N Desta forma o arquivo DMP gerado pode ser editado e vc copia a parte do sql que cria as tablespaces, e daí basta alterar para gravar onde vc quer. Método 2) (para banco 9i acima) select lower(dbms_metadata.get_ddl('TABLESPACE',u.TABLESPACE_NAME)) from dba_tablespaces u; Eu prefiro mais o segundo ... Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Marcelo Cauduro Enviada em: quinta-feira, 30 de março de 2006 18:02 Para: oracle_br@yahoogrupos.com.br Assunto: Re: [oracle_br] RES: Import Full /Export Full - Duplicar instancia Se eu tivesse por exemplo, 200 tablespace, não seria inviavel esse processo ? Tem algo mais agil por script , pelo imp ? Tem alguma ferramenta da oracle ? On 3/30/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Essa é a unica maneira ? On 3/30/06, Ederson [EMAIL PROTECTED] wrote: Faz assim: - na máquina nova, já cria as tablespaces com os mesmos nomes do banco original, mas nos locais onde vc pode criar - no IMP.exe, acrescente IGNORE=Y Ederson Elias de Oliveira DBA Oracle Setransp - Goiânia-GO --- -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12f6dja3a/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1143760527/A=3365371/R=2/id=noscript/SIG=110csbogi/*http://www.yahoo.com.br/cinema -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 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
[oracle_br] Simular saida de blocos CACHE
Pessoal, estou fazendo testes com o DBMS_PROFILER e quero ter certeza que nenhum bloco de de dados ou procedimentos estejam em minha cache, basta eu fazer um : alter tablespace NOME offline alter tablespace NOME online mas, eu gostaria de saber se existe alguma outra maneira de forcar a limpeza do cache (memoria para disco) , e qual as consequencias dessa e da outra maneira. Muito Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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] Re: Simular saida de blocos CACHE
Era o que eu precisava, Obrigado Chiapa boa explanação !!! On 2/23/06, jlchiappa [EMAIL PROTECTED] wrote: Na verdade essa é uma birra antiga minha com a dona Oracle, até ao menos nas versões que uso mais frequentemente (ie, 9ir2) ** não ** há um comando/package/utilitário/o que for pra vc manipular blocos no cache de blocos (seja removendo blocos do cache, seja mudando a ordem de dados blocos no cache, ou coisas do tipo), a respostinha-padrão dela é que isso seria difícil de fazer, mas não acho isso, pois até poderia se exigir que pra isso o banco estivesse aquietado, ou que não houvesse transações, mas enfim, é isso. Voltando à resposta : já que é assim, o que vc faz pra remover blocos do cache é ter uma situação que o banco seja forçado a fazer um checkpoint e os remover da RAM : pode ser tablespace sendo offlined, pode ser outros blocos diferentes entrando no cache, pode ser banco sendo shutado... Normalmente o que eu uso mesmo é a tablespace offline. Consequência da tablespace offline é que, enquanto ela estiver offline, vc não poderá mais acessar nada do que estiver nela, não poderá gravar nem ler, PODE interferir em jobs/MVs/etc que precisem dos objetos nessa tablespace, mas é um comando normal e acessível, não vai quebrar nada no seu banco. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, estou fazendo testes com o DBMS_PROFILER e quero ter certeza que nenhum bloco de de dados ou procedimentos estejam em minha cache, basta eu fazer um : alter tablespace NOME offline alter tablespace NOME online mas, eu gostaria de saber se existe alguma outra maneira de forcar a limpeza do cache (memoria para disco) , e qual as consequencias dessa e da outra maneira. Muito Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12f12ja3b/M=396547.7942355.8848059.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1140708356/A=3310604/R=2/id=noscript/SIG=1540fueht/*http://lt.dell.com/lt/lt.aspx?CID=11377LID=314739DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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
[oracle_br] Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions
Alguem saber me informar se o livro Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions do Thomas Kyte é uma atualização do Expert One on One do próprio Thomas Kyte, Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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
[oracle_br] Expert Oracle Database Architecture
-- Forwarded message -- From: Marcelo Cauduro [EMAIL PROTECTED] Date: Feb 23, 2006 4:25 PM Subject: Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions To: oracle_br@yahoogrupos.com.br Alguem saber me informar se o livro Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions do Thomas Kyte é uma atualização do Expert One on One do próprio Thomas Kyte, Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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] FK's
Tire as virgulas e acrescente ADD's ALTER TABLE TABLE_NAME ADD CONSTRAINT FK001 FOREIGN KEY ( COD_AQUIS_ACE_ESTRUT_ORGN ) REFERENCES ACE_ESTRUT_ORGN ( CODIGO ) ADD CONSTRAINT FK002 FOREIGN KEY ( COD_LOCAL_ACE_ESTRUT_ORGN ) REFERENCES ACE_ESTRUT_ORGN ( CODIGO ) ADD CONSTRAINT FK003 FOREIGN KEY ( MATR_CO_RESP_DDV_VINCULO_SERVD ) REFERENCES DDV_VINCULO_SERVIDOR ( MATRICULA ) ADD CONSTRAINT FK004 FOREIGN KEY ( MATR_RESP_DDV_VINCULO_SERVD ) REFERENCES DDV_VINCULO_SERVIDOR ( MATRICULA ) / On 2/21/06, Daniel Mello [EMAIL PROTECTED] wrote: vc só pode criar uma de cada vez. -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de Gilvan Alysson Sobrinho Enviada em: terça-feira, 21 de fevereiro de 2006 14:23 Para: Oracle_br Assunto: [oracle_br] FK's Pessoal Boa tarde. Bom, estou criando algumas FKs da seguinte forma: Onde estou errando? Posso fazer dessa forma? ALTER TABLE TABLE_NAME ADD CONSTRAINT FK001 FOREIGN KEY ( COD_AQUIS_ACE_ESTRUT_ORGN ) REFERENCES ACE_ESTRUT_ORGN ( CODIGO ), CONSTRAINT FK002 FOREIGN KEY ( COD_LOCAL_ACE_ESTRUT_ORGN ) REFERENCES ACE_ESTRUT_ORGN ( CODIGO ), CONSTRAINT FK003 FOREIGN KEY ( MATR_CO_RESP_DDV_VINCULO_SERVD ) REFERENCES DDV_VINCULO_SERVIDOR ( MATRICULA ), CONSTRAINT FK004 FOREIGN KEY ( MATR_RESP_DDV_VINCULO_SERVD ) REFERENCES DDV_VINCULO_SERVIDOR ( MATRICULA ) / [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.ard.yahoo.com/SIG=12fiqor8v/M=396547.7942355.8848059.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1140550483/A=3310604/R=2/id=noscript/SIG=1540fueht/*http://lt.dell.com/lt/lt.aspx?CID=11377LID=314739DGC=BADGSeg=DHSDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 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] Re: Oracle Concepts - Documento
essa high water mark me confundiu... ela é verificada em inserts e updates ? Por que se sim, e se quando eu deleto eu libero linha mas ela fica no me mesmo lugar... eu não iria reusar os blocos livres por meio do espaço deixado com os deletes... On 1/23/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Muito legal Chiapa, mas fica a dúvida, pelo que entendi... sempre qndo faço um delete ou mesmo um update para null value e os parametros pctused e pctfree estiverem ok, ou seja, tiver espaco livre maior que pctfree por exemplo, os extents do segmento que tinham as linhas que foi removida, ou até todo o segmento, dependendo do volume do delete/update, fica livre na hora... mas é ai que surge minha dúvida... lendo o concepts aprendi o conceito da high water mark ou marca d'agua, que seria o limite entre os blocos usados e não usados, ou seja, ela indica o ultimo bloco usado na tabela, mas quando se faz delete, pelo que entendi, essa marca d'gua não é restabelecida, - isso não afetaria a liberação dos extents ?? - ou essa marca é usada apenas para quando o Oracle vai recuperar os dados, ou seja, ele le todos os blocos até a high water mark, não afetando os updates/deletes ? On 1/23/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Lendo o Oracle Concepts Part II, Chapter 2 and 3, fiquei com as seguintes dúvidas : Um segmento é só para um objeto certo ? Um segmento = um objeto ** lógico **, ou seja, um item que possui storage. Por exemplo, 1 tabela simples (heap table) = 1 objeto lógico = 1 segmento, mas para tabelas particionadas é CADA PARTIÇÃO = 1 objeto lógico = 1 segmento, já que cada partição pode ser fisicamente diferente, alocada em locais e formas diferentes. Quando você apaga linhas de uma tabelas, os extents de um determinado segmento que continham essas linhas nâo sâo liberados para novas linhas ? São automaticamente liberados pra novas linhas, MAS desde que seja insert na mesma tabela. Há alguma excessao ? Não, em sendo tabelas e índices comuns. Pelo que li ele só são liberados quando uma nova insercao é feita, Incorreto : assim que as qtdades de deleções num bloco ultrapassam o especificado em PCTFREE, e sempre respeitando PCTUSED, o bloco vai pra lista de blocos livres, está LIBERADO pra reuso, e será TRANQUILAMENTE reusado quando for necessário, SEJA pra INSERTs, SEJA pra UPDATEs que ultrapassaram o espaço atual. que isto naum é feito na hora da exclusao ? É feito, mas o conceito aqui é : pra se obter a melhor performance possível em INSERTs/UPDATEs, assim que a tabela é criada, mesmo estando VAZIA, o banco já aloca um extent pra ela, e conforme vão ocorrendo novos INSERTs/UPDATEs que precisem de espaço, novos extents vão sendo alocados pra tabela. A chave aqui é, já que na maioria das vezes num banco de dados ativo a maioria das tabelas são dinâmicas (ie, hoje cresceu, daqui a pouco já tem deleção, logo depois tem novas inserções) pra poupar tempo e ganhar performance o banco considera TODO o espaço alocado pra um segmento como pertencente a ele, quando há deleções ou DMLs que livrem espaço, o espaço é livre MAS é espaço livre para uso DESSE segmento dono, é isso : assim, o banco se poupa o trabalho de ter que alocar novos extents. É por isso que tabelas de transação, que só crescem num job tipo fim de mês, e crescem aleatoriamente, muitas vezes até diminuindo em muito de tamanho, se desejado reaproveitamento desse espaço por OUTRAS tabelas, em princípio deveriam ser TRUNCADAS, aí sim o espaço livre delas fica disponível pra qquer outro segmento do banco, com exceção do extent inicial. []s Chiappa -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __ *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12f3ff9ka/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1138019872/A=2950750/R=2/id=noscript/SIG=10tift5qr/*http://br.movies.yahoo.com/ -- *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] [EMAIL PROTECTED] - O uso que
[oracle_br] Fwd: Procedimento Basicos DBA Junior
Pessoal, Estava pensando aqui quais são os procedimento básicos que um DBA Júnior tem que saber, Backup Recovery Export/Import Dicionario de Dados Melhor, tem que saber o Oracle Concepts e Backup e Recovery bem Que mais ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __ 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
[oracle_br] Long / LOB
O tipo de dados Long é acesso de forma sequencia quando o LOB é acessado de formado randômica. Conforme User Guide Reference da Oracle Pg 3-10. O Long é armazenado sempre no final da linha, no mesmo datafile onde é armazenado a tabela , é isso mesmo ? Agora ja o LOb se o dado for maior que X bytes, ele guarda o ponteiro de qual o datafile e posicao esta o Lob. Mas não vejo como um pode ter acesso randomico e o outro sequencial. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __ 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
[oracle_br] Oracle Concepts - Documento
Pessoal, Lendo o Oracle Concepts Part II, Chapter 2 and 3, fiquei com as seguintes dúvidas : Um segmento é só para um objeto certo ? Quando você apaga linhas de uma tabelas, os extents de um determinado segmento que continham essas linhas nâo sâo liberados para novas linhas ? Há alguma excessao ? Pelo que li ele só são liberados quando uma nova insercao é feita, mas por que isto naum é feito na hora da exclusao ? Obrigado. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --__ Moderador e Fundador: Dorian Anderson Soutto [EMAIL PROTECTED] __ 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
[oracle_br] Long / LOB
O tipo de dados Long é acesso de forma sequencia quando o LOB é acessado de formado randômica. Conforme User Guide Reference da Oracle Pg 3-10. O Long é armazenado sempre no final da linha, no mesmo datafile onde é armazenado a tabela , é isso mesmo ? Agora ja o LOb se o dado for maior que X bytes, ele guarda o ponteiro de qual o datafile e posicao esta o Lob. Mas não vejo como um pode ter acesso randomico e o outro sequencial. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Procedimento Basicos DBA Junior
Pessoal, Estava pensando aqui quais são os procedimento básicos que um DBA Júnior tem que saber, Backup Recovery Export/Import Dicionario de Dados Melhor, tem que saber o Oracle Concepts e Backup e Recovery bem Que mais ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Expert One on One: Oracle
Eu vi essa citação abaixo do Chiapa na lista,mas fiquei na duvida, a traducao Dominando Oracle Programação Avançada não é muito boa porque tem erros como traduzir tablespace para X qndo deveria ficar tablespace, ou porque ele não é completo como o Expert One on One: Oracle Valeu. Expert One on One: Oracle, Thomas Kyte Editora: Wrox Press Inc ISBN: 1861004826, 1265 pags Recomendado : por todas as fontes agora está contido num CD-ROM no livro : Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions, Thomas Kyte Editora Apress ISBN: 1590595300 == tradução do livro Expert One on One : (não muito boa) Dominando Oracle Programação Avançada, Thomas Kyte Editora: Ciência Moderna ISBN: 85-7393-186-8 Número de Páginas: 1088 site da Editora : http://www.lcm.com.br/ [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Nowait - Resource
Pessoal, estou tentando usar o NOWAIT para não permitir o update em uma determinada linha que estará em processamento. Mas para testes fiz um procedimento que abre dois cursores que dão lock na linha, mas ai é que ta o problema., ele permite abrir os dois cursores que dao lock na mesma linha, ... mas pensei que o for update nào deixa-se... não era para travar ? dar resource busy... Meu oracle é 8i. prompt -- Criacao das tabelas create table teste_nowait ( a number); insert into teste_nowait values (1) prompt -- Ai vai o teste : declare --prompt -- Cria primeiro cursor cursor i is select a from teste_nowait where a =1 for update OF a NOWAIT; --prompt -- Cria segundo cursor cursor i2 is select a from teste_nowait where a =1 for update OF a NOWAIT; --prompt -- Declara variaveis cursor1 i%rowtype; cursor2 i2%rowtype; begin --prompt -- Abre os dois cursores open i; open i2; --prompt -- Obtem dados fetch i into cursor1; fetch i2 into cursor2; --prompt -- Realiza alteracoes if i2%found then update teste_nowait set a=cursor2.a+1 where current of i2; END IF; if i%found then update teste_nowait set a=cursor1.a+1 where current of i; END IF; rollback; close i; CLOSE I2; end; [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Procedimento Basicos DBA Junir
Pessoal, Estava pensando aqui quais são os procedimento básicos que um DBA Júnior tem que saber, Backup Recovery Export/Import Dicionario de Dados Melhor, tem que saber o Oracle Concepts e Backup e Recovery bem Que mais ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Long / LOB
O tipo de dados Long é acesso de forma sequencia quando o LOB é acessado de formado randômica. Conforme User Guide Reference da Oracle Pg 3-10. O Long é armazenado sempre no final da linha, no mesmo datafile onde é armazenado a tabela , é isso mesmo ? Agora ja o LOb se o dado for maior que X bytes, ele guarda o ponteiro de qual o datafile e posicao esta o Lob. Mas não vejo como um pode ter acesso randomico e o outro sequencial. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Como saber qual numero falta na pk ?
Marcio, essa query nao retorna ORA-01473: cannot have subqueries in CONNECT BY clause ? On 1/17/06, Marcio Portes [EMAIL PROTECTED] wrote: select * from ( with seq as ( select level l from dual connect by level = ( select max(x) from t ) ) select l, x, decode(x, null, l ) falta from seq left outer join t on ( l = x ) order by 1 ) where falta is not null / Seria um método. Segue exemplo: Balise a sequencia com uma view completa e faça um outer join com sua tabela. Com uma comparação simples, voce encontrará os gaps. SQL select * from t; X - 1 3 4 5 6 10 13 7 rows selected. SQL with seq as ( 2 select level l 3from dual connect by level = ( select max(x) from t ) 4 ) 5 select l, x, decode(x, null, l ) falta 6from seq left outer join t on ( l = x ) 7 order by 1 8 / L X FALTA - - - 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1010 11 11 12 12 1313 13 rows selected. criscadba wrote: Boa tarde ! Os desenvolvedores usam uma sequence para preencher a pk de uma tabela, só que alguém andou com a sequence em alguns momentos e a pk da tabela, que tem que ser sequencial, ficou com furos, exemplo : protocolo_inscricao 1 3 4 5 6 10 13 Há alguma função que me diga quais os números estão faltando porque foram pulados pelo avanço indevido da sequence ? -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12fib5nru/M=387526.7663462.8697482.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1137553830/A=3242383/R=2/id=noscript/SIG=16fepr8g1/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10164LID=293758DGC=BADGStor=DHSDGSite=YahooConum=BRDURL=http://www1.la.dell.com/content/products/category.aspx/notebooks?c%3Dbr%26l%3Dpt%26s%3Ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Re: DBMS_Profiler Test - Uso de indice - Resultado estranhos
Bem, o meu teste era mais para o teste do site: http://asktom.oracle.com/pls/ask/f?p=4950:8:5311414143597218675::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:13912109165500 com FBI para pegar null values... para comprovar a eficacia Obrigado pela explanacao do assunto... Deu para entender os LIO PIO... tks... On 1/11/06, jlchiappa [EMAIL PROTECTED] wrote: Não entendi direito o que vc queria testar, mas pelo que vi vc tem uma proc com um monte de DMLs(INSERT no caso) e vc a rodou SEM e COM o índice criado, é isso ?? Se é isso, vc comprovou um conceito básico de BDs, em especial Oracle, que é : índices server pra ACELERAR SELECTs, SE puderem ser usados corretamente, ** E ** para degradar DMLs, sejam INSERTs, DELETEs ou UPDATEs, ambas as coisas estão sempre juntas. A causa é simples, quando vc faz um DML, além de mexer nos blocos da tabela, o banco TEM QUE atualizar o índice com a nova informação, e um índice é uma estrutura complexa, que obrigatoriamente TEM SEMPRE que estar ordenada, isso tem custo, então fazer DML numa tabela SEM índice é SEMPRE, por definição, mais rápido do que o mesmo DML numa tabela com índices, pois o índice tem que ser atualizado também Quanto aos PIOs (Physical IOs) e aos LIOs (Logical IOs), sim, vc não entendeu bem o conceito, deixa eu ver se consigo explicar : no bd Oracle, se o bloco onde há registro(s) a ser lido não está no cache, o banco vai ler no disco (isso é um PIO), ** E ** imediatamente , antes mesmo de ser usado, esse bloco TEM QUE ir pro cache, isso é um LIO. Então, TODO PIO (com exceção de blocos em tabelas GTTs, sorts/hashes, etc) no princípio gera um LIO, os PIOs ** já estão ** inclusos nos LIOs na primeira leitura do banco, é isso. Então cuidando dos LIOs vc não está desprezando os PIOs, na verdade os está cuidando de forma indireta, ok ?? O documento http://asktom.oracle.com/pls/ask/f?p=4950:8:F4950_P8_DISPLAYID:6643159615303 no asktom ilustra o princípio, a idéia é vc PRIMEIRO focar em como alterar o SQL e/ou a estrutura do banco diminuir os LIOs, que de embrulho vc diminuindo os LIOs vc já baixa EM MUITO os PIOs, certo ? Feito isso, aí sim vc pode pensar nos PIOs, embora vai de regra eles já terão diminuído pracas, não deve ser possível fazer muito mais com eles. Pra ficar claro : PIOs num trace são os blocos marcados como Physical Reads, e LIOs são a soma dos blocos current gets + consistent gets. Quanto ao current/consistent get : é verdade que a leitura do cache é mais rápida do que leitura física, MAS mesmo leituras do cache ** não são ** grátis : leitura do cache implica que , na fração de segundo que eu estou lendo, ninguém pode alterar esse bloco, isso é, há um bloqueio em RAM nesse bloco, o latch. Então se vc pode obter a mesma informação lendo (digamos) 100 blocos, MAS por erro do SQL, da estrutura, o que for, vc está lendo 1000, esse SQL é ineficiente, AINDA QUE todas essas 1000 leituras tenham sido de RAM, eu fiz MUITO mais bloqueios em RAM (latches) do que o mínimo possível,estou gastando MUITO mais CPu que o mínimo necessário, a hora que esse aplicativo começar a crescer, a atender mais usuários, esses latches extras vão começar a pesar na performance, é isso. == EM RESUMO : absolutamente NÂO basta vc só olhar se as leituras são físicas ou em RAm, vc tem é que tratar de fazer o MENOS de leitura de blocos possível, ok ? É isso. Esses pontos estão mais detalhadamente expostos em www.hotsos.com , no link Library escolha o paper Why You Should Focus on LIOs Instead of PIOs, vc tem que se registrar no site mas é grátis. Quanto ao Custo no explain plan, vc obtém isso SE estiver rodando em CBO, e tiver estatísticas, é isso. []s Chiappa E o método proposto se baseia no fato de que, SE vc diminuir o número de leituras em RAM, já que muitas Consistent gets são os blocos que --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Entedi, obrigado, nao sabia que o profiler era soh para pl... quanto ao autotrace consegui as informacoes COM INDICE : Statistics -- 0 recursive calls 0 db block gets 142 consistent gets 0 physical reads 0 redo size 18795 bytes sent via SQL*Net to client 8050 bytes received via SQL*Net from client 70 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1000 rows processed SEM INDICE : Statistics - 0 recursive calls 5 db block gets 252 consistent gets 182 physical reads 0 redo size 18796 bytes sent via SQL*Net to client 8002 bytes received via SQL*Net from client 70 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk
Re: [oracle_br] Re: DBMS_Profiler Test - Uso de indice - Resultado estranhos
Impressionante Perfeito Muito, Muito Obrigado ! Agora entendi ! On 1/12/06, jlchiappa [EMAIL PROTECTED] wrote: Vamos fazer o teste certinho, então, em cima da última msg, e vamos ver o que acontece. Primeiro, vamos fazer o setup do ambiente, ie, tenho uma tabela não-minúscula, com apenas alguns POUCOS registros com um dado campo NULL, preciso dentro do universo maior da tabela o mais rapidamente possível recuper esses poucos, primeiro a criação : [EMAIL PROTECTED]:SQLcreate table T1 tablespace ORAUSERS as (select * from all_objects); Tabela criada. [EMAIL PROTECTED]:SQLinsert into T1 (select * from all_objects); 2903 linhas criadas. [EMAIL PROTECTED]:SQLinsert into T1 (select * from all_objects); 2903 linhas criadas. [EMAIL PROTECTED]:SQLinsert into T1 (select * from all_objects); 2903 linhas criadas. [EMAIL PROTECTED]:SQLcommit; Validação completa. [EMAIL PROTECTED]:SQLalter table T1 modify (CREATED null); Tabela alterada. [EMAIL PROTECTED]:SQLdesc T1 Nome Nulo?Tipo - -- -- OWNER NOT NULL VARCHAR2(30) OBJECT_NAME NOT NULL VARCHAR2(30) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NOT NULL NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPEVARCHAR2(18) CREATEDDATE LAST_DDL_TIME NOT NULL DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) [EMAIL PROTECTED]:SQLinsert into T1(owner, object_name, created, last_ddl_time, object_id) 2* (select owner, object_name, NULL, last_ddl_time, object_id from all_objects where rownum 7); [EMAIL PROTECTED]:SQL/ 6 linhas criadas. [EMAIL PROTECTED]:SQLcommit; Validação completa. == OK, está setado o ambiente, reproduzi a sua situação, numa tabela maior tenho alguns poucos regs com null que quero acessar. Como já mostrado anteriormente, um índice simples ** NÂO ** ia adiantar grande coisa, pois NULLs nunca entram num índice b*tree. vamos criar a função que identifica os nulls, e o índice : [EMAIL PROTECTED]:SQLcreate or replace function func_ret_data_null (P_CREATED date) return NUMBER 2 deterministic 3 as 4 BEGIN 5 if P_CREATED is NOT null then 6return null; 7 end if; 8 return 1; 9* END; [EMAIL PROTECTED]:SQLcreate index idx_ret_data_null on T1 (func_ret_data_null (CREATED)); Índice criado. [EMAIL PROTECTED]:SQLset autotrace on == APESAR dessa tabela ser demasiado pequena pra impor uma demora palpável na máquina que estou usando, mesmo assim vou por o timing : [EMAIL PROTECTED]:SQLset timing on == AGORA o ponto-chave contra a análise por PIOs , a INCONFIABILIDADE. Vamos simular que os blocos não estão em cache (é NATURAL, num banco ocupado coisas entram e saem do cache a TODA HORA, é incontrolável, vamos simular que os blocos saíram do cache) : [EMAIL PROTECTED]:SQLalter tablespace ORAUSERS offline; Tablespace alterado. [EMAIL PROTECTED]:SQLalter tablespace ORAUSERS online; Tablespace alterado. == vamos executar : [EMAIL PROTECTED]:SQLselect object_id, object_name, created from T1 where created is null; OBJECT_ID OBJECT_NAMECREATED -- -- --- 4357 AGGXMLIMP 4364 AGGXMLINPUTTYPE 1813 ALL_ALL_TABLES 5663 ALL_APPLY 5682 ALL_APPLY_CONFLICT_COLUMNS 5686 ALL_APPLY_DML_HANDLERS 6 linhas selecionadas. Decorrido: 00:00:02.01 Plano de Execução -- 0 SELECT STATEMENT Optimizer=CHOOSE 10 TABLE ACCESS (FULL) OF 'T1' Estatística -- 41 recursive calls 0 db block gets 157 consistent gets 148 physical reads 0 redo size 436 bytes sent via SQL*Net to client 276 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 6 rows processed == suponha que na verdade a execução acima foi outro usuário que fez. Aí vc vai executar o mesmo cara, pra analisar performance : [EMAIL PROTECTED]:SQLselect object_id, object_name, created from T1 where created is null; OBJECT_ID OBJECT_NAME
Re: [oracle_br] Re: DBMS_Profiler Test - Uso de indice - Resultado estranhos
Entedi, obrigado, nao sabia que o profiler era soh para pl... quanto ao autotrace consegui as informacoes COM INDICE : Statistics -- 0 recursive calls 0 db block gets 142 consistent gets 0 physical reads 0 redo size 18795 bytes sent via SQL*Net to client 8050 bytes received via SQL*Net from client 70 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1000 rows processed SEM INDICE : Statistics - 0 recursive calls 5 db block gets 252 consistent gets 182 physical reads 0 redo size 18796 bytes sent via SQL*Net to client 8002 bytes received via SQL*Net from client 70 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 1000 rows processed Lendo um artigo do site ASKTOM ele disse que ignora os physical reads , posso mesmo fazer isso ? Outra coisa, pelo que entendi ele leva apenas em conta o consistent gets tem mais alguma informacao relevante de todas essas do trace ? ou realmente a consistent gets é a principal Tendo consistent gets menores , a query é melhor ? é isso mesmo ? eu estava olhando o concepts e pelo que entendi : physical reads - Leitura fisica, numero de vezes que os blocos fisicos de dados sao acessados consistent gets - eu li mas nào entendi parece que é a leitura de memoria ou consitencia de memoria com disco... talvez locks... talvez acesso ao database buffer cache mas como isso pode ser mais custoso do que leitura fisica ? e mais uma coisa usar o explain plan gera o custo para fazer o select ? pois eu executando explain for. e nao traz nada de custo... apenas informacoes como uso de indice etc. select * from plan_Table Muito Obrigado. On 1/11/06, jlchiappa [EMAIL PROTECTED] wrote: profiler te mostra tempo de execução do PL/SQL, pra vc ver detalhes sobre o SQL (ie, plano, estatísticas se usando CBO, etc), o negócio é trace + tkprof, ou ao menos AUTOTRACE, como mostrado lá nos exemplos sobre FBI que passaram há uns dias pelo grupo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, estou fazendo o seguinte teste, para ter certeza no uso de um indice Tenho uma tabela com 4 registro, que vai crescer muito ainda., muito muito mesmo ela ta pequenininha... tem um campo date preenchido na maior parte do registros , que algumas vezes será nullo, fiz uma funcao para pegar esse nulos sem ter que usar o is nulll, e quero ter certeza de que isso signifara ganho... Mas não sei se o meio qual estou fazendo o uso do DBMS_Profiler é o melhor... essa é a melhor maneira de fazer o meu teste ? O teste esta abaixo e as conclusoes que cheguei são péssimas Inserções : Obtive : - Sem indice TESTE_FCTPROCEDURE3672,726 ANONYMOUS BLOCK0,531 Com indice TESTE_FCTPROCEDURE5786,678 T_TRUNCFUNCTION199,851 ANONYMOUS BLOCK0,361 ao todo 5986,529 Com indice ficou 63% mais lento - Consultas: Sem indice 1anonymousanonymousANONYMOUS BLOCK0,228 Com idice 1anonymousanonymousANONYMOUS BLOCK0,223 Nao tive ganhos significativos NAO TEM ALGUM COISA ERRADA ? - TESTE : 1 Passo - Criar Tabela create table teste_function (a date,b number); 2 Passo - Criar function de indice: create or replace function t_trunc(a date) return NUMBER deterministic as begin -- if a is NOT null then -- return null; -- end if; -- return 1; -- end; 3 Passo : Usar o dbms_profiler para verificar quanto demora para inserir sem a funcao com indice e ver a perda, e ver se compensa na hora de fazer as queries -- Dispara o profiler select decode(dbms_profiler.start_profiler, '0', 'Profiler started', 'Profiler error') from dual; create or replace procedure teste_fct as begin for ct in 1..2 loop insert into teste_function values (sysdate,1); end loop; end; call teste_fct() -- Execute o código -- Para a execução select decode(dbms_profiler.stop_profiler, '0', 'Profiler stopped', 'Profiler error') from dual; -- Salva nas tabelas select decode(dbms_profiler.flush_data, '0', 'Profiler flushed', 'Profiler error') from dual; -- Retorna o número do processo select 'runid:' || plsql_profiler_runnumber.currval from dual; select u.unit_owner, u.unit_name, u.unit_type
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO
/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Perfeito Chiappa, obrigado. On 1/7/06, jlchiappa [EMAIL PROTECTED] wrote: Exato, se realmente é uma minoria que tem null que te interessa, aí sim vale ** plenamente ** vc criar o índice na função que retorna 0 pra quem tá nulo : é o conceito, vc usa o índice seletivo quando vc tem um PEQUENO conjunto que vc quer destacar dentro dum universo maior... Única coisa, vc teria que escrever a sua consulta com ... WHERE func_test2(data_de_pagamento) = 0 pra aí sim ele achar os caras que estão nulos, é isso. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa muito obrigado pelo conceito esclarecido... entretanto quero somente confirmar se eh isso que vc quis dizer... : a tabela tem milhoes de registros a minoria dos dados tem data_de_pagamento null. e eu quero executar a seguinte querie select ID from tabela X where data_de_pagamento IS null Pois eu quero trabalhar com os registro que nao foram pagos Essa querie acima nao usuaria indice mas mesmo assim naum seria vantagem eu criar um indice que usasse a funcao abaixo, para fazer com que no indice fiquem apenas as colunas nulas (a funcao retorna 0 para valores nullos e nulos para nao nulos ) ? create function func_test2 (a date) return number deterministic as begin -- if a is not null then -- return null; -- end if; -- return 0; -- end; / create index idx_test_f2 on tab_test(func_test2(data_de_pagamento)); On 1/7/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Valeu Chiappa, esse indices inventei na hora... sem sentido mesmo... soh para ver se a busca ia por eles... Muito Obrigado Mas só uma dúvida, vc disse q a melhor maneira de trabalhar com data é usar o between... ou seja, mesmo que eu sempre tenha um campo com data truncada para fazer comparacao, naum vale a pena criar o indice (eu digo de criar o indice. pq se eu der o trunc na data na hora da querie ele deixa de usar o indice) com a data truncada, mas sim usar o between ? eh isso mesmo ? Se a data está gravada truncada (ie, vc tem 100% de certeza que a porção hora não está nunca sendo gravada, portanto fica como 00:00:00), vc simplesmente faz : WHERE campodata = TO_DATE('01/12/2005', 'dd/mm/') ou, se for com SYSDATE a comparação, se faz : WHERE campodata = TRUNC(sysdate); que aí usa o índice normal, TRUNC na constante é ok, o que não se recomenda é TRUNC no campo... Já se vc não tem certeza absoluta, aí sim é escrever o SQL com between de 00:00:00 à 23:59:59, sim, é isso mesmo... Pro caso de não ter certeza se tá truncado ou não, a sugestão é : *** DEIXE ** de usar o TRUNC, pois aí , além de não precisar de índice especial algum, vc deixa de ter uma função sendo aplicada a CADA registro pesquisado... É aquele negócio, é um tiquinho extra de nada de CPU que o bd gasta pra chamar o TRUNC em cada registro se vc o tiver no campo da tabela, MAS de repente multiplicando esse tiquinho por 1 milhão de regs, pode ser algo que valha a pena... Além do que, quanto MENOS partes móveis , quanto menos coisas vc tiver pra se preocupar, melhor... outra coisa , se a situacao fosse : um sistema de pagamentos que tem um campo data_de_pagamento, que só é preenchida quando o documento foi pago... e vc quer saber todos os que naum foram pagos, ou seja, todos os que tem nulo na data vencimento.. se vc naum pudesse alterar a arquitetura da tabela... seria a melhor solucao criar um indice nessa coluna data_de_pagamento, um indice baseado numa funcao que, quando a coluna tiver valor, ou seja , foi efetuado o pagamento , retornasse null e, quando nao tiver sido efetuado, retornaria 1 guardando nos indices apenas os naum pagos... eh uma ideia ridicula ou poderia ser usada ? Vc não ganharia nada, veja : se eu criar um índice btree comum nesse campo, ** naturalmente ** os registros onde esse campo-chave é null já ** não ** entram nele. o índice selectivo que eu porpus serve pra quando, DENTRO do universo grande de chaves não-nulas, vc quer indexar só ** alguns ** registros : indexar TODAS as não-nulas apenas isso já acontece NATURALMENTE, é conceito de índices, se vc não tinha esse conceito passe a ter, exemplo : [EMAIL PROTECTED]:SQLcreate table tab_test(c1 varchar2(30), c2 number); Tabela criada. [EMAIL PROTECTED]:SQLinsert into tab_test (select null, object_id from all_objects); 22045 linhas
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO
-- os params query_nn eu setei no init, e não via alter session é isso mesmo, dei alter system e rodou... Valeu. On 1/10/06, jlchiappa [EMAIL PROTECTED] wrote: Duas coisas eu vejo aí : a) return sysdate : isso não vai funcionar, pois A CADA HORA, cfrme o relógio do sistema avança, o sysdate retorna um valor diferente !! SE vc olhar direitinho no meu exemplo, eu peço uma CONSTANTE, que aí SIM é sempre a mesma , return 0; no meu caso b) os params query_nn eu setei no init, e não via alter session []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa, acredita que ainda não rodou ? naum consigo o FBI em RBO no ORacle 8i... select * from v$version Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE8.1.7.0.0Production TNS for Linux: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production timed_statistics TRUE Fiz um monte de alter session até mesmo sem saber o pq... para tentar ficar igual aos seus parametros... alter session set OPTIMIZER_MODE=rule ; alter session set query_rewrite_enabled=TRUE alter session set query_rewrite_integrity=TRUSTED alter session set text_enable=TRUE alter session set hash_join_enabled=true alter session set timed_statistics=true alter session set sql_trace=true alter session set oracle_trace_enable=true select name, value from v$parameter where isdefault='FALSE' ORDER BY NAME; 1background_dump_dest/u01/app/oracle/admin/dvbco1/bdump 2compatible8.1.7 3control_files/u01/oracle/oradata/dvbco1/control01.ctl, /u02/oracle/oradata/dvbco1/control02.ctl 4core_dump_dest/u01/app/oracle/admin/dvbco1/cdump 5db_block_buffers2048 6db_block_size4096 7db_namedvbco1 8event36 trace name errorstack level 3 9hash_join_enabledTRUE 10instance_namedvbco1 11java_pool_size2500 12large_pool_size8192000 13log_buffer163840 14log_checkpoint_interval1 15log_checkpoint_timeout1800 16max_enabled_roles80 17open_cursors500 18os_authent_prefix 19processes350 20remote_login_passwordfileEXCLUSIVE 21rollback_segmentsR04, R01, R02, R03 22service_namesdvbco1 23shared_pool_reserved_size5033164 24shared_pool_size50331648 25sort_area_retained_size65536 26sort_area_size65536 27user_dump_dest/u01/app/oracle/admin/dvbco1/udump --28utl_file_dir/home/ftpbis/* select name, value from v$parameter --where --isdefault='FALSE' ORDER BY NAME; 1O7_DICTIONARY_ACCESSIBILITYTRUE 2active_instance_count 3always_anti_joinNESTED_LOOPS 4always_semi_joinstandard 5aq_tm_processes0 6audit_file_dest?/rdbms/audit 7audit_trailNONE 8background_core_dumppartial 9background_dump_dest/u01/app/oracle/admin/dvbco1/bdump 10backup_tape_io_slavesFALSE 11bitmap_merge_area_size1048576 12blank_trimmingFALSE 13buffer_pool_keep 14buffer_pool_recycle 15commit_point_strength1 16compatible8.1.7 17control_file_record_keep_time7 18control_files/u01/oracle/oradata/dvbco1/control01.ctl, /u02/oracle/oradata/dvbco1/control02.ctl 19core_dump_dest/u01/app/oracle/admin/dvbco1/cdump 20cpu_count4 21create_bitmap_area_size8388608 22cursor_sharingEXACT 23cursor_space_for_timeFALSE 24db_block_buffers2048 25db_block_checkingFALSE 26db_block_checksumFALSE 27db_block_lru_latches2 28db_block_max_dirty_target2048 29db_block_size4096 30db_domain 31db_file_direct_io_count64 32db_file_multiblock_read_count8 33db_file_name_convert 34db_files200 35db_namedvbco1 36db_writer_processes1 37dblink_encrypt_loginFALSE 38dbwr_io_slaves0 39disk_asynch_ioTRUE 40distributed_transactions107 41dml_locks1716 42enqueue_resources1936 43event36 trace name errorstack level 3 44fast_start_io_target2048 45fast_start_parallel_rollbackLOW 46fixed_date 47gc_defer_time10 48gc_files_to_locks 49gc_releasable_locks0 50gc_rollback_locks0-1024=32!8REACH 51global_namesFALSE 52hash_area_size131072 53hash_join_enabledTRUE 54hash_multiblock_io_count0 55hi_shared_memory_address0 56hpux_sched_noage 57hs_autoregisterTRUE 58ifile 59instance_groups 60instance_namedvbco1 61instance_number0 62java_max_sessionspace_size0
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO
Obrigado Chiappa... vou realizar esse procedimento On 1/10/06, jlchiappa [EMAIL PROTECTED] wrote: OK, só lembro que no 8i (onde não há spfile) um parâmetro alterado via ALTER SYSTEM não fica registrado no initfile, então só estará ativo enquanto o banco estiver, quando vc der um shutdown ele vai sumir, se vc quer usar isso permanentemente é alterar o initfile, também. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu -- os params query_nn eu setei no init, e não via alter session é isso mesmo, dei alter system e rodou... Valeu. On 1/10/06, jlchiappa [EMAIL PROTECTED] wrote: Duas coisas eu vejo aí : a) return sysdate : isso não vai funcionar, pois A CADA HORA, cfrme o relógio do sistema avança, o sysdate retorna um valor diferente !! SE vc olhar direitinho no meu exemplo, eu peço uma CONSTANTE, que aí SIM é sempre a mesma , return 0; no meu caso b) os params query_nn eu setei no init, e não via alter session []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa, acredita que ainda não rodou ? naum consigo o FBI em RBO no ORacle 8i... select * from v$version Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE8.1.7.0.0Production TNS for Linux: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production timed_statistics TRUE Fiz um monte de alter session até mesmo sem saber o pq... para tentar ficar igual aos seus parametros... alter session set OPTIMIZER_MODE=rule ; alter session set query_rewrite_enabled=TRUE alter session set query_rewrite_integrity=TRUSTED alter session set text_enable=TRUE alter session set hash_join_enabled=true alter session set timed_statistics=true alter session set sql_trace=true alter session set oracle_trace_enable=true select name, value from v$parameter where isdefault='FALSE' ORDER BY NAME; 1background_dump_dest/u01/app/oracle/admin/dvbco1/bdump 2compatible8.1.7 3control_files/u01/oracle/oradata/dvbco1/control01.ctl, /u02/oracle/oradata/dvbco1/control02.ctl 4core_dump_dest/u01/app/oracle/admin/dvbco1/cdump 5db_block_buffers2048 6db_block_size4096 7db_namedvbco1 8event36 trace name errorstack level 3 9hash_join_enabledTRUE 10instance_namedvbco1 11java_pool_size2500 12large_pool_size8192000 13log_buffer163840 14log_checkpoint_interval1 15log_checkpoint_timeout1800 16max_enabled_roles80 17open_cursors500 18os_authent_prefix 19processes350 20remote_login_passwordfileEXCLUSIVE 21rollback_segmentsR04, R01, R02, R03 22service_namesdvbco1 23shared_pool_reserved_size5033164 24shared_pool_size50331648 25sort_area_retained_size65536 26sort_area_size65536 27user_dump_dest/u01/app/oracle/admin/dvbco1/udump --28utl_file_dir/home/ftpbis/* select name, value from v$parameter --where --isdefault='FALSE' ORDER BY NAME; 1O7_DICTIONARY_ACCESSIBILITYTRUE 2active_instance_count 3always_anti_joinNESTED_LOOPS 4always_semi_joinstandard 5aq_tm_processes0 6audit_file_dest?/rdbms/audit 7audit_trailNONE 8background_core_dumppartial 9background_dump_dest/u01/app/oracle/admin/dvbco1/bdump 10backup_tape_io_slavesFALSE 11bitmap_merge_area_size1048576 12blank_trimmingFALSE 13buffer_pool_keep 14buffer_pool_recycle 15commit_point_strength1 16compatible8.1.7 17control_file_record_keep_time7 18control_files/u01/oracle/oradata/dvbco1/control01.ctl, /u02/oracle/oradata/dvbco1/control02.ctl 19core_dump_dest/u01/app/oracle/admin/dvbco1/cdump 20cpu_count4 21create_bitmap_area_size8388608 22cursor_sharingEXACT 23cursor_space_for_timeFALSE 24db_block_buffers2048 25db_block_checkingFALSE 26db_block_checksumFALSE 27db_block_lru_latches2 28db_block_max_dirty_target2048 29db_block_size4096 30db_domain 31db_file_direct_io_count64 32db_file_multiblock_read_count8 33db_file_name_convert 34db_files200 35db_namedvbco1 36db_writer_processes1 37dblink_encrypt_loginFALSE 38dbwr_io_slaves0 39disk_asynch_io
[oracle_br] Parametros antigos / novos
Pessoal, Uma ajuda por favor, No oracle 8i/9i para que o parametro UTL_FILE_DIR seja alterado é necessário restartar a instancia... Mas aí é que vem as dúvidas -alterei o parametro utl_file_dir scope spfile mas se eu entrar na v$parameters o novo parametros ainda não vai estar la em value, mas supondo que eu queira verificar o valor a ser colocado ou novo valor, como fazer ? -se dei um Alter System set PARAMETER = VALUE em um parametro que possa ser alterado sem restartar a instancia , mas mudei de opniao... tem como voltar atras ? -na v$instance eu consigo ver quando a instacia foi iniciada, tem como ver um historico disso ? Por exemplo ela foi inicia dia 1, depois no dia 4. -supondo que vc acaba de sentar numa maquina com Oracle instalado e ja iniciado, tem como vc saber por views dinamicas se a instancia esta usando pfile ou spfile ? -outra coisa, tem uma instancia aqui no servico que é 8i e tem um utl_file_dir especificado na v$parameters, entretanto o kra especificou sem restartar a instancia... ou seja, eu consigo ver o parametro na v$parameters... mas ele ainda não eh valido... tem como isso acontecer ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Re: Parametros antigos / novos
Por ultimo, entrando na v$instance obtive : 7/1/2006 00:57:12 como data de inicializacao da instancia... mas ontem (dia 8) eu olhei a v$parameter e nao havia nada no parametro utl_file_dir , entrentao, hoje entrei de novo , depois de abrir um chamado para o dba dessa maquina mudar esse parametro, e ele esta preenchido, mas a instancia não foi restartada conforme a v$instance... não consigo entender o porque disso... como o parametro pode estar na v$parameter se a isntancia não foi restartada .. a coluna STARTUP_TIME da v$instance é realmente a hora de inicializacao da instancia ? On 1/9/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Mas soh uma coisa , a view v$spparameter existe no Oracle 8i ? On 1/9/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Obrigado Chiapa. Explicacao perfeita. On 1/9/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu No oracle 8i/9i para que o parametro UTL_FILE_DIR seja alterado é necessário restartar a instancia... Sim, embora no 9i vc tenha a opção de trabalhar com DIRECTORY, aí não há necessidade de re-start do banco, a única coisa é que nesse caso os seus progs TEM QUE serem re-escritos pra manipular os arqs via directory, ie, ao invés de : utl_file.fopen('C:\DADOS', nomedoarquivo, . vc teria que criar o indicador : CREATE DIRECTORY DIR_TESTE as 'C:\DADOS'; e alterar o programa pra ele pedir : utl_file.fopen(DIR_TESTE, nomedoarquivo, . == caso não seja possível alterar os progs, aí sim, não tem jeito, é alterar o UTL_FILE_DIR e re-boot do banco, sem chance. Mas aí é que vem as dúvidas -alterei o parametro utl_file_dir scope spfile mas se eu entrar na v$parameters o novo parametros ainda não vai estar la em value, claro, pois v$parameter são os params que estão em ação no momento, e no seu exemplo vc só inseriu no spfile, ainda não restartou a máquina pro novo param entra em ação mas supondo que eu queira verificar o valor a ser colocado ou novo valor, como fazer ? Isso fica registrado em outra view, cfrme : [EMAIL PROTECTED]:SQLshow parameter utl_file_dir NAME TYPEVALUE --- - - utl_file_dir string [EMAIL PROTECTED]:SQLalter system set utl_file_dir ='C:\' scope=spfile; Sistema alterado. [EMAIL PROTECTED]:SQLshow parameter utl_file_dir NAME TYPEVALUE --- - - utl_file_dir string [EMAIL PROTECTED]:SQLselect * from v$spparameter where name='utl_file_dir'; SID NAME VALUE -- -- --- - -- * utl_file_dir C:\ == onde o SHOW PARAMETER é um atalho do sqlplus pra se consultar a v$parameter. -se dei um Alter System set PARAMETER = VALUE em um parametro que possa ser alterado sem restartar a instancia , mas mudei de opniao... tem como voltar atras ? afaik vc tem que dar outro ALTER SYSTEM voltando o valor pro que vc quer. -na v$instance eu consigo ver quando a instacia foi iniciada, tem como ver um historico disso ? até o 9i não tem nada default pra isso, as v$ todas são perdidas após um re-start, se vc quiser tem um histórico vc deveria criar, normalmente via database triggers. Por exemplo ela foi inicia dia 1, depois no dia 4. -supondo que vc acaba de sentar numa maquina com Oracle instalado e ja iniciado, tem como vc saber por views dinamicas se a instancia esta usando pfile ou spfile ? Sim, através do parãmetro SPFILE, se ele estiver preenchido a instância deve estar usando spfile... -outra coisa, tem uma instancia aqui no servico que é 8i e tem um utl_file_dir especificado na v$parameters, entretanto o kra especificou sem restartar a instancia... ou seja, eu consigo ver o parametro na v$parameters... mas ele ainda não eh valido... tem como isso acontecer ? afaik não tem não, certamente se vc está vendo na v$parameter num bd 8i, é algum valor que já estava antes. []s Chiappa -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br
Re: [oracle_br] Re: Parametros antigos / novos
-- --- - -- - -- -- -- 440 utl_file_dir 2 D:\CHIAPPA;C:\;D:\;, C:\TEMP; == a não ser que vc tenha errado e consultado a v$instance da instance errada, ou que o teu banco tenha algum tipo de replicação/alta disponibilidade tipo Parallel Server, não vejo como vc pode ter chegado ao que descreve. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Por ultimo, entrando na v$instance obtive : 7/1/2006 00:57:12 como data de inicializacao da instancia... mas ontem (dia 8) eu olhei a v$parameter e nao havia nada no parametro utl_file_dir , entrentao, hoje entrei de novo , depois de abrir um chamado para o dba dessa maquina mudar esse parametro, e ele esta preenchido, mas a instancia não foi restartada conforme a v$instance... não consigo entender o porque disso... como o parametro pode estar na v$parameter se a isntancia não foi restartada .. a coluna STARTUP_TIME da v$instance é realmente a hora de inicializacao da instancia ? On 1/9/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Mas soh uma coisa , a view v$spparameter existe no Oracle 8i ? On 1/9/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Obrigado Chiapa. Explicacao perfeita. On 1/9/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu No oracle 8i/9i para que o parametro UTL_FILE_DIR seja alterado é necessário restartar a instancia... Sim, embora no 9i vc tenha a opção de trabalhar com DIRECTORY, aí não há necessidade de re-start do banco, a única coisa é que nesse caso os seus progs TEM QUE serem re-escritos pra manipular os arqs via directory, ie, ao invés de : utl_file.fopen('C:\DADOS', nomedoarquivo, . vc teria que criar o indicador : CREATE DIRECTORY DIR_TESTE as 'C:\DADOS'; e alterar o programa pra ele pedir : utl_file.fopen(DIR_TESTE, nomedoarquivo, . == caso não seja possível alterar os progs, aí sim, não tem jeito, é alterar o UTL_FILE_DIR e re-boot do banco, sem chance. Mas aí é que vem as dúvidas -alterei o parametro utl_file_dir scope spfile mas se eu entrar na v$parameters o novo parametros ainda não vai estar la em value, claro, pois v$parameter são os params que estão em ação no momento, e no seu exemplo vc só inseriu no spfile, ainda não restartou a máquina pro novo param entra em ação mas supondo que eu queira verificar o valor a ser colocado ou novo valor, como fazer ? Isso fica registrado em outra view, cfrme : [EMAIL PROTECTED]:SQLshow parameter utl_file_dir NAME TYPEVALUE --- - - utl_file_dir string [EMAIL PROTECTED]:SQLalter system set utl_file_dir ='C:\' scope=spfile; Sistema alterado. [EMAIL PROTECTED]:SQLshow parameter utl_file_dir NAME TYPEVALUE --- - - utl_file_dir string [EMAIL PROTECTED]:SQLselect * from v$spparameter where name='utl_file_dir'; SID NAME VALUE -- -- --- - -- * utl_file_dir C:\ == onde o SHOW PARAMETER é um atalho do sqlplus pra se consultar a v$parameter. -se dei um Alter System set PARAMETER = VALUE em um parametro que possa ser alterado sem restartar a instancia , mas mudei de opniao... tem como voltar atras ? afaik vc tem que dar outro ALTER SYSTEM voltando o valor pro que vc quer. -na v$instance eu consigo ver quando a instacia foi iniciada, tem como ver um historico disso ? até o 9i não tem nada default pra isso, as v$ todas são perdidas após um re-start, se vc quiser tem um histórico vc deveria criar, normalmente via database triggers. Por exemplo ela foi inicia dia 1, depois no dia 4. -supondo que vc acaba de sentar numa maquina com Oracle instalado e ja iniciado, tem como vc saber por views dinamicas se a instancia esta usando pfile
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO
Chiappa muito obrigado pelo conceito esclarecido... entretanto quero somente confirmar se eh isso que vc quis dizer... : a tabela tem milhoes de registros a minoria dos dados tem data_de_pagamento null. e eu quero executar a seguinte querie select ID from tabela X where data_de_pagamento IS null Pois eu quero trabalhar com os registro que nao foram pagos Essa querie acima nao usuaria indice mas mesmo assim naum seria vantagem eu criar um indice que usasse a funcao abaixo, para fazer com que no indice fiquem apenas as colunas nulas (a funcao retorna 0 para valores nullos e nulos para nao nulos ) ? create function func_test2 (a date) return number deterministic as begin -- if a is not null then -- return null; -- end if; -- return 0; -- end; / create index idx_test_f2 on tab_test(func_test2(data_de_pagamento)); On 1/7/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Valeu Chiappa, esse indices inventei na hora... sem sentido mesmo... soh para ver se a busca ia por eles... Muito Obrigado Mas só uma dúvida, vc disse q a melhor maneira de trabalhar com data é usar o between... ou seja, mesmo que eu sempre tenha um campo com data truncada para fazer comparacao, naum vale a pena criar o indice (eu digo de criar o indice. pq se eu der o trunc na data na hora da querie ele deixa de usar o indice) com a data truncada, mas sim usar o between ? eh isso mesmo ? Se a data está gravada truncada (ie, vc tem 100% de certeza que a porção hora não está nunca sendo gravada, portanto fica como 00:00:00), vc simplesmente faz : WHERE campodata = TO_DATE('01/12/2005', 'dd/mm/') ou, se for com SYSDATE a comparação, se faz : WHERE campodata = TRUNC(sysdate); que aí usa o índice normal, TRUNC na constante é ok, o que não se recomenda é TRUNC no campo... Já se vc não tem certeza absoluta, aí sim é escrever o SQL com between de 00:00:00 à 23:59:59, sim, é isso mesmo... Pro caso de não ter certeza se tá truncado ou não, a sugestão é : *** DEIXE ** de usar o TRUNC, pois aí , além de não precisar de índice especial algum, vc deixa de ter uma função sendo aplicada a CADA registro pesquisado... É aquele negócio, é um tiquinho extra de nada de CPU que o bd gasta pra chamar o TRUNC em cada registro se vc o tiver no campo da tabela, MAS de repente multiplicando esse tiquinho por 1 milhão de regs, pode ser algo que valha a pena... Além do que, quanto MENOS partes móveis , quanto menos coisas vc tiver pra se preocupar, melhor... outra coisa , se a situacao fosse : um sistema de pagamentos que tem um campo data_de_pagamento, que só é preenchida quando o documento foi pago... e vc quer saber todos os que naum foram pagos, ou seja, todos os que tem nulo na data vencimento.. se vc naum pudesse alterar a arquitetura da tabela... seria a melhor solucao criar um indice nessa coluna data_de_pagamento, um indice baseado numa funcao que, quando a coluna tiver valor, ou seja , foi efetuado o pagamento , retornasse null e, quando nao tiver sido efetuado, retornaria 1 guardando nos indices apenas os naum pagos... eh uma ideia ridicula ou poderia ser usada ? Vc não ganharia nada, veja : se eu criar um índice btree comum nesse campo, ** naturalmente ** os registros onde esse campo-chave é null já ** não ** entram nele. o índice selectivo que eu porpus serve pra quando, DENTRO do universo grande de chaves não-nulas, vc quer indexar só ** alguns ** registros : indexar TODAS as não-nulas apenas isso já acontece NATURALMENTE, é conceito de índices, se vc não tinha esse conceito passe a ter, exemplo : [EMAIL PROTECTED]:SQLcreate table tab_test(c1 varchar2(30), c2 number); Tabela criada. [EMAIL PROTECTED]:SQLinsert into tab_test (select null, object_id from all_objects); 22045 linhas criadas. == ok, vamos inserir alguns não-nulos : [EMAIL PROTECTED]:SQLinsert into tab_test values ('AAA', 1); 1 linha criada. [EMAIL PROTECTED]:SQLinsert into tab_test values ('BBB', 2); 1 linha criada. [EMAIL PROTECTED]:SQLselect count(*) from tab_test where c1 is not null; COUNT(*) -- 2 == tenho aqui o caso que vc propôs, ie : tenho uma porrada de valores-xchave null e só alguns poucos registros onde ele é not null. vamos criar os índices : [EMAIL PROTECTED]:SQLcreate index idx_test on tab_test(c1); Índice criado. [EMAIL PROTECTED]:SQLcreate function func_test (a char) return number 2 deterministic 3 as 4 begin 5 -- 6 if a is null then 7 -- 8 return null; 9 -- 10 end if; 11 -- 12 return 0; 13 -- 14 end; 15 / Função criada. [EMAIL PROTECTED]:SQLcreate index idx_test_f on tab_test(func_test(c1)); Índice criado. [EMAIL PROTECTED]:SQLanalyze table tab_test compute statistics for table for all indexes
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO
Perfeito Chiappa, obrigado. On 1/7/06, jlchiappa [EMAIL PROTECTED] wrote: Exato, se realmente é uma minoria que tem null que te interessa, aí sim vale ** plenamente ** vc criar o índice na função que retorna 0 pra quem tá nulo : é o conceito, vc usa o índice seletivo quando vc tem um PEQUENO conjunto que vc quer destacar dentro dum universo maior... Única coisa, vc teria que escrever a sua consulta com ... WHERE func_test2(data_de_pagamento) = 0 pra aí sim ele achar os caras que estão nulos, é isso. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa muito obrigado pelo conceito esclarecido... entretanto quero somente confirmar se eh isso que vc quis dizer... : a tabela tem milhoes de registros a minoria dos dados tem data_de_pagamento null. e eu quero executar a seguinte querie select ID from tabela X where data_de_pagamento IS null Pois eu quero trabalhar com os registro que nao foram pagos Essa querie acima nao usuaria indice mas mesmo assim naum seria vantagem eu criar um indice que usasse a funcao abaixo, para fazer com que no indice fiquem apenas as colunas nulas (a funcao retorna 0 para valores nullos e nulos para nao nulos ) ? create function func_test2 (a date) return number deterministic as begin -- if a is not null then -- return null; -- end if; -- return 0; -- end; / create index idx_test_f2 on tab_test(func_test2(data_de_pagamento)); On 1/7/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Valeu Chiappa, esse indices inventei na hora... sem sentido mesmo... soh para ver se a busca ia por eles... Muito Obrigado Mas só uma dúvida, vc disse q a melhor maneira de trabalhar com data é usar o between... ou seja, mesmo que eu sempre tenha um campo com data truncada para fazer comparacao, naum vale a pena criar o indice (eu digo de criar o indice. pq se eu der o trunc na data na hora da querie ele deixa de usar o indice) com a data truncada, mas sim usar o between ? eh isso mesmo ? Se a data está gravada truncada (ie, vc tem 100% de certeza que a porção hora não está nunca sendo gravada, portanto fica como 00:00:00), vc simplesmente faz : WHERE campodata = TO_DATE('01/12/2005', 'dd/mm/') ou, se for com SYSDATE a comparação, se faz : WHERE campodata = TRUNC(sysdate); que aí usa o índice normal, TRUNC na constante é ok, o que não se recomenda é TRUNC no campo... Já se vc não tem certeza absoluta, aí sim é escrever o SQL com between de 00:00:00 à 23:59:59, sim, é isso mesmo... Pro caso de não ter certeza se tá truncado ou não, a sugestão é : *** DEIXE ** de usar o TRUNC, pois aí , além de não precisar de índice especial algum, vc deixa de ter uma função sendo aplicada a CADA registro pesquisado... É aquele negócio, é um tiquinho extra de nada de CPU que o bd gasta pra chamar o TRUNC em cada registro se vc o tiver no campo da tabela, MAS de repente multiplicando esse tiquinho por 1 milhão de regs, pode ser algo que valha a pena... Além do que, quanto MENOS partes móveis , quanto menos coisas vc tiver pra se preocupar, melhor... outra coisa , se a situacao fosse : um sistema de pagamentos que tem um campo data_de_pagamento, que só é preenchida quando o documento foi pago... e vc quer saber todos os que naum foram pagos, ou seja, todos os que tem nulo na data vencimento.. se vc naum pudesse alterar a arquitetura da tabela... seria a melhor solucao criar um indice nessa coluna data_de_pagamento, um indice baseado numa funcao que, quando a coluna tiver valor, ou seja , foi efetuado o pagamento , retornasse null e, quando nao tiver sido efetuado, retornaria 1 guardando nos indices apenas os naum pagos... eh uma ideia ridicula ou poderia ser usada ? Vc não ganharia nada, veja : se eu criar um índice btree comum nesse campo, ** naturalmente ** os registros onde esse campo-chave é null já ** não ** entram nele. o índice selectivo que eu porpus serve pra quando, DENTRO do universo grande de chaves não-nulas, vc quer indexar só ** alguns ** registros : indexar TODAS as não-nulas apenas isso já acontece NATURALMENTE, é conceito de índices, se vc não tinha esse conceito passe a ter, exemplo : [EMAIL PROTECTED]:SQLcreate table tab_test(c1 varchar2(30), c2 number); Tabela criada. [EMAIL PROTECTED]:SQLinsert into tab_test (select null, object_id from all_objects); 22045 linhas criadas. == ok, vamos inserir alguns não-nulos : [EMAIL PROTECTED]:SQLinsert into tab_test values ('AAA', 1); 1 linha criada. [EMAIL PROTECTED]:SQLinsert into tab_test values ('BBB', 2
Re: Não rodou - Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO ?
Rodei o Insert, tem agora 70894 registros... mas mesmo assim não foi On 1/6/06, Marcio Portes [EMAIL PROTECTED] wrote: Incrementa a tabela... acho que essas 4 linhas estão no mesmo bloco. tenta ai. insert into a1234 select sysdate from all_objects / commit; e tenta de novo. --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Chiappa, fui testar seu exemplo no 8i select * from v$version Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production PL/SQL Release 8.1.7.4.0 - Production CORE8.1.7.0.0Production TNS for Linux: Version 8.1.7.4.0 - Production NLSRTL Version 3.4.1.0.0 - Production alter session set OPTIMIZER_MODE=RULE; select NAME,VALUE from V$PARAMETER where upper(name) like '%QUERY%' query_rewrite_enabledFALSE query_rewrite_integrityenforced -- Criei uma tabela para teste create table a1234 (a date); -- Criei uma funcao para testes create or replace function t_trunc(a date) return date deterministic as begin -- if a is null then -- return null; -- end if; -- return trunc(a); -- end; -- Criei dois indices para teste, um usando uma funcao do sistema (a trunc) e outro usando uma funcao criado por mim create index ITESTANDO1 on a1234(trunc(a)) create index ITESTANDO2 on a1234(t_trunc(a)) -- Inseri alguns registros insert into a1234 values (trunc(sysdate)) insert into a1234 values (trunc(sysdate)) insert into a1234 values (null) insert into a1234 values (null) -- Rodei as querys select /*+ INDEX(a1234 ITESTANDO1) */ * from a1234 where trunc(a)=sysdate TABLE ACCESS FULL select /*+ INDEX(a1234 ITESTANDO2) */ * from a1234 where t_trunc(a)=trunc(sysdate) TABLE ACCESS FULL Sabe o por que ? On 1/5/06, Alex Fabiano Ribeiro [EMAIL PROTECTED] wrote: Muito legal o exemplo Chiappa! -Mensagem original- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] nome de jlchiappa Enviada em: quinta-feira, 5 de janeiro de 2006 13:20 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO ? Segue um exemplinho, pra não ficar tão no ar : [EMAIL PROTECTED]:SQLshow parameters query NAME TYPEVALUE --- --- query_rewrite_enabledstring FALSE query_rewrite_integrity string enforced [EMAIL PROTECTED]:SQLalter session set OPTIMIZER_MODE=RULE; Sessão alterada. [EMAIL PROTECTED]:SQLselect empno, ename, comm, sal from emp; EMPNO ENAMECOMM SAL -- -- -- - - 7369 SMITH 800 7499 ALLEN 300 1600 7521 WARD 500 1250 7566 JONES 2975 7654 MARTIN 1400 1250 7698 BLAKE 2850 7782 CLARK 2450 7788 SCOTT 3000 7839 KING 5000 7844 TURNER 0 1500 7876 ADAMS 1100 7900 JAMES 950 7902 FORD 3000 7934 MILLER 1300 [EMAIL PROTECTED]:SQLcreate or replace function func_comm_not_nulo (P_COMM number) return number 2 deterministic 3 as 4 BEGIN 5 if P_COMM is null then 6return null; 7 end if; 8 return 0; 9 END; 10 / Função criada. [EMAIL PROTECTED]:SQL [EMAIL PROTECTED]:SQLcreate index IDX_COMM_NOT_NULO on EMP (func_comm_not_nulo(COMM)); Índice criado. [EMAIL PROTECTED]:SQLset autotrace on [EMAIL PROTECTED]:SQLselect * from emp where func_comm_not_nulo(COMM) =0; EMPNO ENAME JOB MGR HIREDATESAL COMM DEPTNO -- -- - -- --- - -- -- -- 7499 ALLEN SALESMAN7698 20/02/81 1600300 30 7521 WARD SALESMAN7698 22/02/81 1250500 30 7654 MARTIN SALESMAN7698 28/09/81 1250 1400 30 7844 TURNER SALESMAN7698 08/09/81 1500 0 30 Plano de Execução -- 0 SELECT STATEMENT Optimizer=CHOOSE 10 TABLE ACCESS (FULL
[oracle_br] Indice Baseado em Funcao no 9I funciona com RBO ?
Pessoal, Indice Baseado em Funcao no 9I funciona com RBO - Otimizador por Regra ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Pessoal, Tenho uma tabela que recebe varias inserções e updates por dia. Ela é uma tabela de referência para se saber o que já foi processado em um determinado arquivo Ela entre outras, possui duas colunas, uma de Data de Processo 1 e outra Data de Processo 2, ambas do tipo Date. Gravam-se nelas as datas em que cada um dos processo rodou. O processo 1 na tabela Data de Processo 1 e o processo 2 na Data de Processo 2. O primeiro processo a rodar é o 1, afinal, o 2 roda se, e somente se, o 1 ja rodou. Sendo assim , para identificar se já posso rodar o processo 2 (somente se o 1 ja rodou ) , o que seria melhor: -Criar um b-tree index na coluna data de processo 1 e selecionar tudo que for nulo. Entretanto, Não acho essa uma boa alternativa porque , pelo que sei, o indice b-tree não roda com valores nullos, certo ? Então pensei em fazer a mesma coisa mas usando um indice bitmap, mas pelo que li, parece que o indice bitmap não deve ser usado em tabelas com muitos update Outra opção: -Criar coluna Estado que teria dois estados, 1 para processo1 realizado e 2 para processo1 e 2 realizado, Dai criaria um b-tree indice para ela e selecionaria tudo que estiver com valor 1 Se esse caso for bom, seria melhor nessa coluna um b-tree ou um bitmap, e por que ? Muito Obrigado Pessoal. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Re: Indice Baseado em Funcao no 9I funciona com RBO ?
Eu acho que sim, mas não ter certeza : Se eu forçar o CBO via HINTs terei de coletar estatisticas ? On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: Não funciona : vc tem que forçar o CBO via HINTs , ou coisa do tipo pra poder usar FBI, se o seu sistema ainda está em RBO. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Indice Baseado em Funcao no 9I funciona com RBO - Otimizador por Regra ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12feq5jj2/M=387526.7663462.8550203.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1136475593/A=3215516/R=2/SIG=16e56adpd/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10029LID=288321DGC=BADGStor=DHSDGSite=YahooConum=BRDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr%26l%3Dpt%26s%3Ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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
[oracle_br] Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Pessoal, Tenho uma tabela que recebe varias inserções e updates por dia. Ela é uma tabela de referência para se saber o que já foi processado em um determinado arquivo Ela entre outras, possui duas colunas, uma de Data de Processo 1 e outra Data de Processo 2, ambas do tipo Date. Gravam-se nelas as datas em que cada um dos processo rodou. O processo 1 na tabela Data de Processo 1 e o processo 2 na Data de Processo 2. O primeiro processo a rodar é o 1, afinal, o 2 roda se, e somente se, o 1 ja rodou. Sendo assim , para identificar se já posso rodar o processo 2 (somente se o 1 ja rodou ) , o que seria melhor: -Criar um b-tree index na coluna data de processo 1 e selecionar tudo que for nulo. Entretanto, Não acho essa uma boa alternativa porque , pelo que sei, o indice b-tree não roda com valores nullos, certo ? Então pensei em fazer a mesma coisa mas usando um indice bitmap, mas pelo que li, parece que o indice bitmap não deve ser usado em tabelas com muitos update Outra opção: -Criar coluna Estado que teria dois estados, 1 para processo1 realizado e 2 para processo1 e 2 realizado, Dai criaria um b-tree indice para ela e selecionaria tudo que estiver com valor 1 Se esse caso for bom, seria melhor nessa coluna um b-tree ou um bitmap, e por que ? Muito Obrigado Pessoal. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Re: Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Muito Obrigado Chiappa,ótima alteranativa, . mas supondo que meu Oracle seja 8i... teria outra alternativa a FBI ? On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: *** NENHUMA *** das duas opções, eu iria pra terceira, que é FBI (Function-Based Index), tipo : teria o campo de flag como nullable, escreveria uma função que me retornasse somente os (presumivelmente poucos) caras que tem o campo preenchido, e faria um FBI com essa função, aí só entrariam no índice os poucos registros com o flag preenchido. Assim, se a tabela tem (digamos) 1 milhão d eregistros, e num dado momento só há (digamos) mil registros com o campo de flag preenchido, vc só teria mil registros no índice fbi, ficando portanto ** muito ** menor que índice comum, e (o que é melhor) além de pequeno só os caras que são realmente necessários estariam lá. Eu uso bastante essa lógica aqui no cliente, obtive resultados EXCELENTES com ela, coisa de fazer processo de 8 horas cair pra duas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Tenho uma tabela que recebe varias inserções e updates por dia. Ela é uma tabela de referência para se saber o que já foi processado em um determinado arquivo Ela entre outras, possui duas colunas, uma de Data de Processo 1 e outra Data de Processo 2, ambas do tipo Date. Gravam-se nelas as datas em que cada um dos processo rodou. O processo 1 na tabela Data de Processo 1 e o processo 2 na Data de Processo 2. O primeiro processo a rodar é o 1, afinal, o 2 roda se, e somente se, o 1 ja rodou. Sendo assim , para identificar se já posso rodar o processo 2 (somente se o 1 ja rodou ) , o que seria melhor: -Criar um b-tree index na coluna data de processo 1 e selecionar tudo que for nulo. Entretanto, Não acho essa uma boa alternativa porque , pelo que sei, o indice b-tree não roda com valores nullos, certo ? Então pensei em fazer a mesma coisa mas usando um indice bitmap, mas pelo que li, parece que o indice bitmap não deve ser usado em tabelas com muitos update Outra opção: -Criar coluna Estado que teria dois estados, 1 para processo1 realizado e 2 para processo1 e 2 realizado, Dai criaria um b-tree indice para ela e selecionaria tudo que estiver com valor 1 Se esse caso for bom, seria melhor nessa coluna um b-tree ou um bitmap, e por que ? Muito Obrigado Pessoal. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12fhsm0ri/M=387526.7663462.8550203.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1136481349/A=3215516/R=2/SIG=16e56adpd/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10029LID=288321DGC=BADGStor=DHSDGSite=YahooConum=BRDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr%26l%3Dpt%26s%3Ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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] Re: Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Muito Obrigado... Ótima explanação fica apenas uma dúvida aparente o FBI é uma das melhores alternativas em alguns casos mas fico com uma dúvida persistente.. Tenho uma tabela com 100.000 registros tenho um campo de status com dois status apenas, 'A' de ativo e 'I' de inativo... supondo que cada um tenha 50 mil registros cada... teria diferenca ter um indice nessa coluna ? E supondo outra situacao, se uma tiver 2 registro e a outra 8, teria diferenca o indice ? Seria melhor ser Btree ou Bitmap ? Muito Obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: Seguinte, dá uma olhada no exemplinho que acabei de mandar pra outra pergunta, que tá completinho (eu o fiz em 9i, mas funcionaria perfeitamente no 8i versão 8.1.7.x, é onde eu o usava no começo do ano passado, antes de migrar o meu sistema pra 9i) - e lógico, lá no exemplinho o outro colega queria usar FBI em otimização de ROLE, então eu (urgh!!) meti hints no SELECT, vc em tendo um sistema civilizado, escrito em CBO (deve ser, já que vc está desenvolvendo agora) logicamente não precisa dessa coisarada... O conceito que vc tinha está não errado, mas incompleto : é assim, em todo e qualquer índice b*tree (seja FBI, seja índice b*tree comum), realmente ** NÂO É ** todos os registros que entram no índice, e sim APENAS os registros onde a chave não é nula, chaves nulas nunca, nunca entram no índice b*tree), o truque que estou usando portanto depende desse conceito, SE uma função retornar um nulo e a função é o que está sendo indexado, nulls não entram no índice, o índice ficou portanto só com os regs q me interessam. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Além disso, só mais uma coisa, você mencionou em criar um FBI para apenas os que tem o valor preenchido... mas como ? seria um: create index X on TABELA ( ? ) mas que função ? como ele restringiria ? pois sempre pensei que no indice FBI eu teria todos os valoles... iguais aos outros indices ... mas eles teriam em epscial o tratamento dado pela funcao, por exemplo ,se eu quisesse um indice com data truncadas, ele guardaria o row id e data truncada.de Todos os valores... mas pelo que você disse é possivel deixar o FBI somente com os registros necessários ao meu objetivo como ? On 1/5/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Muito Obrigado Chiappa,ótima alteranativa, . mas supondo que meu Oracle seja 8i... teria outra alternativa a FBI ? On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: *** NENHUMA *** das duas opções, eu iria pra terceira, que é FBI (Function-Based Index), tipo : teria o campo de flag como nullable, escreveria uma função que me retornasse somente os (presumivelmente poucos) caras que tem o campo preenchido, e faria um FBI com essa função, aí só entrariam no índice os poucos registros com o flag preenchido. Assim, se a tabela tem (digamos) 1 milhão d eregistros, e num dado momento só há (digamos) mil registros com o campo de flag preenchido, vc só teria mil registros no índice fbi, ficando portanto ** muito ** menor que índice comum, e (o que é melhor) além de pequeno só os caras que são realmente necessários estariam lá. Eu uso bastante essa lógica aqui no cliente, obtive resultados EXCELENTES com ela, coisa de fazer processo de 8 horas cair pra duas... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Tenho uma tabela que recebe varias inserções e updates por dia. Ela é uma tabela de referência para se saber o que já foi processado em um determinado arquivo Ela entre outras, possui duas colunas, uma de Data de Processo 1 e outra Data de Processo 2, ambas do tipo Date. Gravam-se nelas as datas em que cada um dos processo rodou. O processo 1 na tabela Data de Processo 1 e o processo 2 na Data de Processo 2. O primeiro processo a rodar é o 1, afinal, o 2 roda se, e somente se, o 1 ja rodou. Sendo assim , para identificar se já posso rodar o processo 2 (somente se o 1 ja rodou ) , o que seria melhor: -Criar um b-tree index na coluna data de processo 1 e selecionar tudo que for nulo. Entretanto, Não acho essa uma boa alternativa porque , pelo que sei, o indice b-tree não roda com valores nullos, certo ? Então pensei em fazer a mesma coisa mas usando um indice bitmap, mas pelo que li, parece que o indice bitmap não deve ser usado em tabelas com muitos update Outra opção: -Criar coluna Estado que teria dois estados, 1 para processo1 realizado e 2 para processo1 e 2 realizado, Dai criaria um b-tree indice para ela e selecionaria tudo que estiver com valor 1 Se esse caso
Re: [oracle_br] Re: Indice Baseado em Funcao no 9I funciona com RBO ?
0 redo size 910 bytes sent via SQL*Net to client 499 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 4 sorts (memory) 0 sorts (disk) 4 rows processed [EMAIL PROTECTED]:SQL []s Chiappa --- Em oracle_br@yahoogrupos.com.br, jlchiappa [EMAIL PROTECTED] escreveu Nada disso : as estatísticas são usadas pro CBO poder escolher as possibilidades e montar um plano, MAS quando vc usa um hint vc ** já está ** indicando que tipo de plano quer, então não obrigatoriamente vc tem que calcular stats, ele já sabe que tipo de plano vc quer... == CLARO, de modo nenhum isso é o recomendado, mas ** se ** o teu sistema está em RBO, é tapar o nariz e ir pras hints... []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Eu acho que sim, mas não ter certeza : Se eu forçar o CBO via HINTs terei de coletar estatisticas ? On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: Não funciona : vc tem que forçar o CBO via HINTs , ou coisa do tipo pra poder usar FBI, se o seu sistema ainda está em RBO. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Pessoal, Indice Baseado em Funcao no 9I funciona com RBO - Otimizador por Regra ? [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail- archive.com/oracle_br@yahoogrupos.com.br/ -- _ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12feq5jj2/M=387526.7663462.8550203.1588051 /D=brclubs/S=2137114689:HM/Y=BR/EXP=1136475593/A=3215516/R=2/SIG=16e 56 adpd/*http://landingstrip.dell.com/landingstrip/ls.asp? CID=10029LID=288321DGC=BADGStor=DHSDGSite=YahooConum=BRDURL=http ://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr% 26l%3Dpt%26s%3Ddhs -- *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]oracle_br- [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12fg89jmf/M=387526.7663462.8550203.1588051/D=brclubs/S=2137114689:HM/Y=BR/EXP=1136485270/A=3215516/R=2/SIG=16e56adpd/*http://landingstrip.dell.com/landingstrip/ls.asp?CID=10029LID=288321DGC=BADGStor=DHSDGSite=YahooConum=BRDURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3Dbr%26l%3Dpt%26s%3Ddhs -- *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][EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br
Re: [oracle_br] Re: Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Impressionante... Muito obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: É assim : índice, seja qual for, é extremamente útil pra quando vc quer recuperar relativamente ** POUCOS ** registros dentro do universo maior da tabela. Isso porque buscar alguma coisa via índice significa : o banco recebe o valor-chave, procura no índice até achar esse valor, e nesse local do índice tem um rowid indicando onde fisicamente em disco está o registro da tabela, que é diretamente acessado então. Assim, se vc for recuperar (digamos) 1 registro via índice, vc teve que acessar uns bloquinhos do índice (2 ou 3, digamos) , aí achou o ROWID, aí acessou o bloco da tabela onde está o registro - certamente isso foi compensador, porque nesse caso o full- scan ia ler muito mais blocos. Se fossem digamos 5 ou 10 registros, vc multiplicaria esse overhead do índice por 5 ou 10, tá crescendo, mas ainda certamente vale mais a pena ir por índice. PORÉM, cfrme a quntidade de registros a ler sobe mais e mais, esses bloquinhos extras do índice pesam mais e mais, até chegar num ponto que compensa mais já se ler diretamente a tabela via table-scan, o que inclusive tem a vantagem de poder ser feito muito rapidamente, já que ao contrário do índice, que é uma estrutura complexa (com vários tipos de blocos) uma tabela é só ler aos pedações, não há o que analisar.. Aí vem a pergunta, que ponto é esse, onde começa a ser ruim acesso por índice ?? Há grande discórdia entre os autores e entendidos no mundo Oracle, alguns falam que índice compensa só se vc for ler até 15% dos registros indexados, outros falam em 10% ou 20% ou 25%, na verdade há alguma variação natural, mas com certeza 50% tá bem acima, normalmente já começa a valer a pena full-scan, então no teu exemplo de tabela com 100 mil, onde metade (50 mil) é = 'A' e a outra metade é 'B', certamente não deve valer a pena índice não. Já no outro caso proposto, onde vc tem 20 mil e 80 mil, 20 mil representam 25% , pode sim valer a pena um índice aí Quanto á b*tree ou bitmap, o ponto principal a favor do bitmap é que ele permite operações de join de índices, tipo usar um pedaço de cada índice numa busca, e coisas do tipo, o que o b*tree não, isso é excelente pros casos de várias tabelas indexadas serem joineadas frequentemente, e o ponto contra é que ele indexa os nulos E , quando ocorre DML na tabela (ie, INSERT, UPDATE, DELETE) o lock é no bitmap inteiro, outras sessões que estiverem tentando usar esse índice sofre. VEJA, não é que ** qualquer ** UPDATE/INSERT/DELETE derrote a idéia de bitmap, o problema aqui é a frequência (quntidade) e o fato de houverem ou não outras sessões querendo usar ao mesmo tempo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Muito Obrigado... Ótima explanação fica apenas uma dúvida aparente o FBI é uma das melhores alternativas em alguns casos mas fico com uma dúvida persistente.. Tenho uma tabela com 100.000 registros tenho um campo de status com dois status apenas, 'A' de ativo e 'I' de inativo... supondo que cada um tenha 50 mil registros cada... teria diferenca ter um indice nessa coluna ? E supondo outra situacao, se uma tiver 2 registro e a outra 8, teria diferenca o indice ? Seria melhor ser Btree ou Bitmap ? Muito Obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: Seguinte, dá uma olhada no exemplinho que acabei de mandar pra outra pergunta, que tá completinho (eu o fiz em 9i, mas funcionaria perfeitamente no 8i versão 8.1.7.x, é onde eu o usava no começo do ano passado, antes de migrar o meu sistema pra 9i) - e lógico, lá no exemplinho o outro colega queria usar FBI em otimização de ROLE, então eu (urgh!!) meti hints no SELECT, vc em tendo um sistema civilizado, escrito em CBO (deve ser, já que vc está desenvolvendo agora) logicamente não precisa dessa coisarada... O conceito que vc tinha está não errado, mas incompleto : é assim, em todo e qualquer índice b*tree (seja FBI, seja índice b*tree comum), realmente ** NÂO É ** todos os registros que entram no índice, e sim APENAS os registros onde a chave não é nula, chaves nulas nunca, nunca entram no índice b*tree), o truque que estou usando portanto depende desse conceito, SE uma função retornar um nulo e a função é o que está sendo indexado, nulls não entram no índice, o índice ficou portanto só com os regs q me interessam. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Além disso, só mais uma coisa, você mencionou em criar um FBI para apenas os que tem o valor preenchido... mas como ? seria um: create index X on TABELA ( ? ) mas que função ? como ele restringiria ? pois sempre pensei que no indice FBI eu teria todos os valoles
Re: [oracle_br] Re: Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Só mais uma coisa, vc disse : Já no outro caso proposto, onde vc tem 20 mil e 80 mil, 20 mil representam 25% , pode sim valer a pena um índice aí Status = 'A' 20 Mil registros Status = 'B' 80 Mil registros Valeria a pena somente se eu tivesse com objetivo em minha querie buscar os 25%, ou seja, o campo que representa esses 20 mil, no caso o status 'A', porque se eu quisesse buscar o campo com o status que tem 80 mil registro, no caso o 'B' não valeria a pena... É isso mesmo ? E se for isso mesmo... e eu estiver usando CBO... o otimizador seria capaz ( se eu estiver colhendo as estatistica corretamente) de ver que com um determinado valor ( no caso o valor 'A' no Status) teria de ir buscar o valor pelo indice e com outro valor( no caso o valor 'B') teria de fazer um Full Scan ? E em RBO ? Ele iria por indice nas duas vezes ? On 1/5/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Impressionante... Muito obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: É assim : índice, seja qual for, é extremamente útil pra quando vc quer recuperar relativamente ** POUCOS ** registros dentro do universo maior da tabela. Isso porque buscar alguma coisa via índice significa : o banco recebe o valor-chave, procura no índice até achar esse valor, e nesse local do índice tem um rowid indicando onde fisicamente em disco está o registro da tabela, que é diretamente acessado então. Assim, se vc for recuperar (digamos) 1 registro via índice, vc teve que acessar uns bloquinhos do índice (2 ou 3, digamos) , aí achou o ROWID, aí acessou o bloco da tabela onde está o registro - certamente isso foi compensador, porque nesse caso o full- scan ia ler muito mais blocos. Se fossem digamos 5 ou 10 registros, vc multiplicaria esse overhead do índice por 5 ou 10, tá crescendo, mas ainda certamente vale mais a pena ir por índice. PORÉM, cfrme a quntidade de registros a ler sobe mais e mais, esses bloquinhos extras do índice pesam mais e mais, até chegar num ponto que compensa mais já se ler diretamente a tabela via table-scan, o que inclusive tem a vantagem de poder ser feito muito rapidamente, já que ao contrário do índice, que é uma estrutura complexa (com vários tipos de blocos) uma tabela é só ler aos pedações, não há o que analisar.. Aí vem a pergunta, que ponto é esse, onde começa a ser ruim acesso por índice ?? Há grande discórdia entre os autores e entendidos no mundo Oracle, alguns falam que índice compensa só se vc for ler até 15% dos registros indexados, outros falam em 10% ou 20% ou 25%, na verdade há alguma variação natural, mas com certeza 50% tá bem acima, normalmente já começa a valer a pena full-scan, então no teu exemplo de tabela com 100 mil, onde metade (50 mil) é = 'A' e a outra metade é 'B', certamente não deve valer a pena índice não. Já no outro caso proposto, onde vc tem 20 mil e 80 mil, 20 mil representam 25% , pode sim valer a pena um índice aí Quanto á b*tree ou bitmap, o ponto principal a favor do bitmap é que ele permite operações de join de índices, tipo usar um pedaço de cada índice numa busca, e coisas do tipo, o que o b*tree não, isso é excelente pros casos de várias tabelas indexadas serem joineadas frequentemente, e o ponto contra é que ele indexa os nulos E , quando ocorre DML na tabela (ie, INSERT, UPDATE, DELETE) o lock é no bitmap inteiro, outras sessões que estiverem tentando usar esse índice sofre. VEJA, não é que ** qualquer ** UPDATE/INSERT/DELETE derrote a idéia de bitmap, o problema aqui é a frequência (quntidade) e o fato de houverem ou não outras sessões querendo usar ao mesmo tempo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Muito Obrigado... Ótima explanação fica apenas uma dúvida aparente o FBI é uma das melhores alternativas em alguns casos mas fico com uma dúvida persistente.. Tenho uma tabela com 100.000 registros tenho um campo de status com dois status apenas, 'A' de ativo e 'I' de inativo... supondo que cada um tenha 50 mil registros cada... teria diferenca ter um indice nessa coluna ? E supondo outra situacao, se uma tiver 2 registro e a outra 8, teria diferenca o indice ? Seria melhor ser Btree ou Bitmap ? Muito Obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: Seguinte, dá uma olhada no exemplinho que acabei de mandar pra outra pergunta, que tá completinho (eu o fiz em 9i, mas funcionaria perfeitamente no 8i versão 8.1.7.x, é onde eu o usava no começo do ano passado, antes de migrar o meu sistema pra 9i) - e lógico, lá no exemplinho o outro colega queria usar FBI em otimização de ROLE, então eu (urgh!!) meti hints no SELECT, vc em tendo um sistema civilizado, escrito em CBO (deve ser, já que vc está desenvolvendo agora) logicamente não precisa dessa coisarada
Re: [oracle_br] Re: Modelagem visando Perfomance - Btree or Bitmap - Datas e seus problemas
Muito Obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Só mais uma coisa, vc disse : Já no outro caso proposto, onde vc tem 20 mil e 80 mil, 20 mil representam 25% , pode sim valer a pena um índice aí Status = 'A' 20 Mil registros Status = 'B' 80 Mil registros Valeria a pena somente se eu tivesse com objetivo em minha querie buscar os 25%, ou seja, o campo que representa esses 20 mil, no caso o status 'A', porque se eu quisesse buscar o campo com o status que tem 80 mil registro, no caso o 'B' não valeria a pena... É isso mesmo ? Exato, se 'A' representa 25%. normalmente, via de regra, ainda vale a pena os localizar via índice. E se for isso mesmo... e eu estiver usando CBO... o otimizador seria capaz ( se eu estiver colhendo as estatistica corretamente) de ver que com um determinado valor ( no caso o valor 'A' no Status) teria de ir buscar o valor pelo indice e com outro valor( no caso o valor 'B') teria de fazer um Full Scan ? === PRECISAMENTE É exatamente pra isto que serve o CBO : se vc o configura (params optimizer_nn, parãmetros de PGA, etc), passa a informação de quantos valores distintos e totais vc tem no índice e na tabela (estatísticas e histogramas), na esmagadora maioria das vezes (tipo, 9 vezes em 10) , ele é totalmente capaz de checar se vale a pena usar índice ou não, é isso sim. E em RBO ? Ele iria por indice nas duas vezes ? Sendo índice comum, não-FBI, muito provavelmente sim : o RBO é bem burrinho, a lógica dele é : tenho um índice disponível , uso-o, ele é totalmente incapaz de avaliar se o overhead natural dos índices vale a pena ou não, se a leitura por pedações de uma vez que o full table scan faz vale a pena ou não... Bem ruinzinho... []s Chiappa On 1/5/06, Marcelo Cauduro [EMAIL PROTECTED] wrote: Impressionante... Muito obrigado On 1/5/06, jlchiappa [EMAIL PROTECTED] wrote: É assim : índice, seja qual for, é extremamente útil pra quando vc quer recuperar relativamente ** POUCOS ** registros dentro do universo maior da tabela. Isso porque buscar alguma coisa via índice significa : o banco recebe o valor-chave, procura no índice até achar esse valor, e nesse local do índice tem um rowid indicando onde fisicamente em disco está o registro da tabela, que é diretamente acessado então. Assim, se vc for recuperar (digamos) 1 registro via índice, vc teve que acessar uns bloquinhos do índice (2 ou 3, digamos) , aí achou o ROWID, aí acessou o bloco da tabela onde está o registro - certamente isso foi compensador, porque nesse caso o full- scan ia ler muito mais blocos. Se fossem digamos 5 ou 10 registros, vc multiplicaria esse overhead do índice por 5 ou 10, tá crescendo, mas ainda certamente vale mais a pena ir por índice. PORÉM, cfrme a quntidade de registros a ler sobe mais e mais, esses bloquinhos extras do índice pesam mais e mais, até chegar num ponto que compensa mais já se ler diretamente a tabela via table-scan, o que inclusive tem a vantagem de poder ser feito muito rapidamente, já que ao contrário do índice, que é uma estrutura complexa (com vários tipos de blocos) uma tabela é só ler aos pedações, não há o que analisar.. Aí vem a pergunta, que ponto é esse, onde começa a ser ruim acesso por índice ?? Há grande discórdia entre os autores e entendidos no mundo Oracle, alguns falam que índice compensa só se vc for ler até 15% dos registros indexados, outros falam em 10% ou 20% ou 25%, na verdade há alguma variação natural, mas com certeza 50% tá bem acima, normalmente já começa a valer a pena full-scan, então no teu exemplo de tabela com 100 mil, onde metade (50 mil) é = 'A' e a outra metade é 'B', certamente não deve valer a pena índice não. Já no outro caso proposto, onde vc tem 20 mil e 80 mil, 20 mil representam 25% , pode sim valer a pena um índice aí Quanto á b*tree ou bitmap, o ponto principal a favor do bitmap é que ele permite operações de join de índices, tipo usar um pedaço de cada índice numa busca, e coisas do tipo, o que o b*tree não, isso é excelente pros casos de várias tabelas indexadas serem joineadas frequentemente, e o ponto contra é que ele indexa os nulos E , quando ocorre DML na tabela (ie, INSERT, UPDATE, DELETE) o lock é no bitmap inteiro, outras sessões que estiverem tentando usar esse índice sofre. VEJA, não é que ** qualquer ** UPDATE/INSERT/DELETE derrote a idéia de bitmap, o problema aqui é a frequência (quntidade) e o fato de houverem ou não outras sessões querendo usar ao mesmo tempo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Marcelo Cauduro [EMAIL PROTECTED] escreveu Muito Obrigado... Ótima
Re: [oracle_br] Re: BIND_ARRAY - PLS-00306
Pessoal, para quem ficou interessado na questão... O meu objetivo era o seguinte, retornar um array de uma procedure... num parametro out da procedure... entretanto essa seria chamada dinamicamento Bem... usando o pacote DBMS_SQL eu infelizmente não consegui,contudo usar o sql nativo por meio do execute immediate foi bastante facil e trouxe resultados positivos... a primeira coisa a ser feita é criar um nested table, você pode cria-la com o comando create or replace type ArrayTeste is table of number; pronto, agora voce deve criar a procedure que sera chamada dinamicamente e ira popular o array create or replace procedure proc (a out ArrayTeste) is begin a := ArrayTeste(1); a(1) := 10; a.extend; a(2) := 20; end; agora , a procedure que chamara qualquer procedure dinamicamente e obtera como retorno uma nested table CREATE OR REPLACE PROCEDURE runarray (proc IN VARCHAR2, outval IN OUT ArrayTeste) IS BEGIN outval := ArrayTeste(3); execute immediate 'begin ' || proc || ' (:a); end;' using out outval; end; agora é só testar: declare a ArrayTeste; begin runarray('proc', a); for i in a.first..a.last loop dbms_output.put_line(a(i)); end loop; end; Qualquer dúvida estou a disposição. On 12/6/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Achei uma alternativa http://asktom.oracle.com/pls/ask/f?p=4950:8:9598011493460807310::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:5289101303258 ,... mas é interessante mencionar que o fato de não ter funciona bind_variable com varchar é que tem de se especificar o tamanho da variavel bind_variable(cursor,'nome',variavel,tamanho) Tks. On 12/6/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Marcio, Agradeço pelo email, mas é o seguinte, sei o que é o erro PLS-00306, mas não sei o porque ele esta acontecendo em meu teste. O que eu quero é simplesmente conseguir chamar um procedure dinamicamente pelo DBMS_SQL e obter o seu retonro, mas ao inves de retornar uma variavel por meio do BIND_VARIABLE, quero retornar um array. Entao eu tenho uma procedure: create or replace procedure proc (a out dbms_sql.number_table) is begin a(1) := 10; a(5) := 20; end; / que ira montar um array, dai eu tenho uma outra procedure que chama dinamicamente qualquer procedure e obtem seu retorno, o problema é que: quando eu retorno variaveis da certo, mas quando uso array da o erro mencionado, por exemplo se eu fizesse a seguinte procedure : e trocasse de bind_array para bind_variable e trocar tudo para numero... da certo... * create **or* *replace* *procedure* proc (a *out* *number*) *is* *begin* a := 1; *end*; / *CREATE* *OR* *REPLACE* *PROCEDURE* runarray (proc *IN* *VARCHAR2*, outval *IN* *OUT* *number*) *IS* cur *INTEGER* := DBMS_SQL.OPEN_CURSOR; fdbk *INTEGER* ; mytab *number*; *BEGIN* DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.bind_variable(cur, 'outparam' , mytab); fdbk := DBMS_SQL. *EXECUTE* (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam', mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; *end*; *declare* a *VARCHAR2*(20); *begin* runarray('proc' , a); *end*; agora se eu usar varchar2 da outro erro... * create **or* *replace* *procedure* proc (a *out* *varchar2*) *is* *begin* a := '1'; *end*; / *CREATE* *OR* *REPLACE* *PROCEDURE* runarray (proc *IN* *VARCHAR2*, outval *IN* *OUT* *varchar2*) *IS* cur *INTEGER *:= DBMS_SQL.OPEN_CURSOR; fdbk *INTEGER*; mytab *varchar2*(100); *BEGIN* DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.bind_variable(cur, 'outparam', mytab); fdbk := DBMS_SQL.*EXECUTE* (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam', mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; *end*; *declare* a *VARCHAR2*( 20); *begin* runarray('proc' , a); *end*; eu nao consigo fazer um bind de um array ou varchar. On 12/6/05, Marcio Portes [EMAIL PROTECTED] wrote: Marcelo, Quando eu enviei a pergunta qual era o objetivo, eu não dei seguimento na thread porque realmente não entendi o que voce está tentando fazer. E como o dia-a-dia é corrido, não há tempo para espremer perguntas que não são claras para mim. Se voce que saber por que do PLS-00306 é simples - MANUAL. PLS-00306 wrong number or types of arguments in call to 'string' Cause: This error occurs when the named subprogram call cannot be matched to any declaration for that subprogram name. The subprogram name might be misspelled, a parameter might have the wrong datatype, the declaration might be faulty, or the declaration might be placed incorrectly in the block structure. For example, this error occurs if the built-in square root function SQRT is called with a misspelled name or with a parameter of the wrong datatype
Re: [oracle_br] Re: BIND_ARRAY - PLS-00306
Essa foi a resposta que tive noutro forum... http://dba.ipbhost.com/index.php?showtopic=3123 talvez realmente não seja possivel com o bind array On 12/7/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Pessoal, para quem ficou interessado na questão... O meu objetivo era o seguinte, retornar um array de uma procedure... num parametro out da procedure... entretanto essa seria chamada dinamicamento Bem... usando o pacote DBMS_SQL eu infelizmente não consegui,contudo usar o sql nativo por meio do execute immediate foi bastante facil e trouxe resultados positivos... a primeira coisa a ser feita é criar um nested table, você pode cria-la com o comando create or replace type ArrayTeste is table of number; pronto, agora voce deve criar a procedure que sera chamada dinamicamente e ira popular o array create or replace procedure proc (a out ArrayTeste) is begin a := ArrayTeste(1); a(1) := 10; a.extend; a(2) := 20; end; agora , a procedure que chamara qualquer procedure dinamicamente e obtera como retorno uma nested table CREATE OR REPLACE PROCEDURE runarray (proc IN VARCHAR2, outval IN OUT ArrayTeste) IS BEGIN outval := ArrayTeste(3); execute immediate 'begin ' || proc || ' (:a); end;' using out outval; end; agora é só testar: declare a ArrayTeste; begin runarray('proc', a); for i in a.first..a.last loop dbms_output.put_line(a(i)); end loop; end; Qualquer dúvida estou a disposição. On 12/6/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Achei uma alternativa http://asktom.oracle.com/pls/ask/f?p=4950:8:9598011493460807310::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:5289101303258 ,... mas é interessante mencionar que o fato de não ter funciona bind_variable com varchar é que tem de se especificar o tamanho da variavel bind_variable(cursor,'nome',variavel,tamanho) Tks. On 12/6/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Marcio, Agradeço pelo email, mas é o seguinte, sei o que é o erro PLS-00306, mas não sei o porque ele esta acontecendo em meu teste. O que eu quero é simplesmente conseguir chamar um procedure dinamicamente pelo DBMS_SQL e obter o seu retonro, mas ao inves de retornar uma variavel por meio do BIND_VARIABLE, quero retornar um array. Entao eu tenho uma procedure: create or replace procedure proc (a out dbms_sql.number_table) is begin a(1) := 10; a(5) := 20; end; / que ira montar um array, dai eu tenho uma outra procedure que chama dinamicamente qualquer procedure e obtem seu retorno, o problema é que: quando eu retorno variaveis da certo, mas quando uso array da o erro mencionado, por exemplo se eu fizesse a seguinte procedure : e trocasse de bind_array para bind_variable e trocar tudo para numero... da certo... * create **or* *replace* *procedure* proc (a *out* *number*) *is* *begin* a := 1; *end*; / *CREATE* *OR* *REPLACE* *PROCEDURE* runarray (proc *IN* *VARCHAR2*, outval *IN* *OUT* *number*) *IS* cur *INTEGER* := DBMS_SQL.OPEN_CURSOR; fdbk *INTEGER* ; mytab *number*; *BEGIN* DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.bind_variable(cur, 'outparam' , mytab); fdbk := DBMS_SQL. *EXECUTE* (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam', mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; *end*; *declare* a *VARCHAR2*(20); *begin* runarray('proc' , a); *end*; agora se eu usar varchar2 da outro erro... * create **or* *replace* *procedure* proc (a *out* *varchar2*) *is* *begin* a := '1'; *end* ; / *CREATE* *OR* *REPLACE* *PROCEDURE* runarray (proc *IN* *VARCHAR2*, outval *IN* *OUT* *varchar2*) *IS* cur *INTEGER *:= DBMS_SQL.OPEN_CURSOR; fdbk *INTEGER*; mytab *varchar2*(100); *BEGIN* DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.bind_variable(cur, 'outparam', mytab); fdbk := DBMS_SQL.*EXECUTE* (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam' , mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; *end*; *declare* a *VARCHAR2*( 20); *begin* runarray('proc' , a); *end*; eu nao consigo fazer um bind de um array ou varchar. On 12/6/05, Marcio Portes [EMAIL PROTECTED] wrote: Marcelo, Quando eu enviei a pergunta qual era o objetivo, eu não dei seguimento na thread porque realmente não entendi o que voce está tentando fazer. E como o dia-a-dia é corrido, não há tempo para espremer perguntas que não são claras para mim. Se voce que saber por que do PLS-00306 é simples - MANUAL. PLS-00306 wrong number or types of arguments in call to 'string' Cause: This error occurs when the named subprogram call cannot be matched to any declaration
Re: [oracle_br] Re: BIND_ARRAY - PLS-00306
Alguem ? Estou precisando disso urgente... ja tentei postar em outro grupo mas parece que ninguem sabe On 12/5/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Alguem tem alguma idéia ? On 12/3/05, Marcelo Cauduro [EMAIL PROTECTED] wrote: Eu tenho uma procedure que dá o mesmo erro que essa, mas não sei o por quê, meu objetivo : eu tenho uma procedure que me retorna um array, só que essa procedure eh executada dinamicamente e ela pode retornar um array com 1 ou mais valores, quando dou o dbms_sql.bind_array passa, mas qndo dou o campo para executar o sql da erro a primeira procedure acima create or replace procedure proc (a out dbms_sql.number_table) is begin a(1) := 10; a(5) := 20; end; coloca valores num array a segunda CREATE OR REPLACE PROCEDURE runarray (proc IN VARCHAR2, outval IN OUT DBMS_SQL.NUMBER_TABLE) IS cur INTEGER := DBMS_SQL.OPEN_CURSOR; fdbk INTEGER; mytab DBMS_SQL.NUMBER_TABLE; BEGIN DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.BIND_ARRAY (cur, 'outparam', mytab); fdbk := DBMS_SQL.EXECUTE (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam', mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; end; / de uma procedure consegue obter o retorno dela, mas esse retorno pode ser um array, ... On 12/3/05, Marcio Portes [EMAIL PROTECTED] wrote: Engenharia reversa demora muito! Qual seu objetivo aqui? --- Em oracle_br@yahoogrupos.com.br, marcelobcauduro [EMAIL PROTECTED] escreveu Pessoal, Eu estou tentando usar o bind array mas estou recebendo o erro PLS- 00306, o código é o abaixo : create or replace procedure proc (a out dbms_sql.number_table) is begin a(1) := 10; a(5) := 20; end; / CREATE OR REPLACE PROCEDURE runarray (proc IN VARCHAR2, outval IN OUT DBMS_SQL.NUMBER_TABLE) IS cur INTEGER := DBMS_SQL.OPEN_CURSOR; fdbk INTEGER; mytab DBMS_SQL.NUMBER_TABLE; BEGIN DBMS_SQL.PARSE (cur, 'BEGIN ' || proc || '(' || ':outparam ); END;', DBMS_SQL.NATIVE); DBMS_SQL.BIND_ARRAY (cur, 'outparam', mytab); fdbk := DBMS_SQL.EXECUTE (cur); DBMS_SQL.VARIABLE_VALUE (cur, 'outparam', mytab); DBMS_SQL.CLOSE_CURSOR (cur); outval := mytab; end; / declare a dbms_sql.number_table; begin runarray('proc', a); end; / ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'PROC' ORA-06550: line 1, column 7: PL/SQL: Statement ignored Alguem sabe o por que ? Muito OBrigado. -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 *Yahoo! Grupos, um serviço oferecido por:* PUBLICIDADE http://br.rd.yahoo.com/SIG=12f9pttir/M=365837.7000707.7924794.2369893/D=brclubs/S=2137114689:HM/Y=BR/EXP=1133637409/A=2950750/R=2/id=noscript/SIG=10tift5qr/*http://br.movies.yahoo.com/ -- *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] [EMAIL PROTECTED] - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! http://br.yahoo.com/info/utos.html. [As partes desta mensagem que não continham texto foram removidas] -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 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