Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 7 anos, 11 meses atrás por Avatar photoJosé Laurindo Chiappa.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #108468
    Avatar de airoospairoosp
    Participante

      Boa tarde,

      Esta ocorrendo uma situação estranha, ou melhor eu não tinha visto o cenário abaixo ocorrer.

      Há uma tablespace específica para um sistema, só que este sistema não esta mais sendo utilizado, consequentemente, o espaço utilizado pela tablespace não deveria estar aumentando, só que esta.

      Este sistema utiliza, tables, functions, procedures, views, jobs, o detalhe é que as tabelas deste sistema não são atualizadas a muito tempo, e o jobs foram desativados.

      Já verifiquei e não há objetos de outros schemas nesta tablespace, então porque o espaço utilizado pela mesma tem aumentado?

      A query que uso para verificar informações das tablespaces, é:

      select nome_tablespace, status, tamanho, utilizado, livre, percentual_utilizado
      from
      (
      select a.TABLESPACE_NAME NOME_Tablespace,
      c.status status,
      round(a.BYTES / 1048546 ,2) Tamanho,
      round((a.BYTES – b.BYTES) / 1048546,2) Utilizado,
      round(b.BYTES / 1048546 ,2) Livre,
      round(((a.BYTES-b.BYTES)/a.BYTES)*100,2) Percentual_Utilizado
      from
      (
      select TABLESPACE_NAME, sum(BYTES) BYTES
      from dba_data_files
      group by TABLESPACE_NAME
      )
      a,
      (
      select TABLESPACE_NAME, sum(BYTES) BYTES, max(BYTES) largest
      from dba_free_space
      group by TABLESPACE_NAME
      )
      b,
      sys.dba_tablespaces c
      where a.TABLESPACE_NAME = b.TABLESPACE_NAME
      and b.TABLESPACE_NAME = c.TABLESPACE_NAME

      union all

      SELECT d.tablespace_name NOME_Tablespace,
      d.status status,
      round(NVL(a.bytes, 0) / 1048546, 2) Tamanho,
      round(NVL(t.bytes, 0) / 1048546, 2) Utilizado,
      round((NVL(a.bytes, 0) – NVL(t.bytes, 0)) / 1048546, 2) livre,
      round((NVL(t.bytes,0) / NVL(a.bytes,0)) * 100, 2) Percentual_Utilizado
      FROM sys.dba_tablespaces d,
      ( select tablespace_name, sum(bytes) bytes
      from dba_temp_files group by tablespace_name
      ) a,

      ( select tablespace_name, sum(bytes_cached) bytes
      from v$temp_extent_pool group by tablespace_name
      ) t,

      v$sort_segment s
      WHERE d.tablespace_name = a.tablespace_name(+)
      AND d.tablespace_name = t.tablespace_name(+)
      AND d.tablespace_name = s.tablespace_name(+)
      AND d.extent_management like ‘LOCAL’
      AND d.contents like ‘TEMPORARY’
      )
      order by nome_tablespace

      Se alguém tiver alguma dica, agradeço.

      Obrigado.

      Airton

      #108472
      Avatar photoJosé Laurindo Chiappa
      Moderador

        Então, com TOTAL e ABSOLUTA CERTEZA, se as suas tablespaces não-temporárias (vejo que nas suas queries vc consulta tudo, mas Suponho que é não-tempo que vc está falando) estão aumentando de tamanho usado / diminuindo o tamanho livre, ** ALGUÉM ** ou ALGUMA COISA está fazendo DMLs nas tabelas que residem nas tablespaces : NÂO TEM COMO o RDBMS sair alocando espaço sozinho, sim sim ?? Isso é Conceitual…
        Fica portanto por sua conta :

        a) consultar frequentemente quais os maiores objetos, pra identificar quem está consumindo/requisitando espaço – pra achar os 50 maiores objetos pode ser algo tipo :

        SELECT * FROM (SELECT SUM(BYTES), OWNER, SEGMENT_TYPE, SEGMENT_NAME, TABLESPACE_NAME FROM DBA_SEGMENTS GROUP BY OWNER, SEGMENT_TYPE, SEGMENT_NAME, TABLESPACE_NAME order by 1 DESC) WHERE ROWNUM < 51;

        E

        B) aplicar algum tipo de Auditoria pra registrar Quem está fazendo DMLs que fazem os objetos já existentes crescerem OU DDLs criando/recriando novos objetos ou movimentando dados : pode ser via comando AUDIT, via trigger de DDL, Ou pode ser (como última opção, por ser a mais sujeita a erros) com amostragem constante do banco… Como eu disse, pode ser um ou mais usuários de banco que manualmente executam os DMLs/DDLs, pode ser um job fora do banco (via cron, talvez), pode ser uma Aplicação externa, pode ser um OUTRO database via dblink….
        Que tem ALGO ou ALGUÉM usando, tá fora de questão, como eu disse sozinho um banco não cresce, não…

        []s

        Chiappa

        OBS : é claro, se o "sistema dono dos dados não esta mais sendo utilizado", em tese Ninguém deveria estar nem inserindo nem alterando dados, ok ? Se é isso, não vejo o que te impede de simplesmente botar as tablespaces de usuários ** todas ** em modo READ-ONLY – garanto que ao fazer isso esse ALGO ou ALGUÉM que está usando o sistema /banco de dados que deveria estar sem uso vai receber um erro pela cara aí vai se manifestar…. Tipo assim…

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress