1

Я пытаюсь установить 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 выглядит так:

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

2 ответа2

0

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

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

0

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. Существует любое количество веб-страниц, объясняющих, что именно это будет делать, на случай, если у вас возникнут сомнения по поводу работы с распределением общей памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .