- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 5 meses atrás por
David Siqueira.
-
AutorPosts
-
26 de outubro de 2009 às 6:40 pm #90452
thiagofm
ParticipanteAmigos,
Estou com dúvidas quanto a detectar que determinada tablespace está fragmentada a ponto de precisar de um reorg, tanto as tablespaces criadas para armazenar índices quanto as de dados
Procurei material, li bastante e ainda não cheguei a uma conclusão satisfatoria sobre como agir pro-ativamente para não ter problemas de performance por fragmentação de tablespaces
abs!
27 de outubro de 2009 às 5:55 pm #90510MauroLacerda
ParticipanteCaro Thiago,
Bom dia,Sua duvida me gerou algumas também. Em minha pesquisa encontrei um link que me ajudou um pouco.Vou posta-lo e torço para que ele te ajude também.
abs.
http://eduardolegatti.blogspot.com/2008 … space.html
27 de outubro de 2009 às 6:10 pm #90511David Siqueira
ParticipanteOlá rapaziada!!!
Bem em caso de fragmentação ha alguns scripts que podem ser rodados e com isso detectar se ha um alto indice de fragmentação em suas tablespaces ( tabelas e indices), um outro indicativo são os usuários finais, pois se alguem reclama sobre determinado processo que era rápido e tão logo ficou lento há uma grande chance de ser fragemntação, pois caso tenha ocorrido uma limpeza de dados , a tabela muito facilmente se encontrara com bloco livres não-aglutinados, obrigando o Oracle a ler uma fileira de blocos e mais blocos até encontar o dado que procura.
Sugiro que usem as ferramentas Oracle para identificar sinais de possiveis contenções , é uma analise detalhada e minuciosa, visto que terão que coletar informações, usem para isso STATSPACK , AWR etc.
segue alguns scripts que ja usei :
--------------Script 1
set lin 150
comp sum of nfrags totsize freesize on report
break on reportset numformat 999,999,990
col sname justify l for a15
col tbs for a15
col nfrags heading 'Free|Frags'
col maxfrag justify c heading 'Largest|Frag (Kb)'
col maxnext justify c heading 'Largest|Next Extent (Kb)'
col totsize heading 'Total|(Kb)'
col freesize heading 'Available|(Kb)'
col pctused heading 'Pct|Used'col name noprint new_value dbname
select name from v$database;create or replace view aps_data_files as
select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name;spool d:Pro-atividadefreespace_frag.log
ttitle left "Database:"dbname" - Tablespace Fragmentation Report" skip 2
select t.tablespace_name tbs,
count(f.bytes) nfrags,
nvl(max(f.bytes)/1024,0) maxfrag,
t.bytes/1024 totsize,
nvl(sum(f.bytes)/1024,0) freesize,
(1-nvl(sum(f.bytes),0)/t.bytes)*100 pctused
from aps_data_files t,
dba_free_space f
where t.tablespace_name = f.tablespace_name(+)
group by t.tablespace_name,t.bytes;select fs.tablespace_name tbs,
max(s.next_extent)/1024 maxnext,
max(fs.bytes)/1024 maxfrag,
max(segment_name) sname
from dba_free_space fs,
dba_segments s
where fs.tablespace_name=s.tablespace_name
group by fs.tablespace_name
having max(s.next_extent) > max(fs.bytes);ttitle off
spool off
Script 2
COL C1 FORMAT A20
COL C2 FORMAT 999,999,999,999
COL SEGMENT_NAME FOR A25
BREACK ON OWNER ON TABLESPACE_NAME
SELECT OWNER, TABLESPACE_NAME, SEGMENT_NAME||
decode(SEGMENT_TYPE,'TABLE','[T]', 'INDEX', '[I]',
'ROLLBACK','[R]', '[O]') segment_name
, sum(BYTES) C2,
decode(count(),1,to_char(count()),
2,to_char(count()),
3,to_char(count()),
4,to_char(count()),
5,to_char(count()),
to_char(count(*))||' 5;Espero que os ajudem, caso queiram podem dar uma olhadinha no BLOG também :
http://databaseguard.blogspot.com/2009/09/reorganizando-meu-banco-de-dados.html
Abraço á todos!!!
-
AutorPosts
- Você deve fazer login para responder a este tópico.