64位OEL 6.1下UCM 11g OracleTextSearch的Text Conversion错误

客户系统上线前,发现在生产环境的Oracle Enterprise Linux 6.1上的UCM 11gR5打开文件时,一直显示索引错误,信息“Text conversion of  the file …… failed. Content has been indexed with Info only. Resubmit should only be performed if the problem has been resolved.”如下图所示:

打开indexer的trace,点击重新提交后,得到以下信息,初步判断是因为textexport找不到必要的库文件导致。

>indexer/7 01.13 14:10:03.450   index update work InputFilePath is:   indexer/7  01.13 14:10:03.450   index update work OutputFilePath is: >indexer/7    01.13 14:10:03.450   index update work Sending document to conversion >(internal)/7  01.13 14:10:03.496  TextExport #7531#8FDB#7A0B ‘TextExport’ #610F#5916#4E2D#6B62#3002 intradoc.common.ServiceException: !csErrorReturnedByProcess,TextExport!$/u01/app/oracle/Middleware/Oracle_ECM1/ucm/idc/components/ContentAccess-linux/linux/lib/contentaccess/textexport: error while loading shared libraries: libz.  (internal)/7   01.13 14:10:03.496   TextExport         at intradoc.taskmanager.TaskLauncher.launchExe(TaskLauncher.java:381)  (internal)/7  01.13 14:10:03.496  TextExport         at intradoc.taskmanager.TaskMonitor$1.run(TaskMonitor.java:116)  (internal)/7  01.13 14:10:03.496   TextExport         at java.lang.Thread.run(Thread.java:662)

没有仔细看trace信息内容,开始在网上和oracle support网站找text conversion相关的信息,相关的解决方案主要是确认textexport的执行权限或者是设置LD_LIBRARY_PATH和ContentAccessExtraLibDir(在intradoc.cfg文件)几种方式,但是试过这几种方式都不奏效,如此试了几次,也只好放弃。

再一次回到正常分析的路子上来,从trace信息中可以看出是找到到共享库libz.,尝试在/usr/lib和/usr/lib64找libz.so,有64位的文件,但是没有32位的文件。难道象很多程序一样,UCM也是用32位的libz.so来执行text conversion的命令,google了一把,发现libz.so是zlib包里,用yum install zlib.i686实现相关包的安装,确认libz.so存在于相关的文件夹下,重新启动Content Server,再点击重新提交,问题解决。

Repository Manager重新提交所有文档,再重建索引,完成已检入文件的全文索引支持。

在OEL 6.1安装并设置jRockit

1.下载Oracle OTN下载最新的jRockit安装包;
2. 运行“chmod +x jrockit-jdk1.6.0_29-R28.2.0-4.1.0-linux-x64.bin”,使安装文件有执行权限;
3.执行安装,“./jrockit-jdk1.6.0_29-R28.2.0-4.1.0-linux-x64.bin”,一路Next,选择安装路径为“/usr/lib/jvm/jrockit-jdk1.6.0_29”,完成安装。
4.使用alternatives配置使用的JDK;

  alternatives –install /usr/bin/java java /usr/lib/jvm/jrockit-jdk1.6.0_29/bin/java 1000
 alternatives –display java (看当前使用何版本JDK)
 alternatives –config java  (选择JDK)

java -version看当前使用的java版本。

解决OEL6.1上安装Oracle数据库11gR2的“Error in invoking target ‘mkldflags ntcontab.o nnfge.o’ of makefile”错误

在虚拟机上安装Oracle数据库11gR2,当运行到“Link binaries”环节时出现“Error in invoking target ‘mkldflags ntcontab.o nnfge.o’ of makefile”错误,折腾了老半天,发现是缺少gcc运行库引起。

安装时按照Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6 一文介绍的步骤进行,但死活都出错。到Metalink查答案,确认是gcc运行环境引起的,只好一个个包对过去。发现在是文章中是以着安装“rpm -Uvh gcc-4*x86_64*”,而系统上的包名应该是“gcc.x86_64 0:4.4.5-6.el6”,安装该包后重试,安装程序正常运行。

教训:如果出错,运行“gcc –version ”,会显示当前的gcc版本信息,运行“rpm -qa –queryformat “%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n” | grep glibc-devel
”结果显示如下:

glibc-devel-2.12-1.25.el6 (x86_64)
glibc-devel-2.12-1.25.el6 (i686)