CentOS上安装oracle11g报错处理

​ 最近,在处理oracle gateway的报错问题。只因个人的测试环境已经迁移到docker上了,又懒得装一套环境就直接在机器上安装oracle11g。今天分享的故事就从此开始……

运行环境

项目 描述
操作系统 CentOS Linux release 7.6.1810 x86_64
内存 2G
硬盘大小 30G
CPU Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
虚拟机软件 Oracle VM VirtualBox 6.0.2
Oracle RDBMS Oracle 11gR2 for Linux x86_64

问题描述

​ 由于只是做个测试,选择了安装最简单的单机版,不安装GI。根据以往的经验,执行命令安装系统补丁。但在安装进度在84%,出现类似于下图的报错(因为当时无保留截图,只能在网上找张类似的):

1553842399376

​ 根据以往的经验告诉我,出现这样的问题,肯定是操作系统补丁包缺失导致的。检查了一番,发现需要都操作系统补丁都已经安装上了。

INFO: mv -f /u01/app/oracle/product/11.2.0/dbhome_1/bin/ctxlc /u01/app/oracle/product/11.2.0/dbhome_1/bin/ctxlcO

INFO: mv ctxlc /u01/app/oracle/product/11.2.0/dbhome_1/bin/ctxlc

INFO: chmod 751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/ctxlc

INFO: gcc -o ctxhx -m64 -L/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/stubs/  /u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ctxhx
.o -L/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ -lm -lsc_fa -lsc_ex -lsc_da -lsc_ca -lz  -lctxhx -Wl,-rpath,/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -ln
ls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11  `c
INFO: at /u01/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist`

INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status

INFO: make: *** [ctxhx] Error 1

INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'install' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/oracle/app/oraInventory/logs/installActions2019-03-24_05-39-13AM.log' for details.
Exception Severity: 1
INFO: Linking Text executables
INFO: Linking Text executables
INFO: The output of this make operation is also available at: '/u01/app/oracle/product/11.2.0/dbhome_1/install/make.log'
INFO:

​ 但之前已经再三确认过补丁包已经安装完成,故在my oracle support上查找并没有找到相关的内容。最后寻求度娘的帮助,结果找到了一遍相关的case,说是glibc版本过高导致的,高于2.14。

# yum list glibc
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
glibc.x86_64                                                                                          2.17-260.0.15.el7_6.3                                                                                           @ol7_latest
Available Packages
glibc.i686                                                                                            2.17-260.0.15.el7_6.3                                                                                           ol7_latest

​ 跟着文档的内容进行修改相关文件ins_ctx.mk点击Retry继续安装。在同样的进度位置出现报错ins_emagent.mk文件的报错,然后修改文件ins_emagent.mk内容再点击Retry继续安装即可完成安装。

解决方案

​ 以下是文件ins_ctx.mk和ins_emagent.mk需修改的相关内容:

修改文件/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk

......
ctxhx: $(CTXHXOBJ)
        $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
......

修改为

......
ctxhx: $(CTXHXOBJ)
        -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
......

修改文件/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk

......
#===========================
#  emdctl
#===========================

$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL)
......

修改为

......
#===========================
#  emdctl
#===========================

$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL) -lnnz11
......

附录

操作系统补丁安装命令

yum -y  install gcc* libaio* glibc* compat-* elfutils* glibc* libgcc* libstdc++* unixODBC* pdksh* ksh*
yum -y install libaio*.i686 glibc*.i686 compat-*.i686 elfutils*.i686 glibc*.i686 libgcc*.i686 libstdc++*.i686 unixODBC*.i686 pdksh*.i686 *ksh*.i686

参考文档

《2017-11-17 DBA日记,CENTOS 7装ORACLE 11g时报ins_ctx.mk错》

原文地址:https://www.cnblogs.com/nolanchan/p/10621628.html