Linux平台安装Oracle 19c的时候遇到了下面错误“[INS-35180] Unable to check for available memory”,如图所示: 具体的错误信息如下所示: 其实遇到这个错误的原因有多种,当前这个案例中,明显是因为没有/tmp目录下相关脚本的执行权限。排查下来,发现是因为安全规范设置,系统管理员在rc.local中对/tmp目录进行了限制,如下所示: 在分析介绍具体的命令前,我们先了解一下rc.local文件,其实/etc/rc.local是一个在Linux系统中用于在系统启动时执行特定脚本或命令的文件。这个文件通常在系统启动的早期阶段被执行,它允许管理员定义一些在系统启动过程中需要自动执行的任务。
以下是一些 /etc/rc.local 文件可能包含的内容: mount -o remount,nodev,nosuid,noexec /tmp 这个命令的具体作用为: 正是这个条命令,导致Oracle 19c在安装过程中,执行tmp目录下面的shell脚本受限从而导致安装失败报错,如上所示。我们只需运行下面命令重新挂载一下/tmp目录,让其有执行权限即可。 安装完成后,在执行下面命令,让其满足符合安全规范Additional Information:
Exception details - PRVG-1901 : failed to setup CVU remote execution framework directory "/tmp/InstallActions2024-09-20_09-18-46AM/CVU_19.0.0.0.0_oracle/" on nodes "orapreftest"
Please select a different work area for the framework
orapreftest : /bin/sh: /tmp/InstallActions2024-09-20_09-18-46AM/CVU_19.0.0.0.0_oracle//exectask.sh: Permission denied
orapreftest : /bin/sh: /tmp/InstallActions2024-09-20_09-18-46AM/CVU_19.0.0.0.0_oracle//exectask.sh: Permission denied
Version of exectask could not be retrieved from node "orapreftest"# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
mount -o remount,nodev,nosuid,noexec /tmp
mount -o remount,nodev,nosuid,noexec /var
mount -o remount,nodev /home
mount -o remount,nodev,nosuid,noexec /dev/shm
su oracle -lc "/opt/oracle19c/product/19.3.0/db_1/bin/lsnrctl start"
su oracle -lc /opt/oracle19c/product/19.3.0/db_1/bin/dbstart
bash /home/oracle/dba_scripts/db_auto_start.sh 2>>&1 /home/oracle/dba_scripts/logs/db_auto_start.log
# mount -o remount /tmp
mount -o remount,nodev,nosuid,noexec /tmp