上个周五下午终于碰到一个令我想去现场的问题,不过前前后后经过N封信解决了,该问题居然耗费了我半天的时间,值得记录一下。
环境:
OS: AIX6.1
DBMS: oracle11.2.0.2
SDE: 10
问题描述:
执行sdesetup的时候,报了如下的错误:
解决:
从截图上看是无法加载sde的libxerces-c27.a这个静态库,原因是/lib/libicuuc.a中的libicuuc40.1.so动态库无法加载。并且第三行错误提示/lib/libicuuc.a中并没有libicuuc40.1.so
这个动态库。以前碰到的都是无法加载动态库,这次碰到的是无法加载静态库的,还是第一次。
分析原因:
/lib/libicuuc.a中并没有archive 这个libicuuc40.1.so动态库,可能是 AIX6.1系统中/lib/libicuuc.a中archive了一个更新的libicuuc动态库,而编译sde的时候用的是libicuuc40.1.so这个老的动态库。新的操作系统提供新的动态库这是很正常的事情,有些软件在老的动态库开发的,esri肯定一定考虑到这个情况,因此sde的lib目录中应该也包含一个libicuuc.a文件,
让用户截个$SDEHOME/lib所包含文件的截图,如下:
果然SDE的lib目录中已经提供了相应的静态库,那为什么sdesetup非要找/lib目录中的静态库呢,那肯定是.profile搞的鬼了,让BP把.profile发送过来,内容如下:
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.
export PATH
if [ -s "$MAIL" ] # This is at Shell startup. In normal
then echo "$MAILMSG" # operation, the Shell checks
fi # periodically.
SDEHOME=/arcsde/sdeexe100
export SDEHOME
ORACLE_HOME=/oracle/db/11.2.0.2
export ORACLE_HOME
ORACLE_SID=zjgis
export ORACLE_SID
TNS_ADMIN=/oracle/db/11.2.0.2/network/admin
export TNS_ADMIN
PATH=$SDEHOME/bin:$ORACLE_HOME/bin:$PATH:.
export PATH
NLS_LANG=American_America.zhs16gbk
export NLS_LANG
LIBPATH=/lib:/usr/lib:/arcsde/sdeexe100/lib:/oracle/db/11.2.0.2/lib:.
export LIBPATH
发现LIBPATH环境变量把/lib放在第一位了,最后将/lib和/usr/lib目录从LIBPATH删除后搞定。