Re: RES: [oracle_br] Segmento x Datafile

2007-04-24 Por tôpico jlchiappa
-- --- --
--
> > --- --
> > TAB_TESTE TABLE TS_LMT_UNIF 0 28 9
> > 1048576 128
> > TAB_TESTE TABLE TS_LMT_UNIF 1 26 9
> > 1048576 128
> >
> > [EMAIL PROTECTED]:SQL>select * from dba_data_files where
> > tablespace_name='TS_LMT_UNIF';
> >
> > FILE_NAME FILE_ID TABLESPACE_NAME
> > USER_BYTES USER_BLOCKS
> > --- --- --
- -
> > - ---
> > /u2/oradata/BDDEV/dados/ts_lmt_unif_01.dbf 26 TS_LMT_UNIF
> > 104857600 12800
> > /u1/ts_lmt_unif_02.dbf 28 TS_LMT_UNIF
> > 104857600 12800
> >
> > [EMAIL PROTECTED]:SQL>insert /*+ APPEND */ into TAB_TESTE (select * 
from
> > dba_objects);
> >
> > 10537 linhas criadas.
> >
> > [EMAIL PROTECTED]:SQL>commit;
> >
> > Validação completa.
> >
> > [EMAIL PROTECTED]:SQL>select * from dba_extents where
> > tablespace_name='TS_LMT_UNIF';
> >
> > SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID
> > BLOCK_ID BYTES
> >   --- - --- --
--
> > ---
> > TAB_TESTE TABLE TS_LMT_UNIF 0 28 9
> > 1048576
> > TAB_TESTE TABLE TS_LMT_UNIF 1 26 9
> > 1048576
> > TAB_TESTE TABLE TS_LMT_UNIF 2 28 137
> > 1048576
> >
> > [EMAIL PROTECTED]:SQL>insert /*+ APPEND */ into TAB_TESTE (select * 
from
> > dba_objects);
> >
> > 10537 linhas criadas.
> >
> > [EMAIL PROTECTED]:SQL>commit;
> >
> > Validação completa.
> >
> > [EMAIL PROTECTED]:SQL>select * from dba_extents where
> > tablespace_name='TS_LMT_UNIF';
> >
> > SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID
> > BLOCK_ID BYTES
> >   --- - --- --
--
> > ---
> > TAB_TESTE TABLE TS_LMT_UNIF 0 28 9
> > 1048576
> > TAB_TESTE TABLE TS_LMT_UNIF 1 26 9
> > 1048576
> > TAB_TESTE TABLE TS_LMT_UNIF 2 28 137
> > 1048576
> > TAB_TESTE TABLE TS_LMT_UNIF 3 26 137
> > 1048576
> >
> > ===>> ou seja, com tablespaces LMT uniform-size, basta vc criar os
> > datafiles do tamanho final desejado, na ordem desejada nos discos
> > desejados, que AUTOMATICAMENTE a alocação inicial será round-
robin,
> > ie, vai alocando um extent por vez em cada datafile, espalhando os
> > extents portanto, que é o que vc quer.
> > Lembro apenas que isso vale PARA A ALOCAÇÂO INICIAL, há os casos 
de :
> >
> > a) para UPDATEs, obviamente o I/O ** tem que ** ser feito no mesmo
> > bloco aonde o(s) registro(s) já estava(m)
> >
> > e
> >
> > b) o espaço liberado por DELETEs necessariamente será usado cfrme
> > for liberado - assim se for liberado um espaço no extent x do
> > datafile y dum segmento, NECESSARIAMENTE o próximo insert não-
append
> > VAI USAR ESSE ESPAÇO, independente de "ordem" alguma, de qual foi 
o
> > último datafile usado...
> >
> > []s
> >
> > Chiappa
> >
> >
> > --- Em oracle_br@yahoogrupos.com.br 
> > <mailto:oracle_br%40yahoogrupos.com.br>, "Clayton Rocha"
> >  escreveu
> > >
> > > Entendo perfeitamente que ele divide e que temos ganho de
> > performance caso
> > > estejam em discos diferentes...
> > >
> > >
> > >
> > > A minha dúvida seria qual seria o critério que determina onde 
ele
> > irá
> > > salvar... Realmente acho que não vai ser possível alguém me
> > explicar isso em
> > > poucas linhas, mas, deixo uma outra pergunta:
> > >
> > >
> > >
> > > Existe algum material com explicações sobre esse assunto? É
> > possível eu
> > > entender essa tomada de decisões ou é algo que apenas devo saber
> > que ele
> > > divide, faz o melhor possível e ponto?
> > >
> > >
> > >
> > > Obrigado!
> > >
> > >
> > >
> > > Clayton Rocha
> > >
> > >
> > >
> > > De: oracle_br@yahoogrupos.com.br 
> > <mailto:oracle_br%40yahoogrupos.com.br>
> > [mailto:oracle_br@yahoogrupos.com.br 
> > <mailto:oracle_br%40yahoogrupos.com.br>] Em
> > > nome de Marcio Portes
> > > Enviada em: segunda-feira, 23 de abril de 2007 17:45
> > > Para: oracle_br@yahoogrupos.com.br 
> > <mailto:oracle_br%40yahoogrupos.com.br>
> > > Assunto: Re: [oracle_br] Segmento x Datafile
> > >
> > >
> > >
> > > Gros

Re: RES: [oracle_br] Segmento x Datafile

2007-04-24 Por tôpico Thiago Lazzarotto
7;TS_LMT_UNIF';
>
> SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID
> BLOCK_ID BYTES
>   --- - --- 
> ---
> TAB_TESTE TABLE TS_LMT_UNIF 0 28 9
> 1048576
> TAB_TESTE TABLE TS_LMT_UNIF 1 26 9
> 1048576
> TAB_TESTE TABLE TS_LMT_UNIF 2 28 137
> 1048576
> TAB_TESTE TABLE TS_LMT_UNIF 3 26 137
> 1048576
>
> ===>> ou seja, com tablespaces LMT uniform-size, basta vc criar os
> datafiles do tamanho final desejado, na ordem desejada nos discos
> desejados, que AUTOMATICAMENTE a alocação inicial será round-robin,
> ie, vai alocando um extent por vez em cada datafile, espalhando os
> extents portanto, que é o que vc quer.
> Lembro apenas que isso vale PARA A ALOCAÇÂO INICIAL, há os casos de :
>
> a) para UPDATEs, obviamente o I/O ** tem que ** ser feito no mesmo
> bloco aonde o(s) registro(s) já estava(m)
>
> e
>
> b) o espaço liberado por DELETEs necessariamente será usado cfrme
> for liberado - assim se for liberado um espaço no extent x do
> datafile y dum segmento, NECESSARIAMENTE o próximo insert não-append
> VAI USAR ESSE ESPAÇO, independente de "ordem" alguma, de qual foi o
> último datafile usado...
>
> []s
>
> Chiappa
>
>
> --- Em oracle_br@yahoogrupos.com.br 
> <mailto:oracle_br%40yahoogrupos.com.br>, "Clayton Rocha"
> <[EMAIL PROTECTED]> escreveu
> >
> > Entendo perfeitamente que ele divide e que temos ganho de
> performance caso
> > estejam em discos diferentes...
> >
> >
> >
> > A minha dúvida seria qual seria o critério que determina onde ele
> irá
> > salvar... Realmente acho que não vai ser possível alguém me
> explicar isso em
> > poucas linhas, mas, deixo uma outra pergunta:
> >
> >
> >
> > Existe algum material com explicações sobre esse assunto? É
> possível eu
> > entender essa tomada de decisões ou é algo que apenas devo saber
> que ele
> > divide, faz o melhor possível e ponto?
> >
> >
> >
> > Obrigado!
> >
> >
> >
> > Clayton Rocha
> >
> >
> >
> > De: oracle_br@yahoogrupos.com.br 
> <mailto:oracle_br%40yahoogrupos.com.br>
> [mailto:oracle_br@yahoogrupos.com.br 
> <mailto:oracle_br%40yahoogrupos.com.br>] Em
> > nome de Marcio Portes
> > Enviada em: segunda-feira, 23 de abril de 2007 17:45
> > Para: oracle_br@yahoogrupos.com.br 
> <mailto:oracle_br%40yahoogrupos.com.br>
> > Assunto: Re: [oracle_br] Segmento x Datafile
> >
> >
> >
> > Grosso modo falando... Não é uma resposta para ser desenvolvida em 3
> > linhas...
> > Porque ele divide a carga de I/O espalhando os blocos através dos
> datafiles.
> > Imagine se voce tivesse cada datafile em um disco diferente com
> > controladoras diferentes, voce ganharia em leitura, porque as
> controladoras
> > iriam atenter em paralelo ao request do banco.
> >
> > On 4/23/07, Clayton Rocha <[EMAIL PROTECTED]
> > <mailto:clayton.rocha%40faitec-cons.com.br> > wrote:
> > >
> > > Boa tarde!
> > >
> > > Fiquei com uma curiosidade agora... se eu tenho uma tablespace
> com dois
> > > datafiles e movo um segmento para essa tablespace. O que
> determina em qual
> > > dos dois datafiles o segmento vai ser armazenado se eu tenho
> espaço livre
> > > suficiente nos dois? Por que, mesmo tendo espaço para alocar em
> um único
> > > datafile acontece do Oracle dividir o segmento nos dois?
> > >
> > > Oracle 10g em Windows.
> > >
> > > Obrigado!
> > >
> > > Clayton Rocha
> > >
> > > DBA Oracle
> > >
> > > Faitec Tecnologia
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> > --
> > Marcio Portes
> > Material Tecnico em Portugues - http://mportes.blogspot.com 
> <http://mportes.blogspot.com>
> > Practical Learning Oracle -
> > http://mportes.blogspot.com/2006/02/practical-learning-oracle.html 
> <http://mportes.blogspot.com/2006/02/practical-learning-oracle.html>
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  



