今天在安装一套11.2.0.2 RAC数据库时出现了INS-35354的问题:
因为之前已经成功安装了11.2.0.2的GI,而且Cluster的一切状态都正常,出现这错误都少有点意外:
[grid@vrh1 ~]$ crsctl check crs CRS-4638: Oracle High Availability Services is online CRS-4537: Cluster Ready Services is online CRS-4529: Cluster Synchronization Services is online CRS-4533: Event Manager is online
去MOS搜了一圈,发现有可能是oraInventory中的inventory.xml更新不正确导致的:
Applies to: Oracle Server - Enterprise Edition - Version: 11.2.0.1 to 11.2.0.2 - Release: 11.2 to 11.2 Information in this document applies to any platform. Symptoms Installing 11gR2 database software in a Grid Infrastrsucture environment fails with the error INS-35354: The system on which you are attempting to install Oracle RAC is not part of a valid cluster. Grid Infrastructure (Oracle Clusterware) is running on all nodes in the cluster which can be verified with: crsctl check crs Changes This is a new install. Cause As per 11gR2 documentation the error description is: INS-35354: The system on which you are attempting to install Oracle RAC is not part of a valid cluster. Cause: Prior to installing Oracle RAC, you must create a valid cluster. This is done by deploying Grid Infrastructure software, which will allow configuration of Oracle Clusterware and Automatic Storage Management. However, the problem at hand may be that the central inventory is missing the "CRS=true" flag (for the Grid Infrastructure Home). <inventory.xml> ------------- <HOME_LIST> <HOME NAME="Ora11g_gridinfrahome1" LOC="/u01/grid" TYPE="O" IDX="1"> <NODE_LIST> <NODE NAME="node1"/> <NODE NAME="node2"/> </NODE_LIST> ------------- From the inventory.xml, we see that the HOME NAME line is missing the CRS="true" flag. The error INS-35354 will occur when the central inventory entry for the Grid Infrastructure home is missing the flag that identifies it as CRS-type home. Solution Use the -updateNodeList option for the installer command to fix the the inventory. The full syntax is: ./runInstaller -updateNodeList "CLUSTER_NODES={node1,node2}" ORACLE_HOME="" ORACLE_HOME_NAME="" LOCAL_NODE="Node_Name" CRS=[true|false] Execute the command on any node in the cluster. Examples: For a two-node RAC cluster on UNIX: Node1: cd /u01/grid/oui/bin ./runInstaller -updateNodeList "CLUSTER_NODES={node1,node2}" ORACLE_HOME="/u01/crs" ORACLE_HOME_NAME="GI_11201" LOCAL_NODE="node1" CRS=true For a 2-node RAC cluster on Windows: Node 1: cd e:\app.2.0\grid\oui\bin e:\app.2.0\grid\oui\bin\setup -updateNodeList "CLUSTER_NODES={RACNODE1,RACNODE2}" ORACLE_HOME="e:\app.2.0\grid" ORACLE_HOME_NAME="OraCrs11g_home1" LOCAL_NODE="RACNODE1" CRS=true
我环境中的inventory.xml内容如下:
[grid@vrh1 ContentsXML]$ cat inventory.xml <?xml version="1.0" standalone="yes" ?> <!-- Copyright (c) 1999, 2010, Oracle. All rights reserved. --> <!-- Do not modify the contents of this file by hand. --> <INVENTORY> <VERSION_INFO> <SAVED_WITH>11.2.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="Ora11g_gridinfrahome1" LOC="/g01/11.2.0/grid" TYPE="O" IDX="1" > <NODE_LIST> <NODE NAME="vrh1"/> <NODE NAME="vrh2"/> </NODE_LIST> </HOME> </HOME_LIST> </INVENTORY>
显然是在<HOME NAME这里缺少了CRS=”true”的标志,导致OUI安装界面在检测时认为该节点没有安装GI。
解决方案其实很简单只要加入CRS=”true”在重启runInstaller即可,不需要如文档中介绍的那样使用runInstaller -updateNodeList的复杂命令组合。
[grid@vrh1 ContentsXML]$ cat /g01/oraInventory/ContentsXML/inventory.xml <?xml version="1.0" standalone="yes" ?> <!-- Copyright (c) 1999, 2010, Oracle. All rights reserved. --> <!-- Do not modify the contents of this file by hand. --> <INVENTORY> <VERSION_INFO> <SAVED_WITH>11.2.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="Ora11g_gridinfrahome1" LOC="/g01/11.2.0/grid" TYPE="O" IDX="1" CRS="true"> <NODE_LIST> <NODE NAME="vrh1"/> <NODE NAME="vrh2"/> </NODE_LIST> </HOME> </HOME_LIST> </INVENTORY>