Como monitorar o espaço em sua Segmentos no Oracle 12c

segmentos

são objetos que ocupam espaço no banco de dados no Oracle 12c. Segmentos são objetos que, quando criado, atribuídas uma ou mais extensões do espaço livre em seus espaços de tabela. Os dois segmentos de banco de dados mais comuns são

  • tabelas

  • índices

Tabelas são o que armazenar dados e índices são de acesso ponteiros para elementos de dados dentro de uma tabela. Gestão de espaço para tabelas e índices são muito similaridade no entanto, os mesmos conceitos e técnicas aplicáveis ​​para o gerenciamento de espaço de índice.

Antes de colocar todos os dados em uma tabela, a Oracle vai para o espaço de tabelas onde vive e atribui uma extensão. Você pode chamar isso de uma medida usada porque pertence a um objeto. O espaço restante no espaço de tabela é extensões livres que podem ser usados ​​quando os objetos crescer ou novos objetos são criados.

Como você começar a colocar dados em que a tabela, na medida em que foi atribuída aquando da criação começa a encher-se. Quando a medida atinge a capacidade, a tabela vai para o espaço de tabela e agarra uma outra medida. Este ciclo continua até que você parar de dados adicionando ou o espaço de tabela é executado fora do espaço livre.

Se a tabela ficar sem espaço livre, o processo solicitando o espaço gera uma mensagem de erro e falhar ou suspende temporariamente até que o espaço é adicionado.

Como crescer e encolher tabelas no Oracle 12c

A tabela que se encaixa nesta categoria pode ser carregado a cada noite e, em seguida, excluído de todo o dia, como uma mesa de processamento em lote.

Por exemplo, considere uma tabela de pedidos desse lote carregado na noite de todos os pedidos que foram tomadas a partir de um site-como os pedidos são processados ​​no dia seguinte, as linhas são apagados um a um. No final do dia, todas as linhas são ido. O que você precisa para monitorar a tabela?

Você deve estar mais preocupado com o quão grande a mesa fica cada dia após a carga em lotes. As empresas querem encomendas a aumentar. E sobre as exclusões? Se você encolher a tabela no final do dia, antes da próxima carga de lote para liberar espaço? Absolutamente não.

Embora seja pequena, o crescimento de um objecto é sobrecarga no processamento do sistema. Ao deixar o mesmo dia size-a-dia, você sabe o espaço será constantemente reutilizados. Você quero principalmente para monitorar este tipo de objeto para o crescimento.

Que tal uma tabela que você adicionar e excluir de em uma base freqüente? Digamos, por cada 1 milhão de linhas inseridas em uma semana, 30 por cento são excluídos. Esta tabela pode apresentar um desafio interessante.

Dê uma rápida olhada em como linhas são inseridas para entender melhor como os objetos crescer e espaço de uso:

  • Você tem uma nova tabela com um 64k medida.

  • Seu tamanho do bloco é 4k, de modo que medida é de 16 blocos.

  • Você começa a inserção de dados 100 linhas caber em um bloco.

  • Por padrão, a Oracle preenche blocos para 90 por cento cheio e depois pára. Por exemplo, alguns campos são deixados nulo até uma data posterior, e então você preenchê-los. Você não quer que o bloco para obter preenchido com muita facilidade por um update- de outra forma a Oracle tem de mover a linha para um novo bloco que se encaixa-lo . este migração de linhas degrada o desempenho.

  • Quando todos os blocos são preenchidas as extensões livres, a tabela aloca uma nova extensão, e o processo começa de novo.

Embora a Oracle reduziu a sobrecarga de desempenho que vem com blocos de gestão e quais você pode inserir dados em, armazenamento em bloco gestão ainda tem um custo associado a ele.

Imagine que você tem uma tabela com 10.000 blocos e você está constantemente inserir e excluir dessa tabela. A Oracle poderia passar todos os ciclos de CPU gerir o que bloqueia podem ter inserções e que não pode se houvesse apenas uma diferença de uma linha entre blocos completos e não-cheios.

É por isso que a Oracle usa a regra de 40 por cento. Um bloco toma todas as inserções que poder até que esteja 90 por cento completo, mas o bloco não pode receber de volta na linha até que seja reduzida a 40 por cento completo.

Como compactar as tabelas no Oracle 12c

Você deve determinar se você pode liberar espaço de um objeto depois de avaliar padrão de uso do objeto. Determinar se você pode liberar espaço de um objeto requer um pouco de aritmética. Antes que você possa decidir se deseja fazer o quarto em uma tabela, é preciso analisar a tabela para reunir estatísticas.

O comando ANALYZE recebe as estatísticas necessárias para fazer isso DBMS_STATS computacionalmente não obter essas estatísticas.

Este exemplo usa a tabela emp. Para analisar a tabela de forma adequada, siga estes passos:

  1. Entrar e SQL * Plus e tipo

    lt; analisar a tabela emp computação estatísticas->

    Você vê isso:

    Tabela analisados.
  2. Executar uma consulta contra a visão USER_TABLES digitando

    Você vê algo como isto:

    BLOCOS TABLE_NAME AVG_SPACE ------------------------------ ---------- ------- --- EMP 32644528

    A coluna AVG_SPACE mostra a quantidade média de espaço livre por bloco.

  3. Use a seguinte fórmula para calcular a quantidade de espaço vazio na tabela emp:

    (AVG_SPACE - (DB_BLOCK_SIZE FREE_SPACE x)) x TAB_BLOCKS

    Para este exemplo, a fórmula parece com isso:

    (3623 - (8192 x 0,10)) x 4528 = 11.066.432 (aproximadamente 11MB)

  4. Decidir se há espaço suficiente para torná-lo útil para encolher o objeto.

  5. Para habilitar Oracle para mover linhas em torno do tipo de tabela, emita este comando SQL:

    Você vê isso:

    Tabela alterada.
  6. Emitir esse comando SQL para fazer o psiquiatra:

    Você vê isso:

    Tabela alterada.
  7. Re-analisar a tabela e re-executar a consulta para verificar as estatísticas.

    Você deve ver algo como isto:

    BLOCOS TABLE_NAME AVG_SPACE ------------------------------ ---------- ------- --- EMP 9332979

    Como você pode ver, o AVG_SPACE é de cerca de 10 por cento do tamanho do bloco. Isso é normal para organização do espaço do bloco padrão.

menu