Petite astuce pour Oracle et ses problèmes de mémoire sous Linux !

Salut à tous,

 

Et surtout bon début de semaine ! Je vous partage aujourd'hui un petit "truc", rien de bien fou, mais ça peut toujours servir, surtout si vous utilisez oracle !

Bon en réalité ça ne concerne pas tout le monde, mais surtout les personnes qui seraient confronté à ce genre d'erreur :

 

ORA-00845: MEMORY_TARGET not supported on this system
ORA-27102: out of memory
ORA-27101: shared memory realm does not exist tips

 

Bon d'une part quelques petites pistes de réflexion ... qui peut être, en avançant "pas à pas", vous aiderons à résoudre vos différents soucis ;)

 

Etape 1 :

Faites un petit df -h et voyez l'espace alloué à tmpfs :

Filesystem Size Used Avail Use% Mounted on
tmpfs 2,0G 259M 1,8G 13% /dev/shm

Etape 2 :

Controlez depuis votre utilisateur oracle les variables d'env

echo $ORACLE_HOME
echo $ORACLE_SID

Capture

 

ORACLE_HOME, doit être le chemin vers votre Base de donnée, et ORACLE_SID, doit être le nom de celle-ci.

Je vous invite donc à controler que ORACLE_HOME existe déjà bel et bien :

Capture

 

Ensuite nous allons contrôler que la correspondance entre le retour des variables et le fichier /etc/oratab

 

Capture

 

Donc si vous avez été attentif au début, vous devriez trouver la correspondance avec le contenu des variables

$ORACLE_SID : $ORACLE_HOME : Y/N

Si tout est ok au niveau des variables et de la configuration vous êtes bon !!!!

Passons maintenant à l'étape 3 !

 

Etape 3 :

 

On va contrôler l'espace mémoire "partagée" qui est configurée :

avec cette petite commande :

 

 strings  $ORACLE_HOME/dbs/spfileorcl.ora | grep memory

 

/!\ N'allez pas modifier le fichier spfileorcl.ora avec un éditeur de texte !

 

Capture

Ci-dessus le retour de ma commande.
On m'indique ici que ma base de donnée a besoin de 400 Mo d'espace "Mémoire Partagée"

 

Je vous invite dans cette partie de ce "tutoriel" à faire le rapprochement avec l'etape 1.

 

Si la mémoire partagée configurée dans votre base est supérieur à celle configurée sur votre machine, le problème vient de là !

 

Etape 4 :

Une petite étape intermédiaire qui n'est pas à négligé, ici nous allons contrôler les droits d'accès à la mémoire partagé ....

ls -l /dev | grep shm

Capture

En jaune j'ai indiqué les droits sur "shm"

Vous devez donc mettre les droits de votre utilisateur oracle et ceux de son groupe

Capture

Ici notre utilisateur oracle c'est "oracle" et son groupe c'est "oinstall"

Dans mon cas, les droits sont bon.

Si dans le votre, ça n'est pas le ca,  vous devrez mettre les droits à shm de la manière suivante :

chown -R oracle:oinstall /dev/shm

 

Etape 5 :

Ensuite, nous allons modifier le fichier "/etc/fstab"

Vous y rechercherez la ligne qui correspond à tmpfs.
Une fois trouvé, indiquez l'attribut "size" en indiquant une valeur supérieur à memory_target

(Dans le cas ci-dessous, j'avais indiqué 2G => 2 Giga)

Capture

Pour plus de sérénité, ajoutez y l'user id et le groupe id  que vous pouvez récupérer ainsi (si vous avez suivi l'étape 4)

 

stat /dev/shm

 

Capture

 

Illustration de l'ajout du uid et du gid dans le fichier de conf (fstab)

 

Capture

 

Une fois ce fichier mis à jour, il ne vous reste plus qu'a redémarrer votre machine, pour controler que tous les montages se font sans problème (grosso merdo, que vous n'avez rien cassé)

reboot

Etape 6 :

 

Enfin et pour terminer, il ne vous reste plus qu'a redémarrer oracle avec les commandes suivantes (et toujours connecté avec l'utilisateur "oracle" )

sqlplus "/as sysdba"
SQL >> shutdown abort
SQL >> startup

 

Capture

 

 

Conclusion : 

Les erreur de mémoire d'oracle sont souvent dues à :

  • Un problème de droit
  • Un problème de chemin
  • Un problème de taille
Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *