客户系统上线前,发现在生产环境的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重新提交所有文档,再重建索引,完成已检入文件的全文索引支持。

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版本。

在虚拟机上安装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)