#!/bin/sh #################################################################### # Oracle PreInstallation Check #03.07.2002 # Diese Version sollte auf Tru64, HP, Solaris, Linux and AIX funktionieren. # Das Skript dient dazu, einen Server durchzuchecken, ob er für die # Installation einer Oracle Datenbank adäquat vorbereitet ist. # Das Skript generiert einer Report namens Oracle_PreInstall_Report # im Ordner /tmp/Oracle_PreInstall_Report # Anleitung:: # 1. Als der Unix User einloggen, der das RDBMS isntallieren soll. # 2. Diese Skript laufen lassen. # 3. Den Report kontrollieren und ggf. dort angegeben Fehler ausbügeln. # 4. Danach sollte die Oracle Software installiert werden können. #################################################################### PLATFORM=`uname -s` REPORT=/tmp/Oracle_InstallPrep_Report if [ $PLATFORM = "HP-UX" -o $PLATFORM = "Linux" ] then USER=`/usr/bin/whoami` else if [ $PLATFORM = "AIX" ] then USER=`/usr/bin/whoami` else USER=`/usr/ucb/whoami` fi fi ################################################################ # KOntrollieren ob der ruchtige Unix User eingeloogt ist # if [ $USER = "root" ] then echo "Sie sind jetzt als $USER eingeloggt" echo "Bitte loggen Sie sich nochmal neu ein, und zwar als derjenige User," echo "der die Datenbank installieren soll (oracle?)" echo "Es darf jedenfalls nicht root sein." echo "Diese Skrip bricht heir ab." exit 1; else echo "Sie sind zur Zeit eingeloogt als $USER. " fi echo "Ist $USER der Linux User, der Oracle installieren soll? j or n " read answer if [ "$answer" != j ] then echo "Sie haben angegeben, als $USER nicht der User zu sein," echo "der Oracle installieren soll." echo "Haben Sie vielleicht ein großes J getippt?"; echo "Das pre_oracle-Skript bricht jetzt jedenfalls ab.\n" echo "Bitte loggen Sie sich als der user ein, der Oracle installieren soll." echo "Lassen Sie das Skript dann nochmals laufen.\n" exit 1; else `touch $REPORT; chmod 777 $REPORT` echo "" >> $REPORT echo " Ausgabe des the Oracle PreInstallation Check Skript. " >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "Um das Oracle DBMS erfolgreich zu installieren, muss jeder Task in diesem" >> $REPORT echo "Skript korrekt abgelaufen sein." >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "Geben Sie jetzt die Gruppe an, die während der Installation benutzt wird." echo " Voreinstellung: oinstall" read GROUP if [ "$GROUP" = "" ] then GROUP=oinstall else echo "Sie haben eingegeben: $GROUP " fi fi ########################################################## # Abschnitt TEMP # # Die $PLATFORM rauskriegen über uname # # Den Platz im verzeichnis /tmp in Kbyte herausfinden # ######################################################### GetTemp () { # Anfang der Funktion GetTemp case $PLATFORM in HP-UX ) TEMP=`df -k /tmp | grep free | awk '{print $NR}'` ;; SunOS ) TEMP=`df -k /tmp | awk '{print $4}' | sed '1d'` ;; AIX ) TEMP=`df -k /tmp | awk '{print $3}' | sed '1d'` ;; OSF1 ) TEMP=`df -k /tmp | awk '{print $4}' | sed '1d'` ;; # Linux ) TEMP=`df -k /tmp | awk '{print $4}' | sed '1d'` ;; *) # Plattform wird hier nicht unterstützt - echo Das Betriebssystem $PLATFORM wird von diesem Skript nicht unterstützt TEMP =-1 # -1 zurückgeben, wenn die Plattform nicht unterstützt wird. esac } # Ende der Funktion GetTempend GetTemp ################################################## # Abschnitt Physikalische RAM-Größe # # Die $PLATFORM rauskriegen über uname # # Ausgabe des PHYSICAL_MEMORY in Kbyte # ################################################## GetPhysicalMemory () { # Anfang der Funktion GetPhysicalMemory in Kbytes PHYSICAL_MEMORY=0 case $PLATFORM in HP-UX ) PHY_TEST=`/usr/sbin/dmesg | grep Physical: | awk '{print $8}'` if [ "$PHY_TEST" -eq "" ] then PHYSICAL_MEMORY=0 else PHYSICAL_MEMORY=$PHY_TEST fi ;; SunOS ) PHYSICAL_MEMORY=`/usr/sbin/prtconf | grep "Memory size" | awk '{print $3}'` PHYSICAL_MEMORY=`expr $PHYSICAL_MEMORY \* 1024` ;; AIX ) PHYSICAL_MEMORY=`/usr/sbin/lsattr -E -l sys0 -a realmem | awk '{print $2}'` ;; OSF1 ) PHYSICAL_MEMORY=`/usr/bin/vmstat -P | grep -i 'Total Physical Memory = ' | awk -F = '{print $NF}'| awk -F. '{print $1}'` PHYSICAL_MEMORY=`expr $PHYSICAL_MEMORY \* 1024` ;; # Linux ) PHYSICAL_MEMORY=` cat /proc/meminfo | grep MemTotal | awk '{print $2}'` ;; *) # Diese Plattform wird nicht unterstützt echo Diese Plattform $PLATFORM wird nicht unterstützt PHYSICAL_MEMORY=-1 # -1 zurückgeben, wenn die Plattform nicht unterstützt wird. esac } # Ende der Funktion GetPhysicalMemory in Kbytes GetPhysicalMemory ################################################## # Abschnitt User und Shell # ################################################## echo "Unix ORACLE_HOME Directory Ueberpruefung" >> $REPORT echo "_______________________________________" >> $REPORT echo "Wohin soll Oracle installiert werden?" echo " Voreingestellt: /opt/oracle/OraHome2" read OH if [ "$OH" = "" ] then OH=/opt/oracle/OraHome2 else : fi if test -z "$OH" then echo "Sie haben kein Verzeichnis abgegeben" echo "ORACLE_HOME wird jetzt eingestellt auf No_Location_Given" OH=No_Location_Given fi if test -d "$OH" then echo "" >> $REPORT echo "Das Verzeichnis $OH exisitiert schon. Seine Inhalte werden während der Installation" >> $REPORT echo "ggf. überschrieben. Es wird empfohlen, diese Inhalte vorher zu sichern/löschen" >> $REPORT echo "Vor der Installation war das !" >> $REPORT if test -w "$OH" then echo "" >> $REPORT echo "Verzeichnis $OH beschreibbar." >> $REPORT OH_SPACE=`df -k $OH | awk '{print $4}' | sed '1d'` if [ $OH_SPACE -lt 2097152000 ] then echo " -- Das Verzeichnis $OH hat nur $OH_SPACE Plattenplatz." >> $REPORT echo " -- Eine typische Installation von 8.1 erfordert mehr als 1.2GB " >> $REPORT echo " -- Eine typische Installation von 9.x erfordert mehr als 2.2Gb " >> $REPORT else echo " -- Der Plattenplatz sollte für eine typische Installation ausreichen." fi else echo "" >> $REPORT echo " -- Bitte ändern Sie den Besitzer von $OH auf $USER" >> $REPORT echo "und geben Sie ihm Schreiberlaubnis in diesem Verzeichnis" >> $REPORT fi else echo "" >> $REPORT echo "Das Verzeichnis $OH existiert noch nicht." >> $REPORT echo "Bitte erstellen Sie es für den Besitzer $USER" >> $REPORT echo "und geben Sie ihm Schreiberlaubnis in diesem Verzeichnis" >> $REPORT fi echo "" >> $REPORT echo "Ihr Betriebssystem ist $PLATFORM" echo "Sammle weitere Informationen... bitte warten! " echo "" >> $REPORT ######################################################### # Kontrolle, ob der Unix User auch in /etc/passwd steht # ######################################################### echo "" >> $REPORT echo "" >> $REPORT echo "Unix User Überprüfung" >> $REPORT echo "______________________" >> $REPORT echo "" >> $REPORT echo echo "Überprüfe den Unix User ..." echo "" >> $REPORT if [ $PLATFORM = "HP-UX" ] then USERCOMMAND=`grep ^$USER: /etc/passwd | awk -F: '{print $1}'` else USERCOMMAND=`grep -w $USER /etc/passwd | awk -F: '{print $1}'` fi if [ "$USER" = "$USERCOMMAND" ] then echo "$USER existiert korrekt in /etc/passwd " >> $REPORT echo "" >> $REPORT echo "User Test erfolgreich! " echo "" >> $REPORT SH=`grep $USER /etc/passwd | awk -F: '{print $NF}' | awk -F/ '{print $NF}'` else echo "Der Unix User $USER existiert nicht in /etc/passwd" >> $REPORT echo " - Sie müssen $USER in der Datei /etc/passwd hinzufügen." >>$REPORT echo " - NIS managed Users zu evrwenden wird nicht empfohlen!" >> $REPORT echo "Unix USER Überprüfung fehlgeschlagen!!" >> $REPORT echo "User-Test fehlgeschlagen!" fi ################################################# # Wie müssen umask und Unix Umgebungsvariablen # # gesetzt sein # # Alle sin den $REPORT schreiben # ################################################# echo echo "Überprüfe UNIX umask ... " echo "" >> $REPORT MASK=`umask` if [ $MASK -eq 022 ] then echo "umask ist korrekt auf $MASK gesetzt." >> $REPORT echo "" >> $REPORT echo "umask-Test erfolgreich! " else echo "umask ist zur zeit gesetzt auf $MASK" >> $REPORT echo "umask muss auf 022 gesetzt sein. " >> $REPORT echo "" >> $REPORT echo "umask-Test fehlgeschlagen!" >> $REPORT echo " " >> $REPORT echo "umask-Test fehlgeschlagen!" echo fi if [ "$SH" = "csh" ] then echo "Die folgende Umgebungsvariablen müssen in der Datei .cshrc" >> $REPORT echo "für den User $USER gesetzt werden:">> $REPORT echo "" >> $REPORT echo "setenv ORACLE_HOME $OH" >> $REPORT echo "setenv LD_LIBRARY_PATH $OH/lib" >> $REPORT echo "setenv PATH $OH/bin:/usr/ccs/bin:\$PATH" >> $REPORT else echo "Die folgende Umgebungsvariablen müssen in der Datei .profile" >>$REPORT echo "für den User $USER gesetzt werden:">> $REPORT echo "" >> $REPORT echo "ORACLE_HOME=$OH" >> $REPORT echo "LD_LIBRARY_PATH=$OH/lib" >> $REPORT echo "PATH=$OH/bin:\$PATH" >> $REPORT echo "export \$ORACLE_HOME" >> $REPORT echo "export \$LD_LIBRARY_PATH" >> $REPORT echo "export \$PATH" >> $REPORT fi if [ "$OH" != No_Location_Given ] then : else echo "\nSie haben keinen Speicherort für die " >>$REPORT echo "Oracle Installation spezifiziert." >> $REPORT echo "Bitte ändern Sie den Wert von No_Location_Given auf den Speicherort für Ihre Oracle-Installation." >> $REPORT fi ###################################################### # Infos über die Gruppe in /etc/group kontrollieren # # Ergebnisse in $REPORT schreiben # ###################################################### echo echo "Überprüfe Unix Gruppe ... " # Überprüfen, ob die angegebene GROUP auch in der Datei /etc/group existiert echo "" >> $REPORT echo "" >> $REPORT echo "Unix Group Überprüfung" >> $REPORT echo "_______________________" >> $REPORT echo "" >> $REPORT if [ $PLATFORM = "HP-UX" ] then GROUPCOMMAND=`grep ^$GROUP: /etc/group | awk -F: '{print $1}'` else GROUPCOMMAND=`grep -w $GROUP /etc/group | awk -F: '{print $1}'` fi if [ "$GROUP" = "$GROUPCOMMAND" ] then echo "$GROUP existiert" >> $REPORT echo "Unix Group Überprüfung erfolgreich!" >> $REPORT echo "Unix-Group-Test erfolgreich!" echo else echo "Die Unix Gruppe $GROUP existiert nicht." >> $REPORT echo "Bitte erstellen Sie als root die Gruppe $GROUP und " >>$$REPORT echo "machen $USER zum Mitgleid dieser Gruppe oder einer anderen Gruppe," >>$REPORT echo "die schon in /etc/group existiert." >> $REPORT echo "" >> $REPORT echo "Unix Group Überprüfung fehlgeschlagen!" >> $REPORT echo "Unix-Group-Test fehlgeschlagen!" echo fi ####################################################################### # Cluster Status ermitteln, falls RAC Option installiert werden soll # # Wenn kein RAC-Installation beabsichtigt ist, # # wir dieser Abschnitt sicherstellen, dass ein Cluster die # # htypische Installation nicht stört. # ####################################################################### GetClusterInfo () { # Anfang der Funktion GetClusterInfo CLUSTER_DETECTED=N CLUSTER_READY=N CLUSTER_WARNING=N echo echo "Suche nach Cluster..." case $PLATFORM in HP-UX ) echo $PLATFORM Cluster-Test if test -f "/usr/sbin/cmviewcl" then CLUSTER_DETECTED=Y clu_status=`/usr/sbin/cmviewcl | sed -n 3p | awk '{print $2}'` if [ $clu_status != up ] then echo echo "Dieser Knoten befindet sich nicht in einem Cluster." echo "Die RAC-Option kann daher nicht installiert werden." else clu_members_up=`/usr/sbin/cmviewcl | sed -n 4,10p | grep up | wc | awk '{print $1}'` echo "Es wurde ein Cluster gefunden." if [ "$clu_members_up" -gt "0" ] then echo "Sie haben ein Cluster, und zur Zeit sind $clu_members_up Cluster Members angemeldet." CLUSTER_READY=Y else CLUSTER_WARNING=Y echo "In Ihrem Cluster gibt es kein Mitglied mit UP Status, "; echo "Die RAC-Option kann nicht installiert werden." echo "Da ein Cluster vollständig oder teilweise gefunden wurde," echo "würde bei einer typischen Installation automatisch die RAC-Option installiert." echo "Da das problematisch sein kann, sollten Sie stattdessen einen Custom Install durchführen!!!" fi fi else echo "" echo "Es wurden keine Cluster ADMIN Dateien gefunden." fi ;; SunOS ) echo $PLATFORM Cluster-Test if test -f "/usr/cluster/bin/scconf" then sun_cluster=3X else if test -f "/opt/SUNWcluster/bin/get_node_status" then sun_cluster=2X else sun_cluster=none fi fi case $sun_cluster in 2X ) sun_cluster_version=2.x echo $sun_cluster_version-Test CLUSTER_DETECTED=Y clu_members=`/opt/SUNWcluster/bin/get_node_status | grep "membership:" | awk '{print $NF + 1}'` clu_members_up=`/opt/SUNWcluster/bin/get_node_status | grep "membership:" | awk '{print $NF + 1}'` echo "Es wurde ein Cluster gefunden" if [ "$clu_members_up" -gt "0" ] then echo "Sie haben $clu_members Cluster Members konfiguriert und $clu_members_up sind zur Zeit angemeldet." CLUSTER_READY=Y else CLUSTER_WARNING=Y echo "In Ihrem Cluster gibt es kein Mitglied mit UP Status, "; echo "Die RAC-Option kann nicht installiert werden." echo "Da ein Cluster vollständig oder teilweise gefunden wurde," echo "würde bei einer typischen Installation automatisch die RAC-Option installiert." echo "Da das problematisch sein kann, sollten Sie stattdessen einen Custom Install durchführen!!!" fi ;; 3X ) sun_cluster_version=3.x echo Es wurde $sun_cluster_version gefunden CLUSTER_DETECTED=Y clu_members=`/usr/cluster/bin/scstat -n | grep "Cluster node:" | wc | awk '{print $1}'` clu_members_up=`/usr/cluster/bin/scstat -n | grep "Online"| wc | awk '{print $1}'` echo "Ein Cluster wurde gefunden" if [ "$clu_members_up" -gt "0" ] then echo "Sie haben $clu_members Cluster Members konfiguriert und $clu_members_up sind zur Zeit angemeldet" CLUSTER_READY=Y else CLUSTER_WARNING=Y echo "In Ihrem Cluster gibt es kein Mitglied mit UP Status, "; echo "Die RAC-Option kann nicht installiert werden." echo "Da ein Cluster vollständig oder teilweise gefunden wurde," echo "würde bei einer typischen Installation automatisch die RAC-Option installiert." echo "Da das problematisch sein kann, sollten Sie stattdessen einen Custom Install durchführen!!!" fi ;; none ) sun_cluster_version=none echo $sun_cluster_version Test ;; *) # Der Cluster-Test unterstützt nur Dateien , die entweder zu einem SunCluster 2.x or 3.x gehören. echo Diese Plattform $sun_cluster wird nicht unterstützt. sun_cluster_version=-1 # -1 zurückgeben, wenn die version nicht in diesem Skript verarbeitet werden konnte esac ;; AIX ) if test -f "/usr/es/sbin/cluster/clstat" then CLUSTER_DETECTED=Y clu_aix=`/usr/es/sbin/cluster/clstat -a << EOF quit EOF` clu_aa=`echo "$clu_aix" | sed 12,33d` echo "$clu_aa " > /tmp/oracle_cluster_test CLUSTER_TEST_ERROR=`cat /tmp/oracle_cluster_test | sed -n 1p | awk '{print $1}'` if [ "$CLUSTER_TEST_ERROR" = "Display" ] then echo echo "Wegen Limitierung der Betriebssystemstools, muss das Fenster, in welchem dieses Skript augeführt wird" echo "mindestens 24 Zeilen hoch und 89 Zeichen (columns) breit sein," echo "um den Cluster-test durchführen zu können.." echo "Bitte vergößern Sie einfach das Fenster und lassen das Skritp erneut laufen, "; echo "um korrekte Cluster-Ergebnisse angezeigt zu bekommen." echo else cluster_status=` cat /tmp/oracle_cluster_test | sed -n 5p | awk -FState: '{print $2}' | awk -FNodes '{print $1}' | /usr/bin/cut -c1-3` echo "Cluster-Test FEHLER: $CLUSTER_TEST_ERROR" if [ $cluster_status != UP ] then echo "Dieser Knoten befindet sich nicht in einem Cluster." echo " Daher kann die RAC-Option nicht installiert werden." else clu_members_up=`cat /tmp/oracle_cluster_test | sed -n 5p | awk -FNodes: '{print $NF}'` echo "Cluster has been detected" if [ "$clu_members_up" -gt "0" ] then echo "Sie haben ein Cluster, und zur Zeit sind $clu_members_up Cluster Members angemeldet." CLUSTER_READY=Y else CLUSTER_WARNING=Y echo "In Ihrem Cluster gibt es kein Mitglied mit UP Status, "; echo "Die RAC-Option kann nicht installiert werden." echo "Da ein Cluster vollständig oder teilweise gefunden wurde," echo "würde bei einer typischen Installation automatisch die RAC-Option installiert." echo "Da das problematisch sein kann, sollten Sie stattdessen einen Custom Install durchführen!!!" fi fi rm /tmp/oracle_cluster_test fi else echo "\n Es wurden keine Cluster Admin Dateien gefunden" fi ;; OSF1 ) if test -f "/usr/sbin/clu_get_info" then clu_status=`/usr/sbin/clu_get_info | wc | awk '{print $1}'` if [ "$clu_status" -eq "0" ] then echo "Dieser Knoten befindet sich nicht in einem Cluster." echo " Daher kann die RAC-Option nicht installiert werden." else clu_members=`/usr/sbin/clu_get_info | grep "Member state" | wc | awk '{print $1}'` clu_members_up=`/usr/sbin/clu_get_info | grep "Member state = UP" | wc | awk '{print $1}'` CLUSTER_DETECTED=Y echo "Cluster has been detected" if [ "$clu_members_up" -gt "0" ] then echo "Sie haben $clu_members Cluster Members konfiguriert und $clu_members_up sind zur Zeit angemeldet" CLUSTER_READY=Y else CLUSTER_WARNING=Y echo "In Ihrem Cluster gibt es kein Mitglied mit UP Status, "; echo "Die RAC-Option kann nicht installiert werden." echo "Da ein Cluster vollständig oder teilweise gefunden wurde," echo "würde bei einer typischen Installation automatisch die RAC-Option installiert." echo "Da das problematisch sein kann, sollten Sie stattdessen einen Custom Install durchführen!!!" fi fi else echo echo "Es wurden keine Cluster Admin Dateien gefunden" fi ;; Linux ) echo echo "Der Cluster Test für die Plattform $PLATFORM ist noch nicht fertig."; ;; *) # Plattform wird nicht unterstützt echo Plattform $PLATFORM wird nicht unterstützt CLUSTER_INFO=-1 # -1 zurückgeben, wenn Plattform nicht unterstützt wird esac } # Ende der Funktion GetClusterInfo ######################################################################### # Größe des Gesamt-SWAP ermitteln und als TOTAL_SWAP in kbytes ausgeben # ######################################################################### GetSwap () { # Anfang der Funktion GetSwap case $PLATFORM in ###### HP-UX ) syslog=/var/adm/syslog/syslog.log total_swap=`cat $syslog | awk -v extswap=0 'BEGIN{ swapflg = 0 # Nötig, um die Durchläufe abbrechen zu können total_swap = 0 # Funktionsvariable für den Swap-Wert } { if (( $6 == "Swap" ) && ( $7 == "device" ) && ( $8 == "table:"; )) { swapflg = 1 # Okay, wir haben einen swap gefunden, also los } if (( $6 == "entry" ) && ( swapflg == 1 )) # Einträge aus dem SYSLOG ermitteln { #printf " swapinfo: entry %d %d \n", $7, $20 total_swap= $20 + total_swap swapflg = 1 } if (( $6 == "Dump" ) && ( $7 == "device" ) && ( $8 == "table:" )) { exit total_swap } } END{ printf "%d", total_swap exit total_swap } ' ` TOTAL_SWAP=` expr $total_swap \/ 2 `;; ##### SunOS) TOTAL_SWAP=`/usr/sbin/swap -l |awk ' BEGIN { total_swap = 0 } { if ( $1 != "swapfile" ) { total_swap = total_swap + $4 } } END { printf "%d",total_swap } ' # Ende awk `;; # Ende der Zuweisung des Blocks für TOTAL_SWAP ##### AIX) TOTAL_SWAP=` lsps -a |awk 'BEGIN { total_swap = 0 } { if ( $1 != "Page" ) { total_swap = total_swap + $4 } } END { printf "%d",total_swap * 1024 } ' # Ende awk `;; # Ende der Zuweisung des Blocks für TOTAL_SWAP ##### OSF1) TOTAL_SWAP=`/usr/sbin/swapon -s | tail -4 |awk 'BEGIN { total_swap = 0 swapflg = 0 recnum = 0 } { if ( $1 == "Allocated" ) { string_length=length($5) nchar = string_length - 2 uncalculated = substr($5,2,nchar) } } END { ############################################ # Hier etwas Rechenkram, um das Format des # # Total Swap ausrechnen zu können # ############################################ string_legnth = length(uncalculated) seek_nchar = string_length - 3 postfix = substr(uncalculated, seek_nchar, 2) if ( postfix == "GB" ) { swap_total = uncalculated * 1048576 } else { swap_total = uncalculated * 1024 } printf "%d", swap_total } ' # Ende awk `;; # Ende der Zuweisung des Blocks für TOTAL_SWAP ##### Linux) TOTAL_SWAP=`/usr/bin/free -k | awk ' { if ( $1 == "Swap:" ) { printf "%d",$2 } } ' `;; *) # Plattform wird nicht unterstützt echo Plattform $PLATFORM wird nicht unterstützt TOTAL_SWAP=-1 # -1 zurückgeben, wenn Plattform nicht unterstützt wird esac # end if [ $PLATFORM ] } # Ende der Funktion GetSwap ################## TOTAL_SWAP=0 GetSwap if [ $TOTAL_SWAP -gt -1 ] then : #echo Der Gesamt-Swap-Platz beträgt $TOTAL_SWAP kbytes. fi ############################################################### # Ist genug Swap-Platz da (hängt vom physikalischen RAM ab)? # # Benutzt die Variablen PHYSICAL_MEMORY von GetPyhsicalMeomry # # und TOTAL_SWAP from GetSwap. # # Schreibt in $REPORT, ob die Größe ausreichend ist # ############################################################### echo echo "Checking Memory & Swap... " TWOxMem=`expr $PHYSICAL_MEMORY \* 2` PhyMemLower=1120 PhyMemMid=3264 echo "" >> $REPORT echo "" >> $REPORT echo "Speicherüberprüfung" >> $REPORT echo "___________________" >> $REPORT echo "" >> $REPORT if [ $PHYSICAL_MEMORY -eq 0 ] then echo echo "Kann keine Angaben zum physikalische Speicher auf dieser Maschine ermitteln. Setze Wert auf 0." echo "Variable PHYSICAL MEMORY wird während der Ausführung dieses Skripts auf 0 gesetzt." echo echo "Wegen Einschränkungen durch das Betriebssystem kann die Größe des physikalischen SpeIchers nicht ermittelt werden." >> $REPORT echo "Variable PHYSICAL MEMORY wird während der Ausführung dieses Skripts auf 0 gesetzt." >> $REPORT echo fi echo "Physical Memory = $PHYSICAL_MEMORY Kb" >> $REPORT echo "Swap space = $TOTAL_SWAP Kb" >> $REPORT echo "" >> $REPORT if [ $PHYSICAL_MEMORY -lt $PhyMemLower ] then echo "You have $PHYSICAL_MEMORY Kb of memory. " >> $REPORT echo "This is NOT enough to install Oracle. You must have atleast $PhyMemLower Kb" >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "Memory Check Failed" >> $REPORT echo "Memory test Failed" echo else if [ $PHYSICAL_MEMORY > $PhyMemLower -lt $PhyMemMid ] then if [ $TOTAL_SWAP -lt $TWOxMem ] then echo "You must increase your swap space to atleast $TWOxMem " >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "Memory Check Failed" >> $REPORT echo "Memory test Failed" echo else echo "You have adequate Swap of $TOTAL_SWAP for your Physical Memory of $PHYSICAL_MEMORY " >> $REPORT echo "" >> $REPORT echo "Memory & Swap Check is Successful" >> $REPORT echo "Memory test passed " echo fi else if [ $PHYSICAL_MEMORY -ge $PhyMemMid ] then if [ $TOTAL_SWAP -lt $PHYSICAL_MEMORY ] then echo "You must increase your swap space to atleast $PHYSICAL_MEMORY " >> $REPORT echo "" >> $REPORT echo "Memory Check Failed" >> $REPORT echo "Memory test Failed" echo else echo "You have adequate Swap of $TOTAL_SWAP for your Physical Memory of $PHYSICAL_MEMORY " >> $REPORT echo "" >> $REPORT echo "" >> $REPORT echo "Memory & Swap Check is Successful" >> $REPORT echo "Memory test passed" echo fi else echo "script broken, download it again" fi fi fi ####################################### # Abschnitt Report über TEMP SPACE # ####################################### GetTemp if [ $TEMP -gt -1 ] then echo "" >> $REPORT echo "" >> $REPORT echo "Überprüfung des TMP Space" >> $REPORT echo "___________________" >> $REPORT echo "" >> $REPORT if [ $TEMP -lt 204800 ] then echo "" >> $REPORT echo "Sie müssen Ihren Platz für /tmp space auf mindestens 20000 Kb vergößern." >> $REPORT echo "" >> $REPORT echo "/tmp -Test gescheitert!" >> $REPORT echo "tmp -Test gescheitert! " echo else echo "Sie haben ausreichend Platz in /tmp: $TEMP Kbytes" >> $REPORT echo "" >> $REPORT echo "tmp -Test erfolgreich! " echo fi else : fi ###################################### # Abschnitt Report GetClusterInfo # ###################################### CLUSTER_INFO=0 GetClusterInfo if [ $CLUSTER_INFO -gt -1 ] then echo "" >> $REPORT echo "Überprüfung für Real Application Cluster Option" >> $REPORT echo "_______________________________" >> $REPORT echo "" >> $REPORT if [ $CLUSTER_DETECTED = Y ] then echo "Es wurde ein Cluster gefunden" >> $REPORT if [ $CLUSTER_READY = Y ] then echo "Das Cluster scheint in Ordnung zu sein und die RAC-Option wird installiert, " >> $REPORT echo "wenn ein Typical Install gewählt wird." >> $REPORT else echo "Das Cluster ist anscheinend down. Das kann bei der Installation Probleme verursachen" >> $REPORT echo "Bitte fahren Sie Ihr Cluster hoch, bevor Sie Oracle installieren "; >> $REPORT echo "oder führen Sie ein Custom Install durch." >> $REPORT fi else echo "Es wurde kein Cluster gefunden. Die RAC-Option wird nicht installiert." >> $REPORT echo "Cluster-Test erfolgreich" >> $REPORT fi if [ $CLUSTER_WARNING = Y ] then echo "Es wurde ein unvollständiges Cluster gefunden, welches mit der RAC-Option Probleme machen könnte." >>$REPORT echo "Daher wird dringend empfohlen, RAC zu deselektieren und ein Custom Install durchzuführen," >> $REPORT echo "um Probleme zu vermeiden." >> $REPORT else echo "Kein Cluster-Warnungen ermittelt." fi fi ####################################################################################### # KERNEL PARAMETER des System ermitteln # # Alle Kernel Parameter, die nicht benötigt werden, bleiben unverändert (NA). # # Alle veränderten Parameter werden im Report unter $REPORT notiert. # # Wenn Sie Kernel Parameter hinzufügen müssen, dann geben Sie sie bitte erst oben an # # mit dem Wert NA, dann benutzen Sie den Wert unten bei der entsprchenden Plattform # # und fügen am Ende ein if-Statement hinzu, um den Wert überprüfen zu lassen. # ####################################################################################### echo "Bearbeite Kernel Parameter... Bitte warten" GetKernelParam () { # Anfang der Funktion GetKernelParam KERNEL_PARAMETERS=0 SHMMAX=NA SHMMNI=NA SHMMIN=NA SHMSEG=NA SEMMNI=NA SEMMSL=NA SEMMNS=NA SHMMIN_Req=1 SHMMNI_Req=0 SHMSEG_Req=2 per_proc_data_size=NA max_per_proc_data_size=NA max_per_proc_address_space=NA per_proc_address_space=NA echo "" >> $REPORT echo "" >> $REPORT echo "Überprüfung des Unix Kernels" >> $REPORT echo "________________________" >> $REPORT echo "" >> $REPORT echo "Überprüfe erforderliche Kernel Parameter auf die benötigten Mindestwerte" >> $REPORT echo "" >> $REPORT echo "Im folgenden wird mitgeteilt, ob ein Kernel Parameter erhöht werden muss." >> $REPORT echo "" >>$REPORT echo "Bitte beachten: Änderungen am Unix Kernel müssen als root durchgeführt werden." >> $REPORT echo "Es muss ein System Reboot durchgeführt werden, damit die Änderungen im Kernel wirksam werden." >> $REPORT echo "" >> $REPORT case $PLATFORM in HP-UX ) KERNEL_TEST="" SHMMAX_Req=`expr 1073741824 / 1014` SEMMNI_Req 0 SEMMNS_Req 00 SHMSEG_Req SHMMNI_Req 0 if test -r "/stand/system" then SHMMAX=`/usr/bin/grep -i shmmax /stand/system | awk '{print $2}'` SHMMAX=`echo ${SHMMAX} | cut -d X -f 2` SHMMAX=`bc << EOF ibase $SHMMAX quit EOF` SHMMAX=`bc << EOF $SHMMAX / 1014 quit EOF` SHMMNI_ORIG="`/usr/bin/grep -i shmmni /stand/system | awk '{print $2}' | sed 2,10d`" SHMMNI_TEST="`/usr/bin/grep -i shmmni /stand/system | awk '{print $2}' |sed 2,10d | /bin/cut -c 1`" if [ \ $KERNEL_TEST = \ $SHMMNI_TEST ] then SHMMNI=0 echo "" echo " Der Kernel Parameter SHMMNI muss mit der Formel $SHMMNI_ORIG berechnet werden." echo " Dieses Skript kann das NICHT für Sie tun." echo " Sie müssen von Hand nachrechnen und sicherstellen, dass er größer als $SHMMNI_Req ist." echo "" else SHMMNI=`/usr/bin/grep -i shmmni /stand/system | awk '{print $NF}'` if test -z "$SHMMNI" then SHMMNI=0 fi fi SHMSEG_ORIG="`/usr/bin/grep -i shmseg /stand/system | awk '{print $2}' | sed 2,10d`" SHMSEG_TEST="`/usr/bin/grep -i shmseg /stand/system | awk '{print $2}' |sed 2,10d | /bin/cut -c 1`" if [ \ $KERNEL_TEST = \ $SHMSEG_TEST ] then SHMSEG=0 echo "" echo " Der Kernel Parameter SHMSEG muss mit der Formel $SHMSEG_ORIG berechnet werden." echo " Dieses Skript kann das NICHT für Sie tun." echo " Sie müssen von Hand nachrechnen und sicherstellen, dass er größer als $SHMSEG_Req ist." echo "" else SHMSEG=`/usr/bin/grep -i shmseg /stand/system | awk '{print $NF}'` if test -z "$SHMSEG" then SHMSEG=0 fi fi SEMMNI_ORIG="`/usr/bin/grep -i semmni /stand/system | awk '{print $2}' | sed 2,10d`" SEMMNI_TEST="`/usr/bin/grep -i semmni /stand/system | awk '{print $2}' | sed 2,10d | /bin/cut -c 1`" if [ \ $KERNEL_TEST = \ $SEMMNI_TEST ] then SEMMNI=0 echo "" echo " Der Kernel Parameter SEMMNI muss mit der Formel $SEMMNI_ORIG berechnet werden. " echo " Dieses Skript kann das NICHT für Sie tun." echo " Sie müssen von Hand nachrechnen und sicherstellen, dass er größer als $SEMMNI_Req ist." echo "" else SEMMNI=`/usr/bin/grep -i semmni /stand/system | awk '{print $NF}'` if test -z "$SEMMNI" then SEMMNI=0 fi fi SEMMNS_ORIG="`/usr/bin/grep -i semmns /stand/system | awk '{print $2}' |sed 2,10d`" SEMMNS_TEST="`/usr/bin/grep -i semmns /stand/system | awk '{print $2}' |sed 2,10d | /bin/cut -c 1`" if [ \ $KERNEL_TEST = \ $SEMMNS_TEST ] then SEMMNS=0 echo "" echo " Der Kernel Parameter SEMMNS muss mit der Formel $SEMMNS_ORIG berechnet werden. " echo " Dieses Skript kann das NICHT für Sie tun." echo " Sie müssen von Hand nachrechnen und sicherstellen, dass er größer als $SEMMNS_Req ist." echo "" else SEMMNS=`/usr/bin/grep -i semmns /stand/system | awk '{print $NF}'` if test -z "$SEMMNS" then SEMMNS=0 fi fi else echo "" >> $REPORT echo "Kann Kernel Parameter wegen Einschränkungen durch Betriebsystem nicht ptüfen."; echo "Datei: /etc/stand" echo "Entweder Sie ändern die Berechtigungen von /etc/stand/system, um allen Usern Leseerlaubnís zu geben," echo "oder sie müssen die Kernel Parameter von Hand korrekt setzten, wie in der Installations-Anleitung beschrieben. "; fi ;; SunOS ) SHMMAX_ReqB94967295 SEMMNI_Req 0 SEMMSL_Req 0 SEMMNS_Req 00 SHMMAX=`/etc/sysdef | grep SHMMAX | awk '{print $1}'` SHMMIN=`/etc/sysdef | grep SHMMIN | awk '{print $1}'` SHMMNI=`/etc/sysdef | grep SHMMNI | awk '{print $1}'` SHMSEG=`/etc/sysdef | grep SHMSEG | awk '{print $1}'` SEMMNI=`/etc/sysdef | grep SEMMNI | awk '{print $1}'` SEMMSL=`/etc/sysdef | grep SEMMSL | awk '{print $1}'` SEMMNS=`/etc/sysdef | grep SEMMNS | awk '{print $1}'` ;; AIX ) echo Bei der Plattform $PLATFORM müssen keine spezifischen Kernel Parameter gesetzt werden. ;; OSF1 ) MEMBYTE 73741824 SHMMAX_Req!39095040 SHMMAX=`/sbin/sysconfig -q ipc | grep 'shm[_-]max' | awk '{print $NF}'` SHMMIN=`/sbin/sysconfig -q ipc | grep 'shm[_-]min' | awk '{print $NF}'` SHMMNI=`/sbin/sysconfig -q ipc | grep 'shm[_-]mni' | awk '{print $NF}'` SHMSEG=`/sbin/sysconfig -q ipc | grep 'shm[_-]seg' | awk '{print $NF}'` per_proc_data_size=`/sbin/sysconfig -q proc | grep '^per[_-]proc[_-]data[_-]size' | awk '{print $NF}'` max_per_proc_data_size=`/sbin/sysconfig -q proc | grep '^max[_-]per[_-]proc[_-]data[_-]size' | awk '{print $NF}'` max_per_proc_address_space=`/sbin/sysconfig -q proc | grep '^max[_-]per[_-]proc[_-]address[_-]space' | awk '{print $NF}'` per_proc_address_space=`/sbin/sysconfig -q proc | grep '^per[_-]proc[_-]address[_-]space' | awk '{print $NF}'` per_proc_stack_size=`/sbin/sysconfig -q proc | grep '^per[_-]proc[_-]stack[_-]size' | awk '{print $NF}'` max_per_proc_stack_size=`/sbin/sysconfig -q proc | grep '^max[_-]per[_-]proc[_-]stack[_-]size' | awk '{print $NF}'` for perproc in per_proc_data_size max_per_proc_data_size max_per_proc_address_space per_proc_address_space do if [ $perproc -lt $MEMBYTE ] then echo "Bitte erhöhen Sie den Kernel Parameter $perproc auf mindestens $MEMBYTE bytes" >> $REPORT else echo "Parameter $perproc ist korrekt gesetzt." >> $REPORT fi done ;; # Linux ) echo Test für die Plattform $PLATFORM ;; *) #wird nicht unterstützt echo Plattform $PLATFORM wird nicht unterstützt KERNEL_PARAMETERS=-1 # -1 zurückgeben, wenn Plattform nicht unterstützt wird esac } # Ende der Funktion GetKernelParam GetKernelParam if [ $KERNEL_PARAMETERS -gt -1 ] then echo "" >> $REPORT echo " Kernel Parameter Report läuft ..." # Prüfen, ob die Kernel Parameter für alle Plattformen für eine typische Installation korrekt gesetzt sind. if [ $SHMMAX = NA ] then : else if [ $SHMMAX -lt $SHMMAX_Req ] then echo "Bitte Kernel Parameter SHMMAX auf mindestens $SHMMAX_Req setzen!" >> $REPORT else echo "SHMMAX ist korrekt" >> $REPORT fi fi if [ $SHMMIN = NA ] then : else if [ $SHMMIN -eq $SHMMIN_Req ] then echo "SHMMIN ist korrekt" >> $REPORT else echo "Bitte Kernel Parameter SHMMIN auf mindestens $SHMMIN_Req setzen!" >> $REPORT fi fi if [ $SHMMNI = NA ] then : else if [ $SHMMNI_Req -gt $SHMMNI ] then echo "Bitte Kernel Parameter SHMMNI auf mindestens $SHMMNI_Req setzen!" >> $REPORT else echo "SHMMNI ist korrekt" >> $REPORT fi fi if [ $SHMSEG = NA ] then : else if [ $SHMSEG_Req -gt $SHMSEG ] then echo "Bitte Kernel Parameter SHMSEG auf mindestens $SHMSEG_Req setzen!" >> $REPORT else echo "SHMSEG ist korrekt" >> $REPORT fi fi if [ $SEMMNI = NA ] then : else if [ $SEMMNI_Req -gt $SEMMNI ] then echo "Bitte Kernel Parameter SEMMNI auf mindestens $SEMMNI_Req setzen!" >> $REPORT else echo "SEMMNI ist korrekt" >> $REPORT fi fi if [ $SEMMSL = NA ] then : else if [ $SEMMSL_Req -gt $SEMMSL ] then echo "Bitte Kernel Parameter SEMMSL auf mindestens $SEMMSL_Req setzen!" >> $REPORT else echo "SEMMSL ist korrekt" >> $REPORT fi fi if [ $SEMMNS = NA ] then : else if [ $SEMMNS_Req -gt $SEMMNS ] then echo "Bitte Kernel Parameter SEMMNS auf mindestens $SEMMNS_Req setzen!" >> $REPORT else echo "SEMMNS ist korrekt" >> $REPORT fi fi echo "" >> $REPORT echo "Bitte beachten: Kernel Parameter, die mit Hilfe einer Formel berechnet und gesetzt werden," >> $REPORT echo "können von diesem Skript nicht geprüft werden und werden auf den Wert 0 gesetzt." >> $REPORT fi echo "Bitte UNBEDINGT den Report lesen und die Ausgabe der Kernel Parameter Prüfung kontrollieren!!" ################################ # Im Report auf die Notwendigkeit einer GUI für Installationen seit Version 815 hinweisen # echo "" >> $REPORT echo "" >> $REPORT echo "Bitte beachten:" >> $REPORT echo "-----" >> $REPORT echo "" >> $REPORT echo "Seit der Oracle Version 8.1.x, muss die Oracle-Installation in einer" >> $REPORT echo "X-Window-Umgebung durchgeführt werden. Eine character-based Installation ist nicht mehr möglich," >> $REPORT echo "und zwar egal ob Sie einem normalen oder eine Silent Install machen wollen." >> $REPORT echo "Sie müssen also die Kommados aus einem Fenster ausführen, das ein X-Window " >> $REPORT echo "starten und laufen lassen kann. Andernfalls wird einfach beim Star des runInstaller " >> $REPORT echo "das X-Fenster nicht angezeigt und Ihre Installation wird nicht starten." >> $REPORT echo echo "Um dies vorab zu testen, setzen Sie Ihre DISPLAY-Umgebungsvariable auf Ihren X-Server: " >> $REPORT echo "" >> $REPORT echo "Für bash, sh oder ksh: DISPLAY=YourClientIPaddress:0.0; export DISPLAY " >> $REPORT echo "für csh: setenv DISPLAY YourClientIPaddress:0.0" >> $REPORT echo "" >> $REPORT echo "Dann starten Sie xclock, um zu sehen, ob ein X-Fenster für die Uhr aufgeht." >> $REPORT echo "Wenn das funktioniert, können Sie den runInstaller starten." >> $REPORT ############################### rm -f ./261120 echo "Skript ist fertig." echo echo "Report $REPORT wurde erzeugt." echo echo "Bitte lesen Sie unbedingt diesen Report und kümmern sich um alle dort aufgeführten Fehler"