Oracle 11g数据库安装报错unexpected error detected by HotSpot Virtual Machine

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:1244

最近一个朋友在Oracle 11gR2数据库在Linux安装时,运行./runInstaller,报错以下错误:

[oracle@rac1 grid]$ ./runInstaller
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 14636 MB Passed
Checking swap space: must be greater than 150 MB. Actual 15998 MB Passed
Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2016-11-22_11-59-34PM. Please wait ...[oracle@rac1 database]$ #
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGSEGV (0xb) at pc=0x0000003f91a14d70, pid=27143, tid=140264133601040
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_51-b10 mixed mode)
# Problematic frame.:
# C [ld-linux-x86-64.so.2+0x14d70]
#
# An error report file with more information is saved as hs_err_pid27143.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp]http://java.sun.com/webapps/bugreport/crash.jsp

其实这是Oracle一个bug,解决方法如下:
解决方法:
在当前用户的环境变量文件
.bash_profile
增加export LD_BIND_NOW=1
重新登录生效。

说明:
 LD_BIND_NOW环境变量能够改变动态连接行为。如果这个环境变量不为空,动态连接器在把控制权交给程序之前会先为程序连接表赋值。也就是说,在进程初始化期间,动态连接器为R_386_JMP_SLOT类型的重定位入口赋值,以便在第一次调用时,不必通过动态连接器就能够跳转到目标地址。反之,如果这个环境变量为空,动态连接器就暂不为程序连接表入口赋值,不对符号进行解析和重定位,直到第一次调用一个程序连接表入口,才对其做相应的处理。这种方式叫作后期连接(lazy binding)方式。
  注意:后期连接(lazy binding)方式一般会大大提高应用程序的性能,因为不必为解析无用的符号浪费动态连接器的开销。不过,有两种情况例外。第一,对一个共享目标函数进行初始化处理花费的时间比调用正式的执行时间长,因为动态连接器会拦截调用以解析符号,而这个函数功能又比较简单;第二,如果发生错误和动态连接器无法解析符号,动态连接器就会终止程序。使用后期连接方式,这种错误可能会在程序执行过程中,随时发生。而有些应用程序对这种不确定性有比较严格的限制。因此,需要关闭后期连接方式,在应用程序接受控制权之前,让动态连接器处理进程初始化期间发生的这些错误。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】