Oracle 11g 安装卡在68%是因ins_ctx.mk编译ctxhx失败且未报错,主因缺少gcc-c++、libstdc++.so.6软链接或glibc-devel/libaio-devel包;查make.log定位,临时方案为创建空ctxhx占位符仅限测试。
为什么 Oracle 11g 安装卡在 68%?
卡在 68% 是典型 ins_ctx.mk 编译失败导致的静默阻塞,安装界面不报错、不弹窗,但后台 make 进程已退出或挂起。根本原因是 oracle 文本(oracle text)组件依赖的 ctxhx 可执行文件编译失败,而安装程序未正确捕获该错误并中断流程。
ins_ctx.mk 报错的常见现象和定位方法
直接看日志比盯进度条有用得多。关键日志路径是:$ORACLE_HOME/install/make.log 或 /tmp/OraInstall[时间戳]/installActions[时间戳].log。搜索以下关键词:
-
ins_ctx.mk—— 确认卡点位置 -
ctxhx—— 实际编译目标 -
ld: cannot find -lctx11或undefined reference to `xx`—— 链接失败 -
gcc: error trying to exec 'cc1plus': execvp: No such file or directory—— 缺 C++ 编译器
必须检查的三个依赖项
Oracle 11g 在 Linux 上编译 ctxhx 时硬依赖三项,缺一不可,且版本有隐性要求:
- 已安装
gcc-c++(不只是gcc):RHEL/CentOS 用yum install gcc-c++;否则cc1plus找不到,make直接静默失败 -
libstdc++.so.6必须可被链接器找到:检查ls -l /usr/lib64/libstdc++.so*,若只有.so.6.xxxx没有软链.so.6,需手动创建:ln -sf libstdc++.so.6.0.13 /usr/lib64/libstdc++.so.6(版本号按实际调整) -
glibc-devel和libaio-devel必须存在:缺少会导致ctxhx编译时找不到基础符号,如__stack_chk_fail
绕过编译失败的临时方案(仅限测试环境)
如果确认环境受限(如无法装 gcc-c++),可跳过 ctxhx 编译,但后果明确:Oracle Text 功能不可用,CTXSYS 用户不会被创建,CREATE INDEX ... INDEXTYPE IS CTXSYS.CONTEXT 会报错。
操作步骤(在安装卡住后):
- 杀掉所有
oracle用户下的make、gcc进程:ps -u oracle | grep -E "(make|gcc)" | awk '{print $1}' | xargs kill -9 - 手动创建空的
ctxhx占位符:touch $ORACLE_HOME/ctx/bin/ctxhx && chmod 755 $ORACLE_HOME/ctx/bin/ctxhx - 回到安装界面点「重试」——此时
ins_ctx.mk因文件已存在而跳过编译
这个操作不修复问题,只是让安装流程“假装成功”。生产环境严禁使用。

















