Table of Contents
Ziel
In diesem Blogeintrag wird das Beheben eines Java Heap Size Fehlers bei der Ausführung des addNode.sh Shell Skriptes unter Oracle 11.2.0.1 erklärt. Mithilfe des addNode Skriptes kann man einen bestehenden Cluster um weitere Knoten erweitern.
Fehlerbeschreibung
Die Ausführung des addNode.sh Skriptes bricht mit der folgenden Meldung ab.
[oracle@rac01-1 bin]$ ./addNode.sh -silent "CLUSTER_NEW_NODES={rac01-3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac01-3-vip}" Oracle Universal Installer wird gestartet... >Swap-Speicher wird geprüft: muss größer sein als 500 MB. Tatsächlich 34175 MB Erfolgreich Oracle Universal Installer, Version 11.2.0.1.0 Production Copyright (C) 1999, 2009, Oracle. All rights reserved. Alle Rechte vorbehalten. Es wird getestet, ob die Knoten rac01-2, rac01-3 verfügbar sind ............................................................... 100% fertig. .SEVERE:Anormale Beendigung des Programms. Es ist ein interner Fehler aufgetreten. Stellen Sie Oracle Support folgende Dateien zur Verfügung: "/u01/app/oraInventory/logs/addNodeActions2010-12-15_02-24-21PM.log" "/u01/app/oraInventory/logs/oraInstall2010-12-15_02-24-21PM.err" "/u01/app/oraInventory/logs/oraInstall2010-12-15_02-24-21PM.out"
Das Fehlerlog zeigt dabei die folgenden Fehler.
[oracle@rac01-1 bin]$ more /u01/app/oraInventory/logs/oraInstall2010-12-15_02-22-00PM.err Exception in thread "Thread-39" Exception java.lang.OutOfMemoryError: Java heap space occurred.. java.lang.OutOfMemoryError: Java heap space at java.nio.ByteBuffer.wrap(ByteBuffer.java:350) at java.nio.ByteBuffer.wrap(ByteBuffer.java:373) at java.lang.StringCoding$CharsetSE.encode(StringCoding.java:339) at java.lang.StringCoding.encode(StringCoding.java:378 at java.lang.String.getBytes(String.java:812) at java.io.UnixFileSystem.setLastModifiedTime(Native Method) at java.io.File.setLastModified(File.java:1227) at oracle.sysman.oii.oiit.OiitLockHeartbeat.touchFile(OiitLockHeartbeat.java:270) at oracle.sysman.oii.oiit.OiitLockHeartbeat.update(OiitLockHeartbeat.java:288) at oracle.sysman.oii.oiit.OiitLockHeartbeat$HeartBeatThread.run(OiitLockHeartbeat.java:136) java.lang.OutOfMemoryError: Java heap space at java.lang.StringCoding.set(StringCoding.java:56) at java.lang.StringCoding.decode(StringCoding.java:226 at java.lang.String.<init>(String.java:405) at java.lang.String.<init>(String.java:433 at java.io.UnixFileSystem.list(Native Method) at java.io.File.list(File.java:937) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.getDiskSpaceOccupied(OiicAddNodeSummaryInformation.java:551) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.getDiskSpaceOccupied(OiicAddNodeSummaryInformation.java:561) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.getDiskSpaceOccupied(OiicAddNodeSummaryInformation.java:561) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.computeSpaceInfo(OiicAddNodeSummaryInformation.java:444) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.initializeAddNodeSession(OiicAddNodeSummaryInformation.java:383) at oracle.sysman.oii.oiic.OiicAddNodeSummaryInformation.<init>(OiicAddNodeSummaryInformation.java:140) at oracle.sysman.oii.oiif.oiifw.OiifwAddNodeSummaryWCDE.writeSummaryInformation(OiifwAddNodeSummaryWCDE.java:212) at oracle.sysman.oii.oiif.oiifw.OiifwAddNodeSummaryWCDE.logDialog(OiifwAddNodeSummaryWCDE.java:204) at oracle.sysman.oii.oiif.oiifb.OiifbWizChainDlgElem.doOperation(OiifbWizChainDlgElem.java:702) at oracle.sysman.oii.oiif.oiifw.OiifwAddNodeSummaryWCDE.doOperation(OiifwAddNodeSummaryWCDE.java:180) at oracle.sysman.oii.oiif.oiifb.OiifbCondIterator.iterate(OiifbCondIterator.java:171) at oracle.sysman.oii.oiic.OiicPullSession.doOperation(OiicPullSession.java:1371) at oracle.sysman.oii.oiic.OiicSessionWrapper.doOperation(OiicSessionWrapper.java:294) at oracle.sysman.oii.oiic.OiicInstaller.run(OiicInstaller.java:579) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:969) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:906)
Das Problem ist der Parameter JRE_MEMORY_OPTIONS in der oraparm.ini Datei. Dieser ist standardmäßig auf 96 MB gesetzt und kann unter Umständen zu dem besagten Java Heap Size Fehler führen.
Lösung
Die Lösung des Problems ist das Heraufsetzen des JRE_MEMORY_OPTIONS Parameters. In der My Oracle Support Note 1085893.1 finden sich weitere Informationen zu diesem Problem.
[oracle@rac01-1 bin]$ vi /u01/11.2.0/grid/oui/oraparm.ini JRE_MEMORY_OPTIONS=" -mx1024m
Das addNode.sh Skript sollte nun ohne Probleme durchlaufen.