[As partes desta mensagem que não continham texto foram removidas]



Re: RES: [oracle_br] Segmento x Datafile

2007-04-24 Por tôpico jlchiappa
   TABLETS_LMT_UNIF 3  26  137 
1048576 
 
===>> ou seja, com tablespaces LMT uniform-size, basta vc criar os 
datafiles do tamanho final desejado, na ordem desejada nos discos 
desejados, que AUTOMATICAMENTE a alocação inicial será round-robin, 
ie, vai alocando um extent por vez em cada datafile, espalhando os 
extents portanto, que é o que vc quer. 
 Lembro apenas que isso vale PARA A ALOCAÇÂO INICIAL, há os casos de :
 
 a) para UPDATEs, obviamente o I/O ** tem que ** ser feito no mesmo 
bloco aonde o(s) registro(s) já estava(m)
 
 e
 
 b) o espaço liberado por DELETEs necessariamente será usado cfrme 
for liberado - assim se for liberado um espaço no extent x do 
datafile y dum segmento, NECESSARIAMENTE o próximo insert não-append 
VAI USAR ESSE ESPAÇO, independente de "ordem" alguma, de qual foi o 
último datafile usado... 
 
 []s
 
  Chiappa
  

--- Em oracle_br@yahoogrupos.com.br, "Clayton Rocha" 
<[EMAIL PROTECTED]> escreveu
>
> Entendo perfeitamente que ele divide e que temos ganho de 
performance caso
> estejam em discos diferentes...
> 
>  
> 
> A minha dúvida seria qual seria o critério que determina onde ele 
irá
> salvar... Realmente acho que não vai ser possível alguém me 
explicar isso em
> poucas linhas, mas, deixo uma outra pergunta:
> 
>  
> 
> Existe algum material com explicações sobre esse assunto? É 
possível eu
> entender essa tomada de decisões ou é algo que apenas devo saber 
que ele
> divide, faz o melhor possível e ponto?
> 
>  
> 
> Obrigado!
> 
>  
> 
> Clayton Rocha
> 
>  
> 
> De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
> nome de Marcio Portes
> Enviada em: segunda-feira, 23 de abril de 2007 17:45
> Para: oracle_br@yahoogrupos.com.br
> Assunto: Re: [oracle_br] Segmento x Datafile
> 
>  
> 
> Grosso modo falando... Não é uma resposta para ser desenvolvida em 3
> linhas...
> Porque ele divide a carga de I/O espalhando os blocos através dos 
datafiles.
> Imagine se voce tivesse cada datafile em um disco diferente com
> controladoras diferentes, voce ganharia em leitura, porque as 
controladoras
> iriam atenter em paralelo ao request do banco.
> 
> On 4/23/07, Clayton Rocha <[EMAIL PROTECTED]
> <mailto:clayton.rocha%40faitec-cons.com.br> > wrote:
> >
> > Boa tarde!
> >
> > Fiquei com uma curiosidade agora... se eu tenho uma tablespace 
com dois
> > datafiles e movo um segmento para essa tablespace. O que 
determina em qual
> > dos dois datafiles o segmento vai ser armazenado se eu tenho 
espaço livre
> > suficiente nos dois? Por que, mesmo tendo espaço para alocar em 
um único
> > datafile acontece do Oracle dividir o segmento nos dois?
> >
> > Oracle 10g em Windows.
> >
> > Obrigado!
> >
> > Clayton Rocha
> >
> > DBA Oracle
> >
> > Faitec Tecnologia
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> > 
> >
> 
> -- 
> Marcio Portes
> Material Tecnico em Portugues - http://mportes.blogspot.com
> Practical Learning Oracle -
> http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
>  
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Segmento x Datafile

