Comment surveiller l'espace dans vos segments dans Oracle 12c

Segments

Sommaire

sont des objets qui prennent de la place dans la base de données dans Oracle 12c. Segments sont des objets qui, lors de sa création, attribués une ou plusieurs extensions de l'espace libre dans vos espaces de table. Les deux segments de base de données les plus courants sont

  • Tableaux

  • Index

Les tableaux sont ce que contiennent les données, et les indices sont pointeurs accès aux éléments de données dans une table. Gestion de l'espace pour les tables et les index sont très similitude cependant, les mêmes concepts et les techniques applicables pour la gestion de l'espace de l'indice.

Avant de mettre les données dans une table, Oracle va à la table où il vit et alloue un extent. Vous pouvez appeler cela un mesure occasion car il appartient à un objet. L'espace restant dans l'espace de table est extensions libres que vous pouvez utiliser lorsque des objets se développer ou de nouveaux objets sont créés.

Comme vous commencer à mettre les données dans cette table, la mesure qui a été attribué à la création commence à se remplir. Lorsque la mesure atteint la capacité, la table va à l'espace de table et attrape une autre mesure. Ce cycle se poursuit jusqu'à ce que vous arrêtez l'ajout de données ou de l'espace de table à court d'espace libre.

Si l'espace de table à court d'espace libre, le processus de demande de l'espace génère un message d'erreur et qu'il a échoué ou suspend jusqu'à ce que l'espace est temporairement ajouté.

Comment grandir et rétrécir tables dans Oracle 12c

Une table qui correspond à cette catégorie pourrait être chargé à chaque nuit, puis supprimé de toute la journée, comme une table de traitement par lots.

Par exemple, considérons une table de ORDONNE que lot est chargé dans la nuit de tous les ordres qui ont été prises à partir d'un site web- que les commandes sont traitées le jour suivant, les lignes sont supprimés un par un. A la fin de la journée, toutes les lignes ont disparu. Qu'est-ce que vous devez surveiller pour cette table?

Vous devriez être plus préoccupés par l'ampleur de la table devient chaque jour après la charge du lot. Les entreprises veulent des ordres d'augmenter. Qu'en est-il des suppressions? Si vous rétrécir le tableau à la fin de la journée avant la prochaine charge de commandes pour libérer de l'espace? Absolument pas.

Bien qu'il soit petit, la croissance d'un objet est en tête sur le traitement du système. En laissant le jour même de la taille de la journée, vous savez l'espace sera constamment réutilisé. Vous voulez surtout pour surveiller ce type d'objet pour la croissance.

Qu'en est-il d'une table que vous ajoutez à et de supprimer à partir sur une base fréquente? Disons, par tous les 1 millions de lignes insérées dans une semaine, 30 pour cent sont supprimés. Ce tableau peut présenter un défi intéressant.

Jetez un coup d'œil à la façon dont les lignes sont insérées pour mieux comprendre comment se développent les objets et l'utilisation d'espace:

  • Vous avez une nouvelle table avec un 64k mesure.

  • Votre taille de bloc est 4k, alors cette mesure est de 16 blocs.

  • Vous commencez à insérer Data- 100 lignes tiennent dans un bloc.

  • Par défaut, Oracle remplit blocs à 90 pour cent complète, puis arrête. Par exemple, certains champs sont laissés nulle à une date ultérieure, et puis vous les remplir. Vous ne voulez pas le bloc se faire remplir trop facilement par un update- contraire Oracle doit se déplacer la ligne à un nouveau bloc qui correspond à ce . Ce la migration des lignes dégrade les performances.

  • Lorsque tous les blocs sont remplis dans les zones libres, la table alloue une nouvelle mesure, et le processus recommence.

Bien que Oracle a réduit les frais généraux de performance qui vient avec la gestion des blocs et ceux qui vous pouvez insérer des données dans, le stockage de blocs de gestion a encore un coût qui lui est associé.

Imaginez que vous avez une table avec 10.000 blocs et vous êtes constamment insertion et de suppression de cette table. Oracle pourrait passer tous les cycles CPU gérer ce que les blocs peuvent avoir des inserts et qui ne peut pas si il y avait seulement une différence d'une seule ligne entre les blocs pleins et non-pleins.

Voilà pourquoi Oracle utilise la règle de 40 pour cent. Un bloc prend toutes les insertions qu'il peut corriger jusqu'à ce qu'il soit 90 pour cent plein, mais le bloc ne peut pas se remettre en ligne jusqu'à ce qu'il a été réduit à 40 pour cent complet.

Comment retailler les tables dans Oracle 12c

Vous devez déterminer si vous pouvez libérer l'espace d'un objet après avoir évalué le modèle d'utilisation de l'objet. Déterminer si vous pouvez libérer l'espace d'un objet nécessite un peu d'arithmétique. Avant que vous pouvez décider de faire de la place dans un tableau, vous devez analyser la table pour recueillir des statistiques.

La commande ANALYZE obtient les statistiques nécessaires pour ce faire DBMS_STATS Computation- ne reçoit pas ces statistiques.

Cet exemple utilise la table emp. Pour analyser la table appropriée, prendre ces mesures:

  1. Connectez-vous à SQL * Plus et le type

    lt; analyser la table emp compute statistiques->

    Vous voyez ceci:

    Tableau analysé.
  2. Exécutez une requête sur la vue USER_TABLES en tapant

    Vous voyez quelque chose comme ceci:

    BLOCS TABLE_NAME AVG_SPACE ------------------------------ ---------- ------- --- EMP 32644528

    La colonne de AVG_SPACE montre le montant moyen de l'espace libre par bloc.

  3. Utilisez la formule suivante pour calculer la quantité d'espace vide dans la table emp:


    (AVG_SPACE - (DB_BLOCK_SIZE x espace_libre)) x TAB_BLOCKS

    Pour cet exemple, la formule ressemble à ceci:

    (3623 - (8192 x 0,10)) x 4528 = 11066432 (environ 11 Mo)

  4. Décidez si il ya assez d'espace pour le rendre utile pour réduire l'objet.

  5. Pour permettre à Oracle de déplacer des lignes autour dans le type de table, tapez cette commande SQL:

    Vous voyez ceci:

    Tableau modifié.
  6. Cette commande SQL pour faire le psy:

    Vous voyez ceci:

    Tableau modifié.
  7. Re-analyser la table et ré-exécuter la requête pour vérifier les statistiques.

    Vous devriez voir quelque chose comme ceci:

    BLOCS TABLE_NAME AVG_SPACE ------------------------------ ---------- ------- --- EMP 9332979

    Comme vous pouvez le voir, le AVG_SPACE est d'environ 10 pour cent de la taille de bloc. Ceci est normal pour bloc par défaut organisation de l'espace.


» » » Comment surveiller l'espace dans vos segments dans Oracle 12c