Oracle
 sql >> Base de données >  >> RDS >> Oracle

Impossible de compiler GI 12.1.0.2 et erreur de segmentation

J'ai donc eu du mal ces derniers temps sur des choses que je devrais mieux connaître. Nous sommes tous déjà passés par là.

J'essaie de recréer un banc d'essai RAC à 2 nœuds sur mon ordinateur portable. Ce sera Oracle 12.1.0.2 sur Oracle Linux 6.5 avec VirtualBox 5.0. Ça devrait être assez simple, non ? J'ai même écrit des instructions sur la façon dont j'ai fait cela en avril de cette année. Je suis exactement les mêmes étapes dans mon document sur le même ordinateur portable, mais j'ai toujours des problèmes. Les deux seules choses qui ont changé sont que je vais directement à 12.1.0.2 (mon doc était 12.1.0.1 je crois) et j'ai maintenant VB 5.0 sur mon ordinateur portable.

J'ai mes 2 nœuds virtuels créés et prêts à fonctionner. Je lance le OUI pour démarrer mon installation de Grid Infrastructure. Lorsque l'OUI arrive à la phase de liaison, j'obtiens un message d'erreur.

Erreur lors de l'appel de la cible "irman ioracle" du makefile.

Nous avons tous été à un carrefour de la vie. Vous avez un choix à faire. Est-ce que je vais à gauche ou est-ce que je vais à droite ? Malheureusement pour moi, je me suis trompé de direction et j'ai perdu quelques semaines de mon temps libre. À ce stade, j'avais une décision à prendre. Est-ce que je fais exactement ce que dit l'erreur ou est-ce que je me fie à mon expérience ? J'ai aveuglément ignoré l'erreur et me suis fié à mon expérience. Idiot moi.

Il y a à peine deux mois, j'ai eu exactement la même erreur lorsque je n'ai pas réussi à compiler GI 12.1.0.2 sur un banc d'essai. Ce banc d'essai fonctionnait sur des hôtes VMWare ESX. J'ai déposé une SR auprès du support Oracle et ils m'ont fait savoir que mon problème de compilation était dû au fait que je n'avais pas assez de RAM consacrée à chaque machine virtuelle. Étant un environnement virtuel, c'était assez facile à corriger. Mon SysAdmin a augmenté la RAM et l'espace d'échange sur les machines virtuelles et GI 12.1.0.2 a été compilé exactement comme promis. J'ai donc naturellement supposé que je rencontrais le même problème ici. Sur mon ordinateur portable, je n'arrêtais pas d'augmenter la RAM. J'ai élargi l'espace d'échange. Je suis même allé jusqu'à reconstruire les nœuds à partir de zéro. J'ai passé les deux dernières semaines sur la route de l'expérience et je l'ai trouvée cahoteuse, rugueuse, poussiéreuse et très désagréable.

La route que j'aurais dû prendre était de faire explicitement comme le disait la boîte de dialogue… lisez le fichier journal pour plus de détails. Quand j'ai finalement surmonté mon entêtement à penser que je connaissais la réponse, j'ai lu le fichier journal. J'ai trouvé les messages suivants vers la fin.

INFO :- Liaison avec Oracle
INFO :rm -f /u01/app/crs12.1.0.2/rdbms/lib/oracle
INFO :/usr/bin/ld :impossible de trouver -ljavavm12collect2 :ld a renvoyé 1 état de sortie
INFO :make :*** [/u01/app/crs12.1.0.2/rdbms/lib/oracle] Erreur 1

Eh bien, c'est complètement évident maintenant! Un fichier de bibliothèque est manquant. Une vérification rapide sur Internet m'a facilement conduit à la solution. Je ne suis pas seul dans ce problème, mais pour une raison quelconque, l'OUI ne copie pas libjavavm12.a dans $GRID_HOME/lib comme il se doit. Avec cette boîte pop-up toujours là, j'émets ce qui suit sur le nœud.

[oracle@host01 ~]$ export GRID_HOME=/u01/app/crs12.1.0.2[oracle@host01 ~]$ cp $GRID_HOME/javavm/jdk/jdk7/lib/libjavavm12.a $GRID_HOME/lib 

Je suis ensuite retourné à la fenêtre contextuelle et j'ai appuyé sur le bouton RETRY. Effectivement, la fichue chose a été compilée et l'OUI a terminé son travail.

MISE À JOUR :j'ai rencontré le même problème lors de l'installation du logiciel RDBMS 12.1.0.2 sur le cluster. J'ai utilisé exactement le même correctif pour qu'Oracle se compile correctement pour le logiciel de base de données.

Mais je n'avais pas fini. Comme le savent tous ceux qui ont installé Grid Infrastructure, ils doivent exécuter le script $GRID_HOME/root.sh sur tous les nœuds plus tard dans le processus. Lorsque j'ai tenté cela sur le premier nœud, j'ai reçu une erreur « erreur de segmentation ». Il s'avère qu'il y a un problème (et encore une fois, je ne suis pas seul ici) avec perl dans les installations GI 12.1.0.2. Même les éléments suivants recevront une erreur de segmentation :

cd $GRID_HOME/perl/bin
./perl -v

La solution consiste à réinstaller Perl dans $GRID_HOME. J'ai trouvé une entrée de blog de Laurent Leturgez qui décrit exactement comment cela se fait. Je n'aurais jamais compris ça tout seul. Après avoir réinstallé Perl sur tous mes nœuds, le script root.sh a très bien fonctionné.

MISE À JOUR :j'ai rencontré le même problème lors de l'installation du logiciel RDBMS 12.1.0.2 sur le cluster. J'ai utilisé exactement le même correctif pour que perl s'exécute sans erreur de segmentation.

Comme nous tous, je compte sur mon expérience pour me faire gagner beaucoup de temps. Des choses que j'ai apprises il y a un mois ou un an sont appliquées aujourd'hui. Parfois, l'expérience se met en travers de notre chemin et nous emmène sur une route que nous aurions souhaité rester inexplorée.