root.sh报“Permission denied”常见于被调用的子脚本(如rootadd.sh、setowner.sh)缺失执行权限,需用chmod +x手动授权;若提示“CRS is already configured”,则须先执行rootcrs.pl -deconfig -force清除残留配置。
root.sh报“Permission denied”但文件存在
常见于脚本内部调用的子脚本(如 rootadd.sh、setowner.sh)缺失执行权限,尤其在解压后直接运行或 nfs 挂载目录下容易发生。oracle 安装包解压时可能丢失 x 权限,而 root.sh 又不会主动修复。
- 先确认报错行指向哪个具体脚本,例如日志里出现
/grid/install/unix/rootadd.sh: Permission denied - 手动检查该文件权限:
ls -l /path/to/rootadd.sh,若无x位则立即补上:chmod +x /path/to/rootadd.sh - 别只修一个——批量检查并授权所有被调用的子脚本:
find /u01/app/11.2.0/grid -name "*.sh" -exec ls -l {} \; | grep -v 'x',再针对性加权
root.sh提示“CRS is already configured”或“CSS daemon found active”
本质是集群注册信息残留,多见于重试安装、节点复用或未彻底清理前次失败配置。此时 root.sh 拒绝覆盖已有 CRS 实例,而非环境本身不可用。
- 在失败节点上先强制反配置:
/u01/app/11.2.0/grid/crs/install/rootcrs.pl -verbose -deconfig -force(注意路径要和实际ORACLE_HOME一致) - 如果使用的是 HAS(单节点 GI),则改用:
/u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose - 执行完必须验证 OCR/OLR 是否清空:
ocrcheck -local应返回 “cannot access OCR” 或类似提示,否则残留仍在
RHEL 7+ 上 root.sh 启动 ohasd 失败,报“failed to start ohasd”
根本原因是 Oracle 11g/12c 的 root.sh 默认依赖 init.d 启动 ohasd,但 RHEL 7+ 使用 systemd,导致服务注册失败、进程无法持久化。
- 必须在运行
root.sh前,手动创建 systemd service 文件:/usr/lib/systemd/system/ohas.service - 内容需明确指定启动命令为
/etc/init.d/init.ohasd run,且Type=simple,不能写成forking - 启用服务后务必验证状态:
systemctl status ohas.service—— 必须显示active (running),且PIDFile路径与/etc/oracle/scls_scr/node_name/root/ohasd.pid一致
root.sh卡在“Failed to upgrade Oracle Cluster Registry”或“PRIF-10”
这类错误往往不报具体路径,但根源常在底层存储层:共享磁盘被操作系统启用了 reserve lock,导致多个节点无法并发访问 OCR/Voting Disk。
- 检查磁盘属性:
/usr/sbin/lscfg -vl hdiskX(AIX)或lsscsi -v+sg_inq /dev/sdX(Linux),确认是否为 ESS/EMC/HDS 等企业存储 - 对对应磁盘关闭 reserve:Linux 下常用
chdev -l hdiskX -a reserve_policy=no_reserve(AIX);Linux 则需修改 udev rule 或 multipath conf,禁用features "1 queue_if_no_path"类设置 - 特别注意:该操作需在所有节点同步执行,且重启 multipathd 或 reboot 后才生效,仅改配置不 reload 不起作用
root.sh 失败不是单一原因。日志里看到 cannot restore segment prot after reloc 就得立刻查 SELinux;看到 deconfig before proceeding 却没删干净 OCR,后面怎么重跑都失败。最麻烦的是混合问题——比如 RHEL 7 上既有 systemd 配置缺失,又碰上 SELinux 强制拦截,这时候得一层层剥开看,不能只盯着最后那行报错。


















