前几天有朋友问在DBCA的时候有没有碰到如下类似的错误:
$ dbca /u01/app/oracle/jre/1.1.8/bin/../lib/i686/native_threads/libzip.so: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so) Unable to initialize threads: cannot find class java/lang/Thread Could not create Java VM
我已记不清安装oracle多少次了,但记忆中好像没有遇到过,难道是我运气太好每次都设对了LD_ASSUME_KERNEL参数,做技术的不仅要知其然,而且还要知其所以然,故在metalink上一顿疯狂search,可以参考下面的文档。
Doc ID:243979.1 Doc ID:377217.1 Note:443475.1
这些文档适用于linux 2.4的内核,下面来看看关于LD_ASSUME_KERNEL变量的解释:
Kernel 2.4 comes with a i686 optimized glibc package. The optimized glibc package contains two versions of the libc itself, one with and one without “floating stack” support. Which one an application picks up depends on the setting of the environment variable LD_ASSUME_KERNEL. If this is set to “2.2.5″ the application will use the lib without “floating stack”. Some older java versions do not work correctly if the glibc “floating stack” is used. As a result, “universal installer” and some utilities as “database configuration assistant” will not work if the glibc “floating stack” is activated. On Sues SLES8 for Oracle to scale well, this variable must be set. With a glibc with “floating stack” support Oracle scales significantly worse (number of users) than without (several thousand vs. less than 1000 users in tests).