Un de mes clients a déployé la base de données de notre produit sur une machine Solaris qui possède déjà 3 instances d'Oracle. Donc, en ce moment, 4 instances d'Oracle s'exécutent sur la même machine. Et maintenant, nous rencontrons des problèmes de performances.
Je n'ai pas accès à d'autres instances ou à la machine, et tous les outils dont je dispose sont alert.log, AWR et ADDM. Je sais qu'il y a quelque chose lié à plusieurs instances, mais je ne peux pas le prouver.
Alors, ma question est, avez-vous vécu une situation similaire? Comment dois-je y faire face? Comment puis-je identifier la cause des problèmes de performances liés à plusieurs instances?
la source
L'exécution de plusieurs instances sur le même serveur est possible et dans certains cas nécessaire. L'oratab est spécialement conçu pour gérer la gestion de plusieurs instances. Dans les cas où vous avez plusieurs applications indépendantes, il peut être préférable d'avoir une instance pour chaque application.
Il est essentiel d'avoir suffisamment de mémoire. Oracle construit le SGA en mémoire partagée. Si vous n'avez pas suffisamment de mémoire, le SGA ou les processus commenceront à basculer entre et hors. Ceci est connu sous le nom de thrashing, et entraîne une baisse significative des performances.
Il peut être possible de régler les instances pour qu'elles s'exécutent avec un SGA plus petit. Oracle fournit des outils pour vous aider à régler la taille SGA. Si l'une des instances a un SGA excessivement grand, cela pénalisera toutes les instances.
Une autre utilisation de la mémoire qui est importante est l'espace tampon. Cela agit comme un cache secondaire et peut éliminer des E / S de lecture importantes.
L'exécution
sar
(en supposant qu'un O / S de base Unix) peut vous donner de bons diagnostics sur l'endroit où se trouve le problème. Les problèmes probables sont l'échange ou la saturation des E / S du disque. L'ajout de RAM résoudra probablement l'un de ces problèmes.La saturation des E / S de disque peut également être traitée en déplaçant certains espaces de table vers d'autres disques. Je configure généralement Oracle pour que les E / S soient réparties sur autant de disques que possible.
EDIT: Ce sont quelques cas qui peuvent nécessiter des instances distinctes.
la source
La ressource la plus critique est la RAM.
Chaque instance Oracle en cours d'exécution alloue de la RAM pour sa propre mémoire, lorsqu'elle vient de démarrer et n'est pas sous charge.
Nous utilisons un 10g avec 10 et 11g avec 8 instances, mais ce sont des serveurs de développement. Après le redémarrage du système d'exploitation, certains des services Oracle ne démarrent pas automatiquement et doivent être démarrés manuellement: Oradim -startup -sid xxx.
Nous commençons tout juste à utiliser la gestion automatique de la mémoire, mais la situation reste différente de SQL Server, où vous pouvez ajouter des bases de données autant que l'espace disque le permet.
Dans votre cas, avec plus d'instances sur une machine, le SGA pour chaque instance devient plus petit, moins de sql précompilé peut être mis en cache et la machine doit faire plus de compilation sql, ce qui réduit les performances.
L'ajout de RAM peut vous aider dans votre situation.
la source