SELinux必须永久禁用(设为disabled并重启)才能解决Oracle安装失败问题,仅临时禁用或设为Permissive仍会导致静默安装卡顿、权限拒绝及内存相关错误。
SELinux导致Oracle安装失败的典型现象
静默安装卡在runinstaller阶段、监听器lsnrctl start报permission denied、数据库实例无法挂载(ora-27102: out of memory但实际内存充足),这些大概率是selinux在拦截文件访问或内存映射。centos 7默认启用enforcing模式,而oracle 11gr2未适配其策略规则,硬扛只会反复报错。
/etc/selinux/config 修改必须生效才有效
只改配置文件不等于关闭SELinux——它只是设置“下次重启后生效”。常见错误是改完就跑runInstaller,结果还是被拦。必须确认当前运行态也已关闭:
- 临时关闭(立即生效,但重启后恢复):
setenforce 0 - 永久关闭(需重启):编辑
/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled - 验证是否真正关闭:
getenforce命令输出必须是Disabled,不是Permissive
Permissive模式仍会记录拒绝日志(/var/log/audit/audit.log里有大量avc: denied),Oracle某些组件(如oracleasm)会因策略缺失直接退出,不能替代Disabled。
修改后不重启的隐藏风险
即使执行了setenforce 0,部分内核模块(如selinuxfs)仍驻留内存,Oracle安装脚本可能读取/sys/fs/selinux/enforce判断状态,导致误判。更稳妥的做法是:
- 改完
/etc/selinux/config后,必须执行reboot - 重启后第一时间验证:
getenforce输出Disabled且ls /sys/fs/selinux报No such file or directory - 不要依赖
systemctl disable selinux——该服务根本不存在,SELinux是内核机制,不是systemd服务
为什么不用Permissive模式凑合
有人试图用Permissive绕过重启,但Oracle 11gR2的root.sh脚本会检查/proc/self/attr/current,发现SELinux未完全禁用时主动中止。另外,Permissive下libaio的内存页锁定(mlock)仍被策略限制,引发ORA-27123错误。真正的“关闭”只有disabled一种路径。


















