linux6.5安装12.2.0.1数据库,DBCA建库时,在设置内存大小界面,图形界面报错: [DBT-08001] Unable to check for available memory. [DBT-08002] Unable to check the value of kernel parameter {0}
这种图形界面安装类的问题基本思路是排查log,log信息不足时使用trace,基本能解决掉大部分图形界面安装时遇到的问题。 本次问题是通过排查DBCA图形界面产生的log文件,发现如下信息: WARNING: Aug 22, 2017 4:13:07 PM oracle.assistants.common.lib.CVUHelper checkKernelParam WARNING: Could not check the kernel parameter shmmax_param for sga size: 40564162560oracle.cluster.verification.VerificationException: PRVF-0002 : could not retrieve local node name
据此log提示的PRVF-0002 : could not retrieve local node name信息,快速检查主机名、/etc/hosts等配置: 可以发现是HOSTNAME与/ETC/HOSTS不符合。
]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=dbserver5
[dbca]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.30.4 dbserver5
修改主机名为dbserver5后,可以正常使用dbca创建数据库。
相关参考:
dbca图形界面异常问题,在检查正常的数据库安装前设置外,常用的方法就是查看安装log或者修改dbca脚本增加更详细的trace级别,分析trace文件等。
oracle 10g dbca日志/trace文件路径是: $ORACLE_HOME/cfgtoollogs/dbca/trace.log oracle
11g/12c dbca日志/trace文件路径是: $ORACLE_BASE/cfgtoollogs/dbca/<DBNAME>/trace.log
具体的trace dbca的方法可以参考MOS文档: Master Note: Troubleshooting Database Configuration Assistant (DBCA) (文档 ID 1510457.1) Tracing the Database Configuration Assistant (DBCA) (文档 ID 188134.1)
关于DBT-08002 and DBT-08001报错,MOS上也有一份针对12.2环境的文档,原因是设置了ORA_CRS_HOME环境变量,当然这种问题基本通过查看dbca日志或者更详细的trace都可以发现问题所在的。 DBCA raises DBT-08002 and DBT-08001 (文档 ID 2261731.1)
本次问题的trace参考:
INFO: Aug 22, 2017 4:13:07 PM oracle.assistants.common.base.util.InitParamCollectionUtil getInitParam
INFO: Could not find the init param (cpu_count) from init params. So creating one.
[pool-1-thread-1] [ 2017-08-22 16:13:07.431 CVT ] [ClusterVerification.getInstance:509] Method Entry
WARNING: Aug 22, 2017 4:13:07 PM oracle.assistants.common.lib.CVUHelper checkAvailableMemory
WARNING: Could not check if the alloted memory 51580 is available oracle.cluster.verification.VerificationException: PRVF-0002 : could not retrieve local node name ===========>>>>>>>>>这里有提示不能获取节点名称
[pool-1-thread-1] [ 2017-08-22 16:13:07.437 CVT ] [ClusterVerification.getInstance:509] Method Entry
WARNING: Aug 22, 2017 4:13:07 PM oracle.assistants.common.lib.CVUHelper checkKernelParam
WARNING: Could not check the kernel parameter shmmax_param for sga size: 40564162560oracle.cluster.verification.VerificationException: PRVF-0002 : could not retrieve local node name
INFO: Aug 22, 2017 4:13:07 PM oracle.assistants.dbca.validator.MemorySizeValidator validate
INFO: Inside MemorySizeValidator
SEVERE: Aug 22, 2017 4:13:07 PM oracle.install.commons.util.exception.AbstractErrorAdvisor getDetailedMessage
SEVERE: [FATAL] [DBT-08001] Unable to check for available memory.
oracle.assistants.common.base.exception.CVUException: [DBT-08001] Unable to check for available memory. =========>>>>>>>>>>对应图形界面的报错信息
at oracle.assistants.common.lib.CVUHelper.checkAvailableMemory(CVUHelper.java:91)
at oracle.assistants.dbca.validator.extsupport.MemoryMgmtCheck.validateAvailableMemory(MemoryMgmtCheck.java:201)
at oracle.assistants.dbca.validator.MemoryMgmtValidator.validate(MemoryMgmtValidator.java:129)
at oracle.assistants.dbca.validator.ConfigurationParamValidator.validate(ConfigurationParamValidator.java:52)
at oracle.install.commons.flow.validation.ValidationHelper.validateState(ValidationHelper.java:194)
at oracle.install.commons.flow.AbstractFlowExecutor.validate(AbstractFlowExecutor.java:429)
at oracle.install.commons.flow.AbstractFlowExecutor.leaveVertex(AbstractFlowExecutor.java:670)
at oracle.install.commons.flow.AbstractFlowExecutor.transition(AbstractFlowExecutor.java:345)
at oracle.install.commons.flow.AbstractFlowExecutor.nextState(AbstractFlowExecutor.java:285)
at oracle.install.commons.flow.AbstractFlowExecutor.nextViewState(AbstractFlowExecutor.java:244)
at oracle.install.commons.flow.DefaultFlowNavigator.goForward(DefaultFlowNavigator.java:58)
at oracle.install.commons.flow.jewt.FlowWizard$1.run(FlowWizard.java:137)
at oracle.install.commons.flow.jewt.FlowWizard$TransitionManager$1.run(FlowWizard.java:113)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
SEVERE: Aug 22, 2017 4:13:07 PM oracle.install.commons.util.exception.AbstractErrorAdvisor getDetailedMessage
SEVERE: [FATAL] [DBT-08002] Unable to check the value of kernel parameter {0}
oracle.assistants.common.base.exception.CVUException: [DBT-08002] Unable to check the value of kernel parameter {0} =========>>>>>>>>>>对应图形界面的报错信息
at oracle.assistants.common.lib.CVUHelper.checkKernelParam(CVUHelper.java:109)
at oracle.assistants.dbca.validator.extsupport.MemoryMgmtCheck.validateSGA(MemoryMgmtCheck.java:176)
at oracle.assistants.dbca.validator.extsupport.MemoryMgmtCheck.validateForASMM(MemoryMgmtCheck.java:244)
at oracle.assistants.dbca.validator.MemoryMgmtValidator.validate(MemoryMgmtValidator.java:142)
at oracle.assistants.dbca.validator.ConfigurationParamValidator.validate(ConfigurationParamValidator.java:52)
at oracle.install.commons.flow.validation.ValidationHelper.validateState(ValidationHelper.java:194)
at oracle.install.commons.flow.AbstractFlowExecutor.validate(AbstractFlowExecutor.java:429)
at oracle.install.commons.flow.AbstractFlowExecutor.leaveVertex(AbstractFlowExecutor.java:670)
at oracle.install.commons.flow.AbstractFlowExecutor.transition(AbstractFlowExecutor.java:345)
at oracle.install.commons.flow.AbstractFlowExecutor.nextState(AbstractFlowExecutor.java:285)
at oracle.install.commons.flow.AbstractFlowExecutor.nextViewState(AbstractFlowExecutor.java:244)
at oracle.install.commons.flow.DefaultFlowNavigator.goForward(DefaultFlowNavigator.java:58)
at oracle.install.commons.flow.jewt.FlowWizard$1.run(FlowWizard.java:137)
at oracle.install.commons.flow.jewt.FlowWizard$TransitionManager$1.run(FlowWizard.java:113)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)