Une commande de mémoire utile que vous pouvez utiliser pour surveiller le SGA Oracle est la commande ipcs. La commande ipcs affiche la taille de chaque segment de mémoire partagée pour le SGA. S’il n’y a pas assez de mémoire pour que l’ensemble du SGA puisse tenir dans un morceau de mémoire contigu, le SGA sera construit dans des segments de mémoire non contigus. En cas de plantage instantané, la mémoire peut ne pas être libérée. Si cela vous arrive, notez que la commande ipcrm supprime les segments (ipcrm-m pour les segments de mémoire et ipcrm-s pour les segments de sémaphore). Utilisez ipcs-b sur Solaris et ipcs-a sur Linux, HPUX et AIX.
Dans l’exemple précédent, le SGA est construit en trois segments non contigus (constituant le SGA 100M +). L’instance est ensuite arrêtée et démarrée avec un SGA plus petit (le SGA est donc composé de morceaux de mémoire contigus). Après que le SGA a été abaissé à 70M, j’émet à nouveau la commande ipcs:
Le montage de l’ensemble du SGA dans un seul segment de mémoire partagée est généralement préférable en raison de la surcharge pouvant être nécessaire pour suivre plus d’un segment et du temps nécessaire pour basculer entre ces segments. Vous pouvez augmenter la taille maximale d’un seul segment de mémoire partagée en augmentant le paramètre SHMMAX dans le fichier /etc/system (ou /etc/sysctl.conf selon la version). Consultez la documentation d’installation Oracle pour des informations plus spécifiques à votre plate-forme. Sur Solaris 10, le réglage des paramètres de mémoire partagée a été déplacé vers le contrôle des ressources, donc si vous modifiez le fichier /etc/system, toutes les modifications que vous apportez sont ignorées. Enfin, si vous configurez d’Énormespages, la mémoire est extraite d’un pool et les sémaphores ne sont pas utilisés. AMM nécessite l’utilisation de sémaphores, donc si vous définissez MEMORY_TARGET, vous ne pouvez pas utiliser Hugepages.
ASTUCE
Utilisez la commande ipcs pour voir si votre SGA est construit à l’aide de plusieurs morceaux de mémoire non contigus. Un crash de base de données peut poser problème en ne libérant pas la mémoire. Utilisez la commande ipcrm (uniquement si les pièces SGA ne sont pas libérées après un plantage de la base de données) pour ensuite supprimer les pièces SGA de la mémoire. N’émettez pas la commande ipcrm avec une base de données en cours d’exécution.