记录Oracle11.2.0.1安装在Centos7上遇到的报错

记录Oracle11.2.0.1安装在Centos7上遇到的报错

客户联系我要安装一个一模一样的数据库环境,给了安装包后,在实际安装过程中遇到了问题,特记录下来,以备后人参考。因为一般直接安装Oracle11.2.0.4并不会遇到这个问题。需要仔细注意辨别一下版本。

1、semmi总是报错不符合预期值,这个错误可以跳过

centos7安装EasyDarwin Centos7安装报错_centos7安装EasyDarwin

实际过程中是试过了一下方法,还是报错,可以选择忽略。
法1.system -p试了很多次,还是如此。
法2.echo 250 32000 100 128 > /proc/sys/kernel/sem

2、遇到了这块难啃得硬骨头ins_ctx.mk,如下图

centos7安装EasyDarwin Centos7安装报错_jar_02


在百度上找了很多方法都不能解决,最后使用google老外的方法,成功解决。记录方法如下。

在执行时报错时,使用root用户新建如下脚本

# Fix ctx/lib/ins_ctx.mk
ORACLE_SRC_INSTALL_DIR=/media/sf_uxora_share/database
cd ${ORACLE_SRC_INSTALL_DIR}/stage/Components
jar_file=
for i_file in $( ls ./oracle.ctx/11.2.0.1.0/1/DataFiles/filegroup*.jar ); do
unzip -l ${i_file} ctx/lib/ins_ctx.mk 2>&1 1>/dev/null
[[ $? -eq 0 ]] && jar_file=${i_file} && break
done
cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h>
asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
}
__EOF__
unzip ${jar_file} ctx/lib/ins_ctx.mk 2>&1 1>/dev/null
if [[ $? -eq 0 ]]; then
sed -i -e 's/\$(INSO_LINK)/\$(INSO_LINK) -Wl,--wrap=memcpy_wrap \$(ORACLE_HOME)\/ctx\/lib\/memcpy_wrap.o/g' ctx/lib/ins_ctx.mk
gcc -c /tmp/memcpy_wrap.c -o ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
jar -uvf  ${jar_file} ctx/lib/ins_ctx.mk ctx/lib/memcpy_wrap.o
fi

这里着重提醒要把上面脚本中的路劲修改成自己安装时放置Oracle 11.2.0.1.0安装包的路劲,不然执行时脚本会报错。ORACLE_SRC_INSTALL_DIR=/media/sf_uxora_share/database ---->替换 成自己实际环境中软件所在的位置

脚本执行成功如下图

centos7安装EasyDarwin Centos7安装报错_oracle_03


顺利跳过报错附原版老外解决方案,如下图

centos7安装EasyDarwin Centos7安装报错_oracle_04

3、常规报错 Error in invoking target ‘agent nmhs’ of makefile

这个报错在11.2.0.4中也会遇到,特此记录复习

centos7安装EasyDarwin Centos7安装报错_centos7安装EasyDarwin_05

方法:

在makefile中添加链接libnnz11库的参数修改

$$ORACLE_HOME/sysman/lib/ins_emagent.mk,


$(MK_EMAGENT_NMECTL)修改为:

$(MK_EMAGENT_NMECTL) -lnnz11 ---->建议修改前备份原始文件

[oracle@XXX ~]$ cd $ORACLE_HOME/sysman/lib
 [oracle@XXX ~]$ cp ins_emagent.mk ins_emagent.mk.bak
 [oracle@XXX ~]$ vi ins_emagent.mk


进入vi编辑器后
命令模式输入/NMECTL 进行查找,
快速定位要修改的行在后面追加参数-lnnz11
第一个是小写L字母的l 后面两个是数字1保存退出后Retry

顺利完成安装

在安装过程中会遇到各种各样的报错,记得保持耐心,坚持正确的思路,总会有雨过天晴。
在此也特别感谢网上各位前辈们的记录,收益很多,所以自己以后有遇到技术难题还是会记下来,分享给更多的人。