Der Wert "shmmax" ist zu groß, wenn Sie Oracle 11g auf RHEL7 installieren

3322
Nan Xiao

Ich versuche zu installieren Oracle Database 11g Release 2auf RHEL 7.2. Ausführen runfixup.sh, gibt es aus:

# /tmp/CVU_11.2.0.1.0_oracle/runfixup.sh Response file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.response Enable file being used is :/tmp/CVU_11.2.0.1.0_oracle/fixup.enable Log file location: /tmp/CVU_11.2.0.1.0_oracle/orarun.log Setting Kernel Parameters... /tmp/CVU_11.2.0.1.0_oracle/orarun.sh: line 244: [: 18446744073692774399: integer expression expected The value for shmmax in response file is not greater than value of shmmax for current session. Hence not changing it. /tmp/CVU_11.2.0.1.0_oracle/orarun.sh: line 335: [: 18446744073692774399: integer expression expected The value for shmall in response file is not greater than value of shmall for current session. Hence not changing it. The value for semmni in response file is not greater than value of semmni for current session. Hence not changing it. 

Nehmen Sie shmmaxals Beispiel an, der Code runfixup.shlautet wie folgt:

 239 #current value of shmmax - value in /proc/sys/kernel/shmmax 240 cur_shmmax=`/sbin/sysctl -n kernel.shmmax` 241 #remove the extra spaces in the line. 242 cur_shmmax=`echo $cur_shmmax | sed 's/ //g'` 243 echo "shmmax for current session:$cur_shmmax" >> $log_file/orarun.log 244 if [ $SHMMAX -gt $cur_shmmax ] 245 then 246 if ! $SYSCTL_LOC -w kernel.shmmax="$SHMMAX" 247 then 248 echo "$SYSCTL_LOC failed to set shmmax" |tee -a $log_file/orarun.log 249 fi 250 else 251 echo "The value for shmmax in response file is not greater than value of shmmax for current session. Hence not changi ng it." |tee -a $log_file/orarun.log 252 fi 

Überprüfen Sie die shmmaxKonfiguration im System:

# /sbin/sysctl -a | grep shm kernel.shm_next_id = -1 kernel.shm_rmid_forced = 0 kernel.shmall = 18446744073692774399 kernel.shmmax = 18446744073692774399 kernel.shmmni = 4096 vm.hugetlb_shm_group = 0 

Und der shmmaxKonfigurationswert ist wie folgt:
enter image description here

Meine Fragen sind:
(1) Das if [ -gt ]in Bashwirkt nur auf ganze Zahlen? Wie wird mit 64-Bit-Ganzzahl gearbeitet?
(2) Ist es in Ordnung, shmmaxden erwarteten Wert eines OracleHinweises zu ändern ?

1
Sie sollten diese Frage auf [dba.se] oder [unix.se] und nicht auf Superuser stellen. lol Evan Carroll vor 6 Jahren 0

2 Antworten auf die Frage

0
Erik Bryer

Bash scheint ok zu arbeiten auf signierte 64 - Bit - Integer. Wenn Sie noch mehr Robustheit benötigen, verwenden Sie bc, z. B. für diese 64-Bit-Ganzzahlen ohne Vorzeichen, die von bash nicht verarbeitet werden können.

echo "18446744073709551615 * 2" | bc -l 36893488147419103230 echo "18446744073709551615 > 2" | bc -l 1 echo "18446744073709551615 < 2" | bc -l 0 

Ohne Umschweife würde ich shmmax so ändern, wie es Oracle anzeigt. Es gibt eine Reihe von Webseiten, die genau erklären, was dies tun wird, falls Sie zögern, an der Shared Memory-Verteilung zu basteln.

0
Regis Vaz

Das gleiche Problem bei der Installation eines Oracle XE auf RHEL7 waren die Werte von shmmax und shmall die gleichen, die Sie anzeigen. Aber die Maschine hat nur 3G RAM, diese riesigen Werte werden nicht benötigt. Also habe ich die Parameter in sysctl.conf auf niedrigere Werte geändert, und die Installation verlief ohne Probleme.

Viele Grüße, Régis

Auf welche Werte haben Sie diese genau gesetzt? bertieb vor 5 Jahren 1
zeigen Sie, welche Schritte Sie tatsächlich unternommen haben, um das Problem zu lösen! Tim_Stewart vor 5 Jahren 0