The "shmmax" value is too large when installing Oracle 11g on RHEL7
Я пытаюсь установить 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
as an example, the code in 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
configuration in 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
И shmmax
configuration value is like this:
Мои вопросы:
(1) The if [ -gt ]
в Bash
only operates on integers? How to operate on 64-bit long integer?
(2) Is it OK to modify shmmax
as the expected value of Oracle
hint?
2 ответа
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. Существует любое количество веб-страниц, объясняющих, что именно это будет делать, на случай, если у вас возникнут сомнения по поводу работы с распределенной памятью.
Та же проблема со мной при установке Oracle XE на RHEL7, значения shmmax и shmall были такими же, как вы показываете. Но у машины только 3G оперативной памяти, при этом огромные значения не нужны. Итак, я изменил параметры на значения меньше, чем это в sysctl.conf, и установка прошла без проблем.
С наилучшими пожеланиями, Режис