Linux平台安装Oracle 19c的时候遇到了下面错误“[INS-35180] Unable to check for available memory”,如图所示:
具体的错误信息如下所示:- 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"
复制代码 其实遇到这个错误的原因有多种,当前这个案例中,明显是因为没有/tmp目录下相关脚本的执行权限。排查下来,发现是因为安全规范设置,系统管理员在rc.local中对/tmp目录进行了限制,如下所示:- # 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
复制代码 在分析介绍具体的命令前,我们先了解一下rc.local文件,其实/etc/rc.local是一个在Linux系统中用于在系统启动时执行特定脚本或命令的文件。这个文件通常在系统启动的早期阶段被执行,它允许管理员定义一些在系统启动过程中需要自动执行的任务。以下是一些 /etc/rc.local 文件可能包含的内容:
- 执行脚本:可以调用其他脚本或程序,以执行特定的系统初始化任务。
- 设置环境变量:在系统启动时设置环境变量。
- 挂载文件系统:在系统启动时挂载特定的文件系统。
- 启动服务:启动一些需要在系统启动时自动运行的服务。
- 配置网络:设置网络接口或执行网络相关的配置。
/etc/rc.local 文件通常在系统启动时由 /etc/rc.d 目录下的脚本调用。需要注意的是,随着系统管理工具和系统初始化方式的演进,/etc/rc.local的使用已经变得越来越少。在一些现代的 Linux 发行版中,/etc/rc.local 可能不再被默认使用,因为系统可能采用了更先进的启动管理系统,如 systemd。
mount -o remount,nodev,nosuid,noexec /tmp 这个命令的具体作用为:
- mount:这是用于挂载文件系统的命令。
- -o remount:这个选项告诉mount命令不要卸载已经挂载的文件系统,而是重新挂载它,并应用新的挂载选项。
- nodev:这个选项防止在/tmp目录下创建设备文件。这有助于防止恶意用户或程序通过设备文件访问系统资源。
- nosuid:这个选项防止/tmp目录下的文件被赋予SUID(Set User ID)或SGID(Set Group ID)权限。SUID和SGID权限允许用户以文件所有者的身份执行文件,这可能会带来安全风险。
- noexec:这个选项防止在/tmp目录下执行任何二进制可执行文件。这有助于防止恶意软件通过/tmp目录执行。
- /tmp:这是要重新挂载的目录的路径。
正是这个条命令,导致Oracle 19c在安装过程中,执行tmp目录下面的shell脚本受限从而导致安装失败报错,如上所示。我们只需运行下面命令重新挂载一下/tmp目录,让其有执行权限即可。安装完成后,在执行下面命令,让其满足符合安全规范- mount -o remount,nodev,nosuid,noexec /tmp
复制代码 扫描上面二维码关注我如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |