Quero encontrar o espaço real sendo consumido pelos índices em uma tabela no oracle 10g. Não pretendo incluir o espaço reservado pela oracle para uso futuro. (A sobrecarga do oracle não deve ser considerada.) Quero os bytes usados e não os bytes alocados.
Você pode me ajudar a seguir em frente?
Além disso, existe uma maneira de encontrar o tamanho real de um campo longo em uma tabela.
PS: vsize () e dbms_lob.getlength () não funcionam.
oracle
oracle-10g
Igualitário
fonte
fonte
Respostas:
mostrará a quantidade de espaço realmente consumida por cada índice. Não sei se é exatamente isso que você está tentando explicar e como está distinguindo "usado" e "alocado" no contexto de um índice. Se você desejar contabilizar espaço livre no índice, poderá usar o procedimento DBMS_SPACE.SPACE_USAGE para determinar quantos blocos parcialmente vazios estão no índice.
fonte
delete <<name of table>>
), em oposição ao tamanho usado, que varia com o número de entradas no índice.SELECT idx.index_name, SUM(bytes) FROM user_segments seg, user_indexes idx WHERE idx.table_name = 'EMERGE_REPORTING_DETAIL' AND idx.index_name = seg.segment_name GROUP BY idx.index_name
Para medir o (que eu acredito que você entende) o tamanho alocado e usado do índice, eu provavelmente usaria
dbms_space
Este procedimento mede o tamanho alocado e usado de um índice chamado * TQ84_SIZE_IX *. Para completar, também adicionei a contagem de bytes conforme relatado por
user_segments
.Agora, este procedimento pode ser visto em ação:
Com uma entrada no índice, os seguintes números são retornados:
Preenchendo o índice ...
... e recebendo os números novamente ...
...relatórios:
Então, se o índice for "esvaziado":
isto mostra:
o que demonstra que o tamanho alocado não diminui enquanto o tamanho usado diminui.
fonte
Caso alguém venha aqui procurando uma maneira de encontrar o tamanho de um campo longo, abaixo está uma maneira de fazê-lo. Eu removerei esta resposta se a pergunta for separada.
Dados de amostra...
Função para fazer o trabalho ... (Para produção, isso deve estar em um pacote)
Teste a função ...
fonte
Eu tive que modificar a resposta de René Nyffenegger para torná-lo mais genérico e mais fácil de ver o uso do espaço para todos os índices em um esquema.
Pensei em compartilhar o código modificado aqui, caso alguém ache útil:
fonte