读书笔记
由于Oracle支持将多个Oracle软件(或者多版本的数据库软件)安装到同一台服务器上面,这就需要一个位置统一记录安装的软件信息。中央目录(central inventory)实际上就是一台主机上面安装的Oracle产品的清单,这个清单里面记录了每一个Oracle软件的主目录的名称和位置,安装的组件,以及一些其他的信息。
OUI在安装产品时候会读取中央目录来确定已经安装过的Oracle产品的信息,确保新安装的产品不会和已经存在的产品发生冲突,而且不会覆盖掉原有的产品。另外,Oracle的集群和数据库软件在进行升级的时候,OUI也是通过读取中央目录的信息来确认哪些软件应该被安装。对于10G,11GR1版本的软件,Oracle在进行补丁集(opatch set)升级的时候选择的方式是:在原有的oracle_home上面直接用新的软件覆盖旧的软件,也就是in-place升级方式。而对于11GR2版本,oracle选择创建新的oracle_home来保存新的版本,同时保留旧的版本,也就是所谓的out-of-place升级方式,这样更加有利于回滚到之前的版本。
另外Oracle的软件产品通常比较复杂,包含很多组件,所以需要一个更加清晰细致的清单来记录每一个oracle_home下所安装的产品组件,而本地目录(local inventory)就是这样一个清单,它记录着每个产品所安装的组件,以及每个组件上应用过的补丁程序信息。
- central inventory
Central inventory的位置是通过文件/etc/oraInst.loc(不同平台下可能不同,我的是rhel 6.5)记录的。默认情况下它是保存在<oracle_base>上一层路径oraInventory路径下的。例如:
[root@RAC1 ~]# cat /etc/oraInst.loc
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
上面的信息说明central inventory位于路径/u01/app/oraInventory下,而且拥有者的group是oinstall。Central inventory的核心文件是inventory.xml文件,它位于<inventory_loc>/ContentsXML路径下。以下是一个集群节点的inventory.xml文件实例。
[oracle@RAC1 ContentsXML]$ cat 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>
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/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/db_1" TYPE="O" IDX="2">
<NODE_LIST>
<NODE NAME="rac1"/>
<NODE NAME="rac2"/>
</NODE_LIST>
</HOME>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
以上信息说明:
(1)Inventory版本是11.2.0.4
(2)集群管理软件被安装(CRA=”true”),对应的oracle home名称是Ora11g_gridinfrahome1,路径是/u01/app/11.2.0/grid。
(3)数据库软件被安装,对应的oracle_home名称是OraDb11g_home1,路径是/u01/app/oracle/product/11.2.0/db_1。
(4)集群当中包括两个节点,rac1,rac2,这意味着集群当中三个节点的central inventory位于相同的位置,而且包含相同的信息。
一旦central inventory文件出现了损坏,请不要尝试手动修改,因为这不是oracle建议的方式,使用下面两种方式恢复文件。
- 如果其他节点的inventory.xml没有损坏,可以将其复制到本地节点已覆盖原有的文件。
- 使用.runInstalll工具,这个工具位于<gi_home>/oui/bin路径下面,重建inventory.xml文件。
步骤1:添加Gi home
$./runInstaller -slient -ignoreSysPrereqs -attachHome ORACLE_HOME=’/u01/app/11.2.0/grid’
CLUSTER_HOME_NAME=’Ora11g_gridinfrahome1’ CLUSTER_NODES=rac1,rac2 CRS=true
“INVENTORY_LOCATION=/u01/app/oraInventory” LOACL_NODE=RAC1
步骤2:添加Rdbms home
$./runInstaller -slient -ignoreSysPrereqs -attachHome ORACLE_HOME=’/u01/app/oracle/product/11.2.0/db_1’
ORACLE_HOME_NAME=’OraDb11g_home1’ CLUSTER_NODES=rac1,rac2 CRS=true
“INVENTORY_LOCATION=/u01/app/oraInventory” LOACL_NODE=RAC1
(以上命令只是一个例子,具体情况具体分析)