【转载】:http://blog.chinaunix.net/uid-28815788-id-5765194.html
1. oraInventory作用
oraInventory是当前操作系统上,Oracle相关软件的安装目录清单。
当安装Oracle软件,如database、grid等时,会先读取oraInventory里的信息,判断当前ORACLE_HOME或GRID_HOME路径,是否已注册到oraInventory中,在软件安装完成时,则会在oraInventory里注册新的软件安装路径信息。
2. oraInventory路径
2.1 Windows
Windows上,oraInventory 的默认存放路径为"C:\Program Files\Oracle\Inventory"。
oraInventory 的存放路径可以通过 central inventory 指针获取到,而 central inventory 指针可以通过注册表键值 “inst_loc” 获取。
该键值可以通过以下步骤获取到:
1. 打开“运行”对话框(或按 Windows 键 + r 键)
2. 输入 "regedit" 并回车
3. 展开 HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
4. 找到键值 "inst_loc"
注意:执行以下命令也可以在 Windows XP,2003 和 Vista 中显示 central inventory 指针。
C:\>reg query HKLM\SOFTWARE\ORACLE /v inst_loc
2.2 Linux
Linux上,oraInventory 的存放路径可以通过 oraInventory 指针获取到,而 oraInventory 指针记载在文件 /etc/oraInst.loc(AIX 和 Linux)或 /var/opt/oracle/oraInst.loc(平台相关)。
如果 oraInst.loc 文件不存在,请创建一个并包含以下内容:
-
inventory_loc=<存放路径>
-
inst_group=<软件的属组>
例如:
inventory_loc=/u01/oracle/oraInventory
inst_group=oinstall
注意:请确保 oracle 软件安装用户在指定的 oraInventory 存放路径中具有适当的权限(755)。
3. oraInventory信息
进入oraInventory路径下的ContentsXML目录,打开inventory.xml文件,可以看到Oracle软件安装路径列表。
4. oraInventory清理
Oracle软件未卸载干净,或oraInventory配置异常,可能会导致安装Oracle database或grid软件,出现安装目录报错,如[INS-30024] 或[INS-40404],此时需要对oraInventory进行清理。
清理方法为,删除或重命名Central inventory目录。
Unix/Linux:
从/etc/oraInst.loc中,找到oraInventory路径,将其删除或重命名。
Windows:
使用reg query HKLM\SOFTWARE\ORACLE /v inst_loc命令,获取oraInventory路径,重命名或删除该路径。
5. oraInventory重建
可以按照以下步骤进行oraInventory重建。
步骤 1:查看和清理oraInventory目录。
步骤 2:切换到 oui 软件的执行文件目录。
使用以下命令切换到 oui 软件的执行文件目录:
(Unix/Linux): % cd $ORACLE_HOME/oui/bin
(Windows): > cd %ORACLE_HOME%\oui\bin
步骤 3:注册 Oracle Home。
运行 runInstaller 带入参数 –attachHome。
(Unix/Linux): % ./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="" ORACLE_HOME_NAME=""
(Windows): > setup.exe -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="" ORACLE_HOME_NAME=""
例如以下Linux路径:
ORACLE_HOME=/u01/app/oracle/product/10.2.0.3
ORACLE_HOME_NAME=OraDb10g_home1
(Unix/Linux): % ./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/u01/app/oracle/product/10.2.0.3" ORACLE_HOME_NAME="OraDb10g_home1"
如果有超过1个以上的Oracle home,你必须对余下的 Oracle home重复执行步骤3,并确保对每一个 ORACLE_HOME 提供唯一的 ORACLE_HOME_NAME。
注意:
-
仅有在 10.2.0.1 和更高版本上支持在 Oracle home 中重建 oraInventory。
-
重建 oraInventory不需要停机时间。
-
重建 oraInventory)的操作日志存放在logs目录下。