J'ai une machine puissante avec 70 Go de RAM. Combien d'instances Oracle avec 20 Go peuvent être créées?

9

J'ai une machine puissante avec 70 Go de RAM. J'ai créé une instance Oracle avec 20 Go en tant que sga_target. Je ne suis pas en mesure de créer une autre instance Oracle avec sga_target > 10Gmême lorsque je garde la première base de données hors service. Si je le configure, sga_target >=10Gil donne une erreur ci-dessous au démarrage:

ORA-27104: les limites définies par le système pour la mémoire partagée ont été mal configurées

Bien free -mque cela montre qu'il y a suffisamment de mémoire disponible:

             total       used       free     shared    buffers     cached
Mem:         72419      34490      37928          0        618      28159
-/+ buffers/cache:       5711      66707
Swap:         2047          0       2047

Dois-je augmenter l'espace de swap? Tout pointeur à cet égard est très apprécié.

Pour la mémoire de 70 Go également, pour créer de nombreuses instances, quelle serait la meilleure valeur pour l'espace d'échange - existe-t-il un moyen de calculer cela? Mon objectif est d'avoir au moins deux instances avec chacune sga_target=20Get de ne conserver qu'une seule instance à la fois. Si je manque un concept ici?

La sortie de ipcs -imest comme ci-dessous

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
user419534
la source

Réponses:

13

Vos paramètres de noyau doivent être modifiés.

Modifiez /etc/sysctl.confet assurez-vous que les lignes suivantes sont présentes:

kernel.shmall = 18350080
kernel.shmmax = 75161927680
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

Redémarrez ensuite la machine.

Philᵀᴹ
la source
Merci ça marche. Pourriez-vous s'il vous plaît me faire savoir comment pourriez-vous décider de ces valeurs pour shmall, shmax et shmni etc. Existe-t-il un moyen de les calculer?
user419534
3
shmmax est la taille maximale en octets d'un seul segment de mémoire partagée, vous avez 70 Go de RAM, j'ai donc utilisé 70 * 1024 * 1024 * 1024. shmall est la somme maximale de tous les segments de mémoire partagée qui peuvent exister à la fois et est mesurée en pages. La taille de la page sous Linux est généralement de 4k, j'ai donc divisé le nombre shmmax par 4096.
Philᵀᴹ
0

La définition de la valeur shmmax dépend du fait que le système d'exploitation soit 32 bits ou 64 bits. Il y a une note metalink qui explique cela en détail.

Valeurs SHMMAX maximales pour Linux x86 et x86-64 [ID 567506.1]

Jetez un coup d'oeil s'il vous plait.

Il y a aussi une note sur la mémoire partagée / sémaphores pour Oracle qui devrait être une lecture intéressante.

TECH: Explication des sémaphores Unix et de la mémoire partagée [ID 15566.1]

Cordialement, Nagendra Chillale

Nagendra Chillale
la source