背景与目的

在 Oracle Real Application Clusters (RAC) 环境中,oraInventory(中央清单)用于记录所有 Oracle 安装信息。当 oraInventory 出现损坏或丢失时,我们可能需要重新构建它,以确保 OUI(Oracle Universal Installer)能正确识别现有的 Oracle Home。本指南将介绍如何安全、完整地重建中央 oraInventory。

步骤概览

步骤 1:确认中央 oraInventory 的位置

  • Linux/Unix: 查看 /etc/oraInst.loc/var/opt/oracle/oraInst.loc

  • Windows: 默认在 %SYSTEMDRIVE%\Program Files\Oracle\Inventory

cat /etc/oraInst.loc

输出示例: 

inventory_loc=/u01/app/oraInventory
inst_group=oinstall

 

步骤 2:查看原始 Inventory 信息

确认 oraInventory 的当前内容,主要看 ContentsXML/inventory.xml 文件,它记录了所有注册过的 Oracle Home 路径与所属节点。

示例: 

$ cat /u01/app/oraInventory/ContentsXML/inventory.xml

输出内容如下: 

<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2011, Oracle.All rights reserved. -->
<!-- Do not modify the contents of this file by hand. -->
<INVENTORY>
  <VERSION_INFO>
    <SAVED_WITH>11.2.0.3.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.3/grid" TYPE="O" IDX="3" CRS="true">
      <NODE_LIST>
        <NODE NAME="cetrain21"/>
        <NODE NAME="cetrain22"/>
      </NODE_LIST>
    </HOME>
    <HOME NAME="OraDb11g_home1" LOC="/u01/app/oracle/product/11.2.0.3/userb" TYPE="O" IDX="4">
      <NODE_LIST>
        <NODE NAME="cetrain21"/>
        <NODE NAME="cetrain22"/>
      </NODE_LIST>
    </HOME>
  </HOME_LIST>
  <COMPOSITEHOME_LIST>
  </COMPOSITEHOME_LIST>
</INVENTORY>

说明:

  • <HOME> 标签标识一个 Oracle Home,包括路径(LOC)、名称(NAME)以及集群节点(NODE_LIST)。

  • TYPE="O" 表示是 Oracle 安装路径,CRS="true" 表示该 Home 是 Clusterware(Grid Infrastructure)。

 

步骤 3:备份中央 oraInventory(每个节点都执行)  

mv /u01/app/oraInventory /u01/app/oraInventory.bak

 步骤 4:定位 OUI 执行程序目录

cd $ORACLE_HOME/oui/bin

 步骤 5:重新注册 Grid Infrastructure

./runInstaller -silent -ignoreSysPrereqs -attachHome \
  ORACLE_HOME="/u01/app/11.2.0.3/grid" \
  ORACLE_HOME_NAME="Ora11g_gridinfrahome1" \
  LOCAL_NODE="cetrain21" \
  CLUSTER_NODES="{cetrain21,cetrain22}" \
  CRS=true

注意:Grid Home 必须加上 CRS=true。 

 

步骤 6:注册数据库 Oracle Home  

./runInstaller -silent -ignoreSysPrereqs -attachHome \
  ORACLE_HOME="/u01/app/oracle/product/11.2.0.3/userb" \
  ORACLE_HOME_NAME="OraDb11g_home1" \
  LOCAL_NODE="cetrain21" \
  CLUSTER_NODES="{cetrain21,cetrain22}"

步骤 7:验证新生成的 oraInventory

  • 对比各节点上的 ContentsXML/inventory.xml

  • 检查 dba_registryopatch lsinventory 输出是否一致

 

注意事项

  1. 仅需在一个节点执行 attach 操作,它会自动同步到其他节点。

  2. 避免多个节点同时 attach,否则可能出现冲突或破坏。

  3. 强烈建议 在操作前备份 oraInventory

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