Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Kann GI 12.1.0.2 nicht kompilieren und Segmentierungsfehler

Also hatte ich in letzter Zeit eine harte Zeit mit Dingen, die ich besser wissen sollte. Wir waren alle schon einmal dort.

Ich versuche, ein 2-Knoten-RAC-Testbed auf meinem Laptop nachzubilden. Dies wird Oracle 12.1.0.2 auf Oracle Linux 6.5 mit VirtualBox 5.0 sein. Sollte ziemlich einfach sein, oder? Ich habe sogar im April dieses Jahres eine Anleitung geschrieben, wie ich das gemacht habe. Ich befolge genau die gleichen Schritte in meinem Dokument auf genau dem gleichen Laptop, aber ich habe immer noch Probleme. Die einzigen zwei Dinge, die sich geändert haben, sind, dass ich direkt zu 12.1.0.2 gehe (mein Dokument war 12.1.0.1, glaube ich) und ich habe jetzt VB 5.0 auf meinem Laptop.

Ich habe meine 2 virtuellen Knoten erstellt und bereit zu gehen. Ich starte die OUI, um mit der Installation der Grid-Infrastruktur zu beginnen. Wenn die OUI in die Verknüpfungsphase gelangt, erhalte ich eine Fehlermeldung.

Fehler beim Aufrufen des Ziels „irman ioracle“ des Makefiles.

Wir alle standen an einem Scheideweg im Leben. Sie haben die Wahl. Gehe ich nach links oder gehe ich nach rechts? Leider bin ich in die falsche Richtung abgebogen und habe ein paar Wochen meiner Freizeit verschwendet. An diesem Punkt musste ich eine Entscheidung treffen. Mache ich genau das, was der Fehler sagt, oder verlasse ich mich auf meine Erfahrung? Ich ignorierte den Fehler blind und verließ mich auf meine Erfahrung. Ich bin dumm.

Noch vor zwei Monaten hatte ich genau den gleichen Fehler, als ich GI 12.1.0.2 nicht dazu bringen konnte, auf einem Testbed zu kompilieren. Dieses Testbed lief auf VMWare ESX-Hosts. Ich habe eine SR beim Oracle Support eingereicht und sie haben mir mitgeteilt, dass mein Kompilierungsproblem darauf zurückzuführen ist, dass ich nicht genügend RAM für jede virtuelle Maschine hatte. Da es sich um eine virtuelle Umgebung handelt, war dies leicht zu beheben. Ich ließ meinen SysAdmin den Arbeitsspeicher aufstocken und den Speicherplatz auf den virtuellen Maschinen auslagern, und GI 12.1.0.2 wurde genau wie versprochen kompiliert. Daher bin ich natürlich davon ausgegangen, dass ich hier auf das gleiche Problem stoße. Auf meinem Laptop habe ich den RAM ständig erhöht. Ich habe den Auslagerungsbereich erweitert. Ich ging sogar so weit, die Knoten von Grund auf neu zu erstellen. Ich habe die letzten zwei Wochen auf dem Weg der Erfahrung verbracht und fand ihn holprig, kratzig, staubig und sehr unangenehm.

Der Weg, den ich hätte gehen sollen, bestand darin, ausdrücklich das zu tun, was das Popup-Fenster sagte ... lesen Sie die Protokolldatei für weitere Details. Als ich schließlich meine Sturheit überwunden hatte, zu glauben, ich wüsste die Antwort, las ich die Protokolldatei. Ich habe gegen Ende die folgenden Nachrichten gefunden.

INFO: - Linking Oracle
INFO: rm -f /u01/app/crs12.1.0.2/rdbms/lib/oracle
INFO: /usr/bin/ld: cannot find -ljavavm12
collect2: ld returned 1 exit status
INFO: make: *** [/u01/app/crs12.1.0.2/rdbms/lib/oracle] Error 1

Nun, es ist jetzt völlig offensichtlich! Eine Bibliotheksdatei fehlt. Ein kurzer Check im Internet führte mich leicht zur Lösung. Ich bin mit diesem Problem nicht allein, aber aus irgendeinem Grund kopiert die OUI libjavavm12.a nicht so nach $GRID_HOME/lib, wie es sein sollte. Während dieses Popup-Fenster immer noch dort sitzt, gebe ich Folgendes auf dem Knoten aus.

[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

Ich ging dann zurück zum Popup-Fenster und drückte die RETRY-Taste. Tatsächlich wurde das verdammte Ding kompiliert und die OUI beendete seine Arbeit.

UPDATE:Ich hatte das gleiche Problem bei der Installation der RDBMS 12.1.0.2-Software auf dem Cluster. Ich habe exakt denselben Fix verwendet, um Oracle dazu zu bringen, auch für die Datenbanksoftware korrekt zu kompilieren.

Aber ich war noch nicht fertig. Wie jeder weiß, der Grid Infrastructure installiert hat, muss er später im Prozess das Skript $GRID_HOME/root.sh auf allen Knoten ausführen. Als ich dies auf dem ersten Knoten versuchte, erhielt ich einen „Segmentierungsfehler“-Fehler. Es stellt sich heraus, dass es ein Problem (und wieder bin ich hier nicht allein) mit Perl in GI 12.1.0.2-Installationen gibt. Sogar Folgendes erhält einen Segmentierungsfehler:

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

Die Lösung besteht darin, Perl in $GRID_HOME neu zu installieren. Ich habe einen Blogeintrag von Laurent Leturgez gefunden, der genau beschreibt, wie das geht. Alleine wäre ich nie darauf gekommen. Nach der Neuinstallation von Perl auf allen meinen Knoten lief das root.sh-Skript einwandfrei.

UPDATE:Ich hatte das gleiche Problem bei der Installation der RDBMS 12.1.0.2-Software auf dem Cluster. Ich habe genau denselben Fix verwendet, um Perl ohne Segmentierungsfehler zum Laufen zu bringen.

Wie wir alle verlasse ich mich auf meine Erfahrung, um viel Zeit zu sparen. Dinge, die ich vor einem Monat oder einem Jahr gelernt habe, werden heute angewendet. Manchmal kommt uns die Erfahrung in die Quere und führt uns auf eine Straße, von der wir wünschten, sie wäre unbefahren geblieben.