2007-04-23 Por tôpico Marcio Portes
Se voce já sabe que ele divide e isso é importante para performance (I/O),
para mim é isso que importa. (mas isso é opinião pessoal e entendo sua
curiosidade). Tentando ajudar: obviamente é um algorítmo interno que nunca
tive curiosidade de pesquisar. Porém, voce pode começar um investigação
fazendo um load em uma tabela em uma tablespace que possua 2, 3 datafiles e
ver a quantidade de dados que vai para cada um.
Exemplo executado no 9i e 10g.

9i (9.2.0.8)

FILE_NAME MBYTES   PCT
-- - -
/oracle/tmp/df1.dbf   14 51,85
/oracle/tmp/df2.dbf   13 48,15

10g (10.2.0.3)
==
FILE_NAME MBYTES   PCT
-- - -
/oracle/tmp/df1.dbf   24 51,06
/oracle/tmp/df2.dbf   23 48,94

E o script que usei para o teste.
--
set echo on

create tablespace tbs_deldf datafile
  '/oracle/tmp/df1.dbf' size 50m,
  '/oracle/tmp/df2.dbf' size 50m
/

col file_name format a30
select file_name
  from dba_data_files
 where tablespace_name = 'TBS_DELDF'
/

create table t tablespace tbs_deldf as select * from all_objects;
insert /*+ append */ into t select * from t;
commit;
insert /*+ append */ into t select * from t;
commit;
insert /*+ append */ into t select * from t;
commit;

select count(*) from t;

with
  sum_byt as (
select file_id, sum(bytes) sum_bytes
  from dba_extents
 where owner = user
   and segment_name = 'T'
   and segment_type = 'TABLE'
 group by file_id
  )
select file_name,
   round( sum_bytes/1024/1024, 2 ) mbytes,
   round( ratio_to_report(sum_bytes) over () * 100, 2 ) pct
  from dba_data_files df, sum_byt ex
 where df.file_id = ex.file_id
/

drop tablespace tbs_deldf including contents and datafiles;

set echo off


On 4/23/07, Clayton Rocha <[EMAIL PROTECTED]> wrote:
>
>   Entendo perfeitamente que ele divide e que temos ganho de performance
> caso
> estejam em discos diferentes...
>
> A minha dúvida seria qual seria o critério que determina onde ele irá
> salvar... Realmente acho que não vai ser possível alguém me explicar isso
> em
> poucas linhas, mas, deixo uma outra pergunta:
>
> Existe algum material com explicações sobre esse assunto? É possível eu
> entender essa tomada de decisões ou é algo que apenas devo saber que ele
> divide, faz o melhor possível e ponto?
>
> Obrigado!
>
> Clayton Rocha
>
> De: oracle_br@yahoogrupos.com.br  [mailto:
> oracle_br@yahoogrupos.com.br ] Em
> nome de Marcio Portes
> Enviada em: segunda-feira, 23 de abril de 2007 17:45
> Para: oracle_br@yahoogrupos.com.br 
> Assunto: Re: [oracle_br] Segmento x Datafile
>
> Grosso modo falando... Não é uma resposta para ser desenvolvida em 3
> linhas...
> Porque ele divide a carga de I/O espalhando os blocos através dos
> datafiles.
> Imagine se voce tivesse cada datafile em um disco diferente com
> controladoras diferentes, voce ganharia em leitura, porque as
> controladoras
> iriam atenter em paralelo ao request do banco.
>
> On 4/23/07, Clayton Rocha <[EMAIL 
> PROTECTED]
> <mailto:clayton.rocha%40faitec-cons.com.br> > wrote:
> >
> > Boa tarde!
> >
> > Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois
> > datafiles e movo um segmento para essa tablespace. O que determina em
> qual
> > dos dois datafiles o segmento vai ser armazenado se eu tenho espaço
> livre
> > suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único
> > datafile acontece do Oracle dividir o segmento nos dois?
> >
> > Oracle 10g em Windows.
> >
> > Obrigado!
> >
> > Clayton Rocha
> >
> > DBA Oracle
> >
> > Faitec Tecnologia
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> --
> Marcio Portes
> Material Tecnico em Portugues - http://mportes.blogspot.com
> Practical Learning Oracle -
> http://mportes.blogspot.com/2006/02/practical-learning-oracle.html
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]



