天天看點

RAC Central Inventory

讀書筆記

由于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)就是這樣一個清單,它記錄着每個産品所安裝的元件,以及每個元件上應用過的更新檔程式資訊。

  1. 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建議的方式,使用下面兩種方式恢複檔案。

  1. 如果其他節點的inventory.xml沒有損壞,可以将其複制到本地節點已覆寫原有的檔案。
  2. 使用.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