Je veux trouver l'espace réel consommé par les index sur une table dans Oracle 10g. Je n'ai pas l'intention d'inclure l'espace réservé par oracle pour une utilisation future. (La surcharge par oracle ne doit pas être prise en compte.) Je veux que les octets utilisés ne soient pas les octets alloués.
Pouvez-vous m'aider à aller de l'avant?
Existe-t-il également un moyen de trouver la taille réelle d'un champ long dans une table.
PS: vsize () et dbms_lob.getlength () ne fonctionnent pas.
oracle
oracle-10g
Égalitariste
la source
la source
Réponses:
vous montrera la quantité d'espace réellement consommée par chaque index. Je ne sais pas exactement si c'est exactement ce genre de frais généraux que vous essayez de prendre en compte et comment vous distinguez «utilisé» et «alloué» dans le contexte d'un index. Si vous souhaitez prendre en compte l'espace libre dans l'index, vous pouvez utiliser la procédure DBMS_SPACE.SPACE_USAGE pour déterminer le nombre de blocs partiellement vides dans l'index.
la source
delete <<name of table>>
) par opposition à la taille utilisée qui varie en fonction du nombre d'entrées dans l'index.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
Pour mesurer (ce que je crois que vous comprenez) la taille allouée et utilisée de l'indice, j'utiliserais probablement
dbms_space
Cette procédure mesure la taille allouée et utilisée d'un index nommé * TQ84_SIZE_IX *. Par souci d'exhaustivité, j'ai également ajouté le nombre d'octets rapporté par
user_segments
.Maintenant, cette procédure peut être vue en action:
Avec une entrée dans l'index, les chiffres suivants sont renvoyés:
Remplir l'index ...
... et obtenir à nouveau les chiffres ...
...rapports:
Ensuite, si l'index est "vidé":
ça montre:
ce qui démontre que la taille allouée ne diminue pas alors que la taille utilisée le fait.
la source
Si quelqu'un vient ici à la recherche d'un moyen de trouver la taille d'un long champ, voici un moyen de le faire. Je supprimerai cette réponse si la question est séparée.
Exemples de données ...
Fonction pour faire le travail ... (Pour la production, cela devrait être dans un emballage)
Testez la fonction ...
la source
J'ai dû modifier la réponse de René Nyffenegger pour la rendre plus générique et plus facile à voir l'utilisation de l'espace pour tous les index d'un schéma.
Je pensais partager le code modifié ici, au cas où quelqu'un d'autre le trouverait utile:
la source