Значение shmmax слишком велико при установке Oracle 11g на RHEL7

3218
Nan Xiao

Я пытаюсь установить Oracle Database 11g Release 2на RHEL 7.2. Выполняя runfixup.sh, он выводит:

# /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. 

Взять, shmmaxк примеру, код в runfixup.shследующем:

 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 

Проверьте shmmaxконфигурацию в системе:

# /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 

И shmmaxзначение конфигурации выглядит так:
Значение shmmax слишком велико при установке Oracle 11g на RHEL7

Мои вопросы:
(1) if [ -gt ]в Bashработает только с целыми числами? Как работать с 64-битным длинным целым числом?
(2) Можно ли изменить shmmaxкак ожидаемое значение Oracleподсказки?

1
Вы должны задать этот вопрос на [dba.se] или [unix.se], а не на суперпользователя. лол Evan Carroll 6 лет назад 0

2 ответа на вопрос

0
Erik Bryer

Bash, кажется, работает нормально, на подписанную 64 - битные целые числа. Если вам нужна еще большая надежность, используйте bc, например, для этих 64-битных целых без знака, которые bash не может обработать.

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

Я бы изменил shmmax, как указывает Oracle. Существует любое количество веб-страниц, объясняющих, что именно это будет делать, на случай, если у вас возникнут сомнения по поводу работы с распределением общей памяти.

0
Regis Vaz

Та же проблема со мной при установке Oracle XE на RHEL7, значения shmmax и shmall были такими же, как вы показываете. Но у машины только 3G оперативной памяти, при этом огромные значения не нужны. Итак, я изменил параметры на значения, меньшие, чем это в sysctl.conf, и установка прошла без проблем.

С наилучшими пожеланиями, Режис

Какие именно значения вы установили? bertieb 6 лет назад 1
покажите, какие шаги вы действительно предприняли для решения проблемы! Tim_Stewart 6 лет назад 0

Похожие вопросы