使用relink解决国产操作系统上安装11g的问题

来源:这里教程网 时间:2026-03-03 22:08:15 作者:

欧拉操作系统上安装11G单机的问题: ·安装完成软件之后,发现rman和sqlplus功能有问题(还有其他的功能应该也是),查看安装日志发现部分lib下link文件报错。 例如:

INFO: collect2: error: ld returned 1 exit status
INFO: make: *** [/u01/app/oracle/product/db_1/network/lib/ins_net_client.mk:46: tnsping] Error 1
INFO: n/ld: cannot find /usr/lib64/libpthread_nonshared.a
collect2: error: ld returned 1 exit status
INFO: make: *** [/u01/app/oracle/product/db_1/sqlplus/lib/ins_sqlplus.mk:43: /u01/app/oracle/product/db_1/sqlplus/bin/sqlplus] Error 1
/usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a
INFO: collect2: error: ld returned 1 exit status
INFO: make: *** [/u01/app/oracle/product/db_1/rdbms/lib/ins_rdbms.mk:867: /u01/app/oracle/product/db_1/rdbms/lib/rman] Error 1
......

relink一下看看情况:

具体操作步骤如下
1、Verify umask value is set as 022 , in case umask value is
not correct , set umask to 022 ( run command "umask 022" )
2、As Oracle user perform following Command:
$ORACLE_HOME/bin/relink all
3、Check relink log:
$ORACLE_HOME/install/relink.log

查看relink日志,类似如下报错:

collect2: error: ld returned 1 exit status
make: *** [/u01/app/oracle/product/db_1/network/lib/ins_net_client.mk:46: tnsping] Error 1
......

处理步骤,从a依次做到e步骤:

a)Take backup and make changes to sysliblist file(备份sysliblist文件,并将from后的内容替换为to后面的内容)
cd <DB_Oracle_Home>/lib/
cp sysliblist sysliblist.bkp
from
-ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml -laio
to
-ldl -lm -lpthread -l:libnsl.so.1 -lirc -lipgo -lsvml -laio
b) Change the value of NMEHL_OSLIBS and MK_EMAGENT_NMECTL in(同上步骤)
<DB_Oracle_Home>/sysman/lib/env_emagent.mk
from
NMEHL_OSLIBS=$(LDLIBFLAG)pthread$(LIB_SUFFIX) $(LDLIBFLAG)nsl$(LIB_SUFFIX) \
$(LDLIBFLAG)m$(LIB_SUFFIX) $(LDLIBFLAG)dl$(LIB_SUFFIX)
To
NMEHL_OSLIBS=$(LDLIBFLAG)pthread$(LIB_SUFFIX) $(LDLIBFLAG)m$(LIB_SUFFIX) \
$(LDLIBFLAG)dl$(LIB_SUFFIX)
c)(同上步骤,和b修改同一文件)
from
MK_EMAGENT_NMECTL=$(LDCCOM) $(NMECTLMAIN) $(LIBNMECTL_LINK) $(LLIBCLNTSH) \
$(NMEFET_STACKLIBS_LINK) $(USRLIBS) $(LDLIBS)
To
MK_EMAGENT_NMECTL=$(LDCCOM) $(NMECTLMAIN) $(LIBNMECTL_LINK) $(LLIBCLNTSH) \
$(NMEFET_STACKLIBS_LINK) $(USRLIBS) $(LDLIBS) $(LLIBNZ)
d) Incase of if you notice $ORACLE_HOME/rdbms/lib/config.o as 0 bytes
$ cd $ORACLE_HOME/rdbms/lib
$ rm config.o
$ make -f ins_rdbms.mk config.o ioracle 
---该步骤报错/usr/bin/ld: cannot find /usr/lib64/libpthread_nonshared.a,无法找到该文件libpthread_nonshared.a,需要操作系统安装这个package:compat-libpthread_nonshared
安装完该包后,重做d步骤
$ ls -la config.o
e) Re-link oracle binaries
cd $ORACLE_HOME/bin
./relink all

relink完成后,rman和sqlplus等功能已正常,relink日志还剩emagent的报错,这个用不上,问题处理完成

$(MK_EMAGENT_NMECTL)

相关推荐