dbca出错C [libnnz11.so+0x3c3a8]
客户装好了Oracle,安装成功了,但是运行dbca和netca都出现错误。 [oracle@db1 ~]$ netca
Oracle Net Services Configuration: # # An unexpected error has been detected by HotSpot Virtual Machine: # # SIGSEGV (0xb) at pc=0xa44b13a8, pid=2973, tid=3086891216 # # Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode) # Problematic frame: # C [libnnz11.so+0x3c3a8] # # An error report file with more information is saved as hs_err_pid2973.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # /u01/app/oracle/product/11.2.0/dbhome_1/bin/netca: line 178: 2973 Aborted $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*
客户机环境 OS: RHEL AS 4 (32bit) Oracle: Oracle 11g release 2(11.2.0.1)
很明显是JVM导致的问题。
查看hs_err_pid2973.log 里面是JVM的error stack
Stack: [0xbf8b5000,0xbfab5000), sp=0xbfab01d8, free space=2028k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libnnz11.so+0x3c3a8]
[error occurred during error reporting, step 120, id 0xb]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j oracle.ldap.util.discovery.DiscoveryHelper.ldapDiscover(ILjava/util/Hashtable;Ljava/util/HashMap;)I+0 j oracle.ldap.util.discovery.DiscoveryHelper.discover(Ljava/util/HashMap;)I+9 j oracle.net.config.Config.discoverLdapConfig()V+42 j oracle.net.config.Config.(Ljava/lang/String;I[Ljava/lang/String;)V+55 j oracle.sysman.assistants.util.NetworkUtils.(Ljava/lang/String;)V+17 j oracle.sysman.assistants.util.step.StepContext.(Ljava/lang/String;)V+128 j oracle.sysman.assistants.dbca.backend.Host.(Ljava/lang/String;Loracle/sysman/assistants/dbca/backend/CommandLineArguments;)V+2 j oracle.sysman.assistants.dbca.ui.UIHost.(Ljava/lang/String;Loracle/sysman/assistants/dbca/backend/CommandLineArguments;)V+3 j oracle.sysman.assistants.dbca.ui.InteractiveHost.(Ljava/lang/String;Loracle/sysman/assistants/dbca/backend/CommandLineArguments;)V+3 j oracle.sysman.assistants.dbca.Dbca.getHost(Loracle/sysman/assistants/dbca/backend/CommandLineArguments;)Loracle/sysman/assistants/dbca/backend/Host;+56 j oracle.sysman.assistants.dbca.Dbca.execute([Ljava/lang/String;)V+49 j oracle.sysman.assistants.dbca.Dbca.main([Ljava/lang/String;)V+25 v ~StubRoutines::call_stub
没有明确的信息
检查java的路径和版本 [oracle@db1 download]$ java -version java version “1.5.0_17″ Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b02) Java HotSpot(TM) Client VM (build 1.5.0_17-b02, mixed mode) 是正确的,所以并不是java的路径导致的。
在otn和oracle forum里找了一下相关信息,有类似的问题,但是都没有明确的答复 猜测是bug导致的。
在metalink上搜索了一下。
找到类似的问题,确定是bug
[ID 942076.1] X86 DBCA, NETCA GIVE JAVA HOTSPOT ERROR IF ON X86_64 HARDWARE [ID 942076.1] You are encountering published Bug 8930861, “X86 DBCA, NETCA GIVE JAVA HOTSPOT ERROR IF ON X86_64 HARDWARE”
You have Oracle’s 32-bit 11.2.0.1.0 RDBMS software, a supported 32-bit Linux OS, but you are on 64-bit x86_64 hardware.
the command “cat /proc/cpuinfo” shows: model name : Quad-Core AMD Opteron(tm) Processor 2356
Solution 1. Please find out if there is any business reason that the 64-bit hardware is only running a 32-bit OS. If not, then Oracle recommends that you re-install a 64-bit OS and 64-bit Oracle to avoid published Bug 8930861, “X86 DBCA, NETCA GIVE JAVA HOTSPOT ERROR IF ON X86_64 HARDWARE”
2. If there is some business reason that you must use 64-bit hardware running a 32-bit Linux OS, then before you can use the 11gR2 DBCA or NETCA tools, you will need to apply patch 8670579 , “NETCA/DBCA FAILED WITH HOTSPOT VIRTUAL MACHINE”. You will be downloading and using file p8670579_112010_LINUX.zip
客户确实是64bit的机器,但是由于版本限制和其他的一些限制,只能装了32位的系统,从而导致这个问题。
cd到目录8670579,执行命令:
8670579]$ /oracle/app/ora11g2/product/11.2.0/dbhome_1/OPatch/opatch apply
Apply patch p8670579搞定。