- This topic has 1 reply, 2 voices, and was last updated 7 years, 4 months ago by José Laurindo Chiappa.
Viewing 2 posts - 1 through 2 (of 2 total)
Viewing 2 posts - 1 through 2 (of 2 total)
- You must be logged in to reply to this topic.
Caros colegas DBA’s, estou com uma dúvida: meu banco está sempre com o TEMPFILE no limite dos 32 Gb. Isso é prejudicial ao desempenho do banco? Ou é normal? Não vejo erros nas aplicações. Mas sempre que eu crio um novo arquivo e excluo o anterior, rapidamente cresce para os 32 Gb. Existe alguma forma desse arquivo “sofrer uma limpeza” de tempos em tempos, ou só dropando e criando um novo?
Sim, é algo absolutamente normal : https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:34014729642755 tem várias demonstrações e provas sobre o Conceito, e a questão é que, para melhor performance, depois que o banco deixa de precisar do que estava gravada num tempfile ao invés de ter o esforço de apagar a informação e diminuir o tempfile, o RDBMS simplesmente faz uma ‘marca’ num ‘flag interno’ do tempfile dizendo que aquela informação não é mais necessária e acabou, as próximas sessões simplesmente vão gravar seus dados por cima dos dados desnecessários que já estavam em disco….
Se vc pensar a respeito faz sentido : já pensou na quantidade de I/O em disco que o RDBMS teria que fazer para remover os 32 Gigabytes do tempfile pra daqui a pouco vir outra sessão e gravar mais dados, fazendo o tempfile crescer de novo, pra depois ter que ser diminuído de novo ?? Não faz sentido isso, né não ???
Caso vc não saiba ainda , vc pode acompanhar quais pedaços do datafile estão marcados como ainda em uso através de views do sistema, como V$SORT_USAGE e similares…
[]s
Chiappa
OBS : até um ponto, vc vai ver que esse conceito de não ficar aumentando/diminuindo arquivos em disco cfrme são usados/liberados acontece também com DATAFILES comuns – experimente criar numa tablespace qquer um datafile (com o tipo comum, não-extensível e não gerenciado pelo sistema) de, digamos, 100 Megabytes e vc vai ver que mesmo sem dados em disco ele vai ocupar 100 megabytes em disco, aí se vc gravar, digamos, 10 Megabytes de dados nesse datafile ele *** Não Vai ** encolher para 10 Megabytes em disco, POUPANDO o sistema de ter o imenso trabalho de reduzir via um montão de I/Os o datafile : dos 100 MB em disco, 10 vão estar preenchidos com dados e os outros 90 com ‘zeros/nulos’, disponíveis para serem re-escritos com dados reais a qquer hora….