合 Oracle中央目录文件inventory.xml缺失CRS配置导致rac安装db软件时找不到节点
现象
1、静默安装不报错,但是也不执行,会直接跳出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ./runInstaller -silent -force -noconfig -ignorePrereq \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oraInventory \ ORACLE_BASE=/u01/app/oracle \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSOPER_GROUP=oper \ oracle.install.db.OSBACKUPDBA_GROUP=dba \ oracle.install.db.OSDGDBA_GROUP=dba \ oracle.install.db.OSKMDBA_GROUP=dba \ oracle.install.db.OSRACDBA_GROUP=dba \ oracle.install.db.CLUSTER_NODES=rac1,rac2 \ oracle.install.db.config.starterdb.type=GENERAL_PURPOSE |
2、界面不能显示rac的节点,如下:
解决
这个问题是由于中央目录文件/u01/app/oraInventory/ContentsXML/inventory.xml
缺失CRS="true"
导致的。
所以解决办法是手动修改该文件,类似:
1 | <HOME NAME="Ora11g_gridinfrahome1" LOC="/u01/app/11.2.0.4/grid" TYPE="O" IDX="1" CRS="true"> |
也可以通过命令生成文件:
1 2 3 4 5 6 7 8 9 10 11 12 | oraInventory目录的位置是由oraInst.loc文件决定的: AIX和Linux平台:/etc/oraInst.loc /oracle/app/oraInventory/ContentsXML/inventory.xml oracle执行:$ORACLE_HOME/oui/bin/attachHome.sh 步骤1:添加GI_HOME: ./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/11.2.0/grid" ORACLE_HOME_NAME="OraGI11Home1" CLUSTER_NODES=test1,test2 CRS=true "INVENTORY_LOCATION=/u01/app/oraInventory" LOCAL_NODE=test1 步骤2:添加RDBMS_HOME: $./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/u02/app/oracle/product/11.2.0/db_1" ORACLE_HOME_NAME="OraDB11Home1" CLUSTER_NODES=test1,test2 CRS=true "INVENTORY_LOCATION=/u01/app/oraInventory" LOCAL_NODE=test1 |
如果该文件内容不完整,也会导致rac环境不能创建rac库的诡异问题。
inventory.xml文件内容 模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | [root@oracle-01 ~]# more /u01/app/oraInventory/ContentsXML/inventory.xml <?xml version="1.0" standalone="yes" ?> <!-- Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. --> <!-- Do not modify the contents of this file by hand. --> <INVENTORY> <VERSION_INFO> <SAVED_WITH>12.1.0.2.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="OraGI12Home1" LOC="/u01/app/12.1.0.2/grid" TYPE="O" IDX="1" CRS="true"> <NODE_LIST> <NODE NAME="oracle-01"/> <NODE NAME="oracle-02"/> </NODE_LIST> </HOME> <HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12.1.0.2/dbhome_1" TYPE="O" IDX="2"> <NODE_LIST> <NODE NAME="oracle-01"/> <NODE NAME="oracle-02"/> </NODE_LIST> </HOME> </HOME_LIST> <COMPOSITEHOME_LIST> </COMPOSITEHOME_LIST> </INVENTORY> [root@rac1 ~]# more /u01/app/oraInventory/ContentsXML/inventory.xml <?xml version="1.0" standalone="yes" ?> <!-- Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. --> <!-- Do not modify the contents of this file by hand. --> <INVENTORY> <VERSION_INFO> <SAVED_WITH>11.2.0.4.0</SAVED_WITH> <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER> </VERSION_INFO> <HOME_LIST> <HOME NAME="Ora11g_gridinfrahome1" LOC="/u01/app/11.2.0.4/grid" TYPE="O" IDX="1" CRS="true"> <NODE_LIST> <NODE NAME="rac1"/> <NODE NAME="rac2"/> </NODE_LIST> </HOME> <HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0.4/dbhome_1" TYPE="O" IDX="2"> <NODE_LIST> <NODE NAME="rac1"/> <NODE NAME="rac2"/> </NODE_LIST> </HOME> </HOME_LIST> <COMPOSITEHOME_LIST> </COMPOSITEHOME_LIST> </INVENTORY> |
中央目录的作用
由于Oracle支持将多个Oracle软件(或者多版本的数据库软件)安装到同一台服务器上,这就需要一个位置统一记录安装的软件信息。中央目录(Central Inventory)实际上就是一台主机上安装的Oracle产品清单。在这个清单里记录了每一个Oracle软件主目录的名称和位置、安装的组件,以及一些其他的信息。OUI在安装产品时会读取中央目录来确认已经安装过的产品信息,确保新安装的产品不会和已存在的产品冲突,而且不会覆盖掉原有的产品。另外,Oracle的集群和数据库软件在进行升级时,OUI也是通过读取中央目录中的信息来确认哪些软件应被安装的。中央目录(Central Inventory)所有的Oracle软件安装都依赖于该目录,所以,要确保该目录已经备份,删除或丢失oraInventory目录的内容,都有可能导致安装或升级报错。另外,Oracle的软件产品通常比较复杂,包含很多组件,所以还需要一个更加细致的清单来记录每一个oracle_home下所安装的产品组件。而本地目录(Local Inventory)就是这样一个清单,它记录了每个产品所安装的组件,以及每个组件上应用过的补丁程序信息。
oraInventory目录的位置是由oraInst.loc文件决定的:
AIX和Linux平台:/etc/oraInst.loc
Solaris和HP-UX平台:/var/opt/oracle/OraInst.loc
Windows平台:HKEY_LOCAL_MACHINE/Software/Oracle/inst.loc
默认情况下它保存在$ORACLE_BASE上一层路径的oraInventory路径下,例如:
1 2 3 | [oracle@orcltest ~]$ more /etc/oraInst.loc inventory_loc=/u01/app/oraInventory inst_group= oinstall |
一旦中央目录文件出现了损坏,请尝试使用以下的两种方式恢复该文件:
方式1:如果其他节点的inventory.xml没有损坏,可以将其复制到本地节点以覆盖原有文件。
方式2:使用$GRID_HOME/oui/bin/runInstaller工具重建inventory.xml文件。例如: