Obrigado Chiappa,

Irei entrar mais no detalhe para resolver esse problema.

 

Ednilson

 

 

 

De: sentto-1682896-122827-15542955...@returns.groups.yahoo.com 
[mailto:sentto-1682896-122827-15542955...@returns.groups.yahoo.com] Em nome de 
jlchia...@yahoo.com.br [oracle_br]
Enviada em: quarta-feira, 3 de abril de 2019 09:46
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] Re: Tabelas com espaço perdido.

 

  

Opa, segue :

"Essas tabelas não sei lhe responder se sofrem só INSERT, não conheço o sistema 
a fundo."

==>> ESSE é o ponto CRUCIAL : veja vc, COMO EU DISSE a principal situação em 
que vc tem espaço que momentaneamente ocupa lugar no disco/não pode ser 
devolvido ao SO mesmo estando sem dados é essa que eu falei, ie, logo após um 
DELETE.... COMO EU DISSE, esse espaço Não Está desperdiçado, está RESERVADO 
para os futuros INSERTs/UPDATEs que necessitarem dele....
 Aí é que chegamos na situação atual : vc vê que esse esforço não é tão simples 
de se fazer, digamos que vc não sabia e que depois de todo o trabalhão chegaram 
uma pancada de novos INSERTs e vc TEVE que aumentar DE NOVO o espaço nas 
tablespaces - esse espaço SAIU do espaço que tinha sido devolvido antes..... OU 
SEJA< nesse cenário vc desperdiçõ horas e horas pra chegar basicamente NA MESMA 
COISA, trocou 6 por meia dúzia.. Valeu a pena ?? DUVIDO....
  Agora digamos que para algumas determinadas tabelas NÂO chegaram novos 
INSERTs/UPDATEs : ** maravilha TOTAL **, esse espaço que vc liberou NÂO vai ser 
preciso reutilizar, vc GANHOU esse espaço.... SIM, nesse cenário vc fez uma 
Ótima Coisa, vc realmente Reorganizou/poupou espaço........

===>> SENDO ASSIM, eu positivamente RECOMENDO que antes de vc sair mexendo, vc 
LEVANTE a informação necessária : isso tanto pode ser respondido (ao menos em 
parte) pelos Analistas e usuários da aplicação, QUANTO vc pode fazer uma 
MONITORAÇÃO nas tabelas, com essa monitoração Ativa, depois de uns tantos dias 
dela coletando dados mais ou menos vc vai ter uma noção de QUAIS tabelas são 
mais usadas/ingerem mais dados e quais não, aí essas que são MENOS usadas devem 
valer a pena arriscar o procedimento, vide 
http://www.oraclehome.com.br/2012/09/25/monitorando-operacoes-de-uma-tabela-atraves-da-dba_tab_modifications/
 além da documentação.... E NEM PRECISO DIZER, tem muuuuito sistema vagabundo 
por aí que não tem a menor documentação sobre a utilização das tabelas, mas 
ALGUMAS VEZES vc pode tentar DEDUZIR o comportamento de uso pelo NOME das 
tabelas , tipo : tabelas com BKPxx, OLD_xx, HISTxxx ou coisa assim TALVEZ sejam 
tebaleas de histórico de dados, que TIPICAMENTE sofrem muito POUCO insert, se é 
que sofrem....

E IMPORTANTE : não é NEM DE LONGE só esse o único procedimento que pode ser 
feito para poupar espaço num database Oracle... Além de reorganização, vc pode :

- COMPACTAR os seus dados e seus índices : a compactação read/write on-line 
automática exige Licença para a Advanced Compression, não sabemos se vc tem 
isso ou não - se não tiver, AO MENOS as tabelas que não sofram INSERT frequente 
(E os índices delas) vc pode Compactar, vide 
https://oracle-base.com/articles/9i/compressed-tables-9i

- confirmar que não há extents gigânticos : como eu disse antes, o tamanho do 
extent é CRUCIAL quando discutimos consumo em disco..... Veja vc , quando o 
RDBMS Oracle precisa alocar espaço em disco, ele NÃO VAI FICAR alocando de byte 
em byte, isso ia ser Horrivelmente Demorado : o que ele faz é ir no disco e 
formatar/requisitar um MONTÃO de blocos de uma vez só, isso é o chamado EXTENT 
- ainda que ele vá gravar uma linha na tabela que seja, se não há mais espaço 
livre ele ALOCA UM EXTENT inteirinho.... O tamanho desse extent PODE ser 
controlado automaticamente pelo banco (SE vc criar a tablespace como EXTENT 
MANAGEMENT LOCAL AUTOALLOCATE ** e ** não "forçar" um extent size diferente 
quando criar as tabelas na tablespace) , OU PODE ser indicado manualmente....
 Assim, se por qquer erro humano uma tabela alocou um extent de (digamos) 500 
megabytes MAS no final entraram muito menos dados do que isso, esse espaço todo 
que sobrou tá RESERVADO, ninguém mais pode usar ele.....
 Como eu havia dito, SE vc não sabe o padrão de consumo, uma boa idéia é ter 
todas as tablespaces com extent size automático E não "forçar" extent size 
nenhum na criação das tabelas, nem com INITIAL, nem com NEXT e nem com 
INCREASE....
 
 - para os casos de grande volume de dados, gerenciar o espaço a nível de bloco 
: veja vc, depois que alocou um extent, o RDBMS vai gravar os registros/linhas 
da tabela dentro dos BLOCOS que compõem o extent : porém, ele Não Vai Ocupar o 
bloco inteirinho... Além do cabeçalho (que não podemos usar) e de uma área 
reservada para uso interno (INITRANS), por padrão um bloco VAI DEIXAR RESERVADO 
um pedaço da área dele para futuros UPDATEs.... Para as tabelas de Histórico, 
LOG/AUDITORIA e outras que quase não sofrem UPDATEs (só INSERTs) pode valer a 
pena DIMINUIR essa área, são os parâmetros PCTFREE e PCTUSED na criação da 
tabela, vide a doc Oracle e 
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2556828000346627752
 para algumas refs...
 
 
 []s
 
   Chiappa



  • [oracle_br] Tabelas... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
    • [oracle_br] Re... jlchia...@yahoo.com.br [oracle_br]
      • [oracle_br... jlchia...@yahoo.com.br [oracle_br]
      • RES: [orac... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
        • Re: RE... jlchia...@yahoo.com.br [oracle_br]
          • Re... jlchia...@yahoo.com.br [oracle_br]
          • RE... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
        • OFF-TO... jlchia...@yahoo.com.br [oracle_br]
    • Re: [oracle_br... Marcos Braga braga.mar...@gmail.com [oracle_br]
      • RES: [orac... 'Ednilson Silva' ednilson.si...@jbs.com.br [oracle_br]
      • Re: [oracl... Marcos Braga braga.mar...@gmail.com [oracle_br]
        • Re: [o... jlchia...@yahoo.com.br [oracle_br]
          • Re... jlchia...@yahoo.com.br [oracle_br]
            • ... jlchia...@yahoo.com.br [oracle_br]

Responder a