RES: [oracle_br] Segmento x Datafile

2007-04-23 Por tôpico Clayton Rocha
Entendo perfeitamente que ele divide e que temos ganho de performance caso
estejam em discos diferentes...

 

A minha dúvida seria qual seria o critério que determina onde ele irá
salvar... Realmente acho que não vai ser possível alguém me explicar isso em
poucas linhas, mas, deixo uma outra pergunta:

 

Existe algum material com explicações sobre esse assunto? É possível eu
entender essa tomada de decisões ou é algo que apenas devo saber que ele
divide, faz o melhor possível e ponto?

 

Obrigado!

 

Clayton Rocha

 

De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Marcio Portes
Enviada em: segunda-feira, 23 de abril de 2007 17:45
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Segmento x Datafile

 

Grosso modo falando... Não é uma resposta para ser desenvolvida em 3
linhas...
Porque ele divide a carga de I/O espalhando os blocos através dos datafiles.
Imagine se voce tivesse cada datafile em um disco diferente com
controladoras diferentes, voce ganharia em leitura, porque as controladoras
iriam atenter em paralelo ao request do banco.

On 4/23/07, Clayton Rocha <[EMAIL PROTECTED]
<mailto:clayton.rocha%40faitec-cons.com.br> > wrote:
>
> Boa tarde!
>
> Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois
> datafiles e movo um segmento para essa tablespace. O que determina em qual
> dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre
> suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único
> datafile acontece do Oracle dividir o segmento nos dois?
>
> Oracle 10g em Windows.
>
> Obrigado!
>
> Clayton Rocha
>
> DBA Oracle
>
> Faitec Tecnologia
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Segmento x Datafile

2007-04-23 Por tôpico Gustavo Venturini de Lima
No meu entender ele divide para ter mais facilidade e agilidade de
leitura/escrita em cima do segmento...
É mais vantajoso dividí-los para conseguir uma leitura "paralela"... Isso é
claro se forem em discos diferentes... etc, etc, etc...


Em 23/04/07, Clayton Rocha <[EMAIL PROTECTED]> escreveu:
>
>   Boa tarde!
>
> Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois
> datafiles e movo um segmento para essa tablespace. O que determina em qual
> dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre
> suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único
> datafile acontece do Oracle dividir o segmento nos dois?
>
> Oracle 10g em Windows.
>
> Obrigado!
>
> Clayton Rocha
>
> DBA Oracle
>
> Faitec Tecnologia
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



Re: [oracle_br] Segmento x Datafile

2007-04-23 Por tôpico Marcio Portes
Grosso modo falando... Não é uma resposta para ser desenvolvida em 3
linhas...
Porque ele divide a carga de I/O espalhando os blocos através dos datafiles.
Imagine se voce tivesse cada datafile em um disco diferente com
controladoras diferentes, voce ganharia em leitura, porque as controladoras
iriam atenter em paralelo ao request do banco.

On 4/23/07, Clayton Rocha <[EMAIL PROTECTED]> wrote:
>
>   Boa tarde!
>
> Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois
> datafiles e movo um segmento para essa tablespace. O que determina em qual
> dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre
> suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único
> datafile acontece do Oracle dividir o segmento nos dois?
>
> Oracle 10g em Windows.
>
> Obrigado!
>
> Clayton Rocha
>
> DBA Oracle
>
> Faitec Tecnologia
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


[As partes desta mensagem que não continham texto foram removidas]



[oracle_br] Segmento x Datafile

2007-04-23 Por tôpico Clayton Rocha
Boa tarde!

 

Fiquei com uma curiosidade agora... se eu tenho uma tablespace com dois
datafiles e movo um segmento para essa tablespace. O que determina em qual
dos dois datafiles o segmento vai ser armazenado se eu tenho espaço livre
suficiente nos dois? Por que, mesmo tendo espaço para alocar em um único
datafile acontece do Oracle dividir o segmento nos dois?

 

Oracle 10g em Windows.

 

Obrigado! 

 

Clayton Rocha

DBA Oracle

Faitec Tecnologia

 



[As partes desta mensagem que não continham texto foram removidas]