深入理解Oracle Universal Installer (OUI) Text

文档介绍了Oracle Universal Installer (OUI)的一些细节只是,PPT Slideshare版地址在这里:https://www.askmac.cn/archives/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3oracle-universal-installer-oui.html , 这里share一下Text版本的。

 

OUI是什么?

  • 基于Java的图形用户界面(GUI)应用程序
  • 会从products.xml文件中读取组件信息并安装套件
  • OUI提供了统一的用户安装界面
  • 使用OUI的先题条件:
    • 使用OUI需要用到Java运行时环境即Java Runtime Environment (JRE),在绝大多数平台上该JRE会由OUI自动安装(少数如itanium Linux平台需要另外安装)
    • 内存需求:基于不同平台及所安装的Oracle产品而不同,在绝大多数情况下至少需要32MB以上的空闲内存
    • 磁盘空间需求:在Windows上至少需要60MB空间而在Unix平台上则为70MB才能启动OUI,此外库信息文件(inventory files)大约占用1MB空间

 

OUI能做什么?

  • 其核心功能无疑是安装各类Oracle产品或组件
  • 反安装组建或产品
  • 维护基于XML的产品信息仓库(inventory)
  • 为安装执行必要的安装前检查
  • 当需要时额外调用配置助手(如Netca,DBCA,DBUA等)
  • 从oracle 11g开始,OCM也就是Oracle Configuration Manager也同样被综合到OUI的框架中
  • 信息库操作,包括附件节点列表

 

OUI具有那些阶段?

  • 启动阶段
    • 开始对用户可见,载入必要的文件并显示一个欢迎界面
  • 安装阶段
    • 用户选择安装或反安装某些产品;提供源和目标目录
  • 选择阶段
    • 需要安装的产品被勾选,可用磁盘空间及必要磁盘空间被显示,并会出现summary总结页面
  • 安装进度阶段
    • 实际安装过程中,显示安装进度条
  • 安装完成阶段
    • 要求用户运行root.sh脚本,并启动某种配置助理工具(configuration assistants)

 

安装模式

  • 互动模式
  • 用户使用图形界面访问各安装流程在对话框中并提供必要的安装信息,当提示时。在小范围安装中最为合适
  • 静默安装
  • 省略图形界面,由相应文件(response file)提供必要的信息。在安装过程中自动化实现,在众多服务器时。
  • 如setup.exe -slient -responseFile

 

Oraparam.ini

  • OUI的初始化文件
  • 位于安装介质下的”install”子目录中
  • 文档How to Interpret the oraparam.ini File [ID 237097.1]介绍了解释了oraparam.ini文件的内容
  • Oraparam.ini的一些重要参数

SOURCE=Location of the products.jar file. This location is relative to the directory where oraparam.ini exists.
JRE_LOCATION=Relative location of the Java Runtime Environment (JRE) which will be used by the Oracle Universal Installer
JRE_MEMORY_OPTIONS=Set these variables to influence the behaviour of JRE.ie. max heap size for java (-mx), startup size of java heap (-ms), disabling JIT (-nojit). You should increase the -mx and -ms values if you’re getting out of memory errors.

 

如何启动OUI互动模式?

  • 在windows上:
    • \setup.exe
    • 安装后
    • %ORACLE_HOME%\oui\bin\setup.exe
  • 在unix上
    • Cd
    • ./runInstaller
    • 安装后
    • Cd $ORACLE_HOME/oui/bin
    • ./runInstaller

 

如何启动OUI静默模式?

  • 在windows上:
  • 记录相关的相应文件:
    • Setup.exe -record -responseFile
    • 以静默模式安装
    • Setup.exe -slient -responseFile
  • 在UNIX上:
  • 记录相关的响应文件:
  • ./runInstaller -record -responseFile
  • 在静默模式下安装
  • ./runInstaller -slient -responseFile
  • 参考
  • OUI Guide:Oracle Universal Installer command line options and arguments Note 782918.1

 

OUI日志存放在哪里?

  • 每次OUI启动都会产生日志,日志名会以时间戳的形式归档
  • 这些日志包含了安装过程中丰富的信息。我们推荐在安装完成后复验一遍日志
  • 一般来说这些日志存放在中心信息库中(inventory),在logs子目录下的并以如下形式命名:

installActions<year-mm-dd_hh-mi-ss><AM|PM>.log
oraInstall<year-mm-dd_hh-mi-ss><AM|PM>.err
oraInstall<year-mm-dd_hh-mi-ss><AM|PM>.out

中心信息库的位置可以通过库指针文件了解到
库指针文件的默认位置:
在windows 上:注册表中的”HKLM\Software\oracle\inst_loc”
在unix上:例如Solaris平台:/var/opt/oracle/oraInst.loc
其他平台如Linux:/etc/oraInst.loc

 

如何确认已安装的产品

  • 使用OUI
    • 启动OUI并尝试点击”Installed Products”
  • 也可以使用Opatch工具
    • Opatch lsinventory -detail

 

如何启用OUI的debug和trace功能?

  • OUI工具存在”-debug”选项
    • 将启用最精细级别的信息日志
    • 将显示启动阶段的信息(例如抽取JRE)
    • 在对OUI进行可能由java引起的问题诊断时十分有效
    • 举例来说: ./runInstaller -debug
  • 另一方面可以对OUI启用系统调用跟踪trace,一般我们使用操作系统提供的tracing工具
    • 举例而言:truss -aefo /tmp/oui_trace.log ./runInstaller
    • 参考文档:Note 110888.1 介绍了如何trace Unix下的系统调用
    • 绝大多数OUI意外终止的问题可以从.ERR文件中找到相关问题
    • OUI: “Abnormal program termination” with java.io.IOException in .err file [ID 798338.1]

 

 

信息库指针文件

  • 默认的信息库指针:在给定平台上的某个标准位置存放着该指针文件,该文件包含了中心信息库的位置。
  • /etc/oraInst.loc (Linux上)
  • /var/opt/oracle/oraInst.loc(Solaris上)
  • \\HKEY_LOCAL_MACHINE\\Software\Oracle\inst_loc(Windows上)
  • 示例内容
    inventory_loc=/u01/oraInventory
    inst_group=maclean

 

集中信息库(Central Inventory)

  • 集中信息库:该信息库以目录形式存在,包含了该主机上安装的所有Oracle产品的信息
  • 举例来说在Unix上:/u01/oraInventory
  • 而在Windows平台上:C:\Program Files\Oracle\Inventory
  • 信息库文件:已注册的ORACLE_HOME的列表

/ContentsXML/inventory.xml
示例内容:

<INVENTORY>
<VERSION_INFO>
   <SAVED_WITH>10.2.0.1.0</SAVED_WITH>
   <MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDb10g_home1" LOC="/u01/oracle/product/10.2.0/db_1" TYPE="O" IDX="1"/>
www.askmac.cn & www.askmac.cn
</HOME_LIST>
</INVENTORY>

 

本地信息库(local Inventory)

  • 本地信息库:目录结构包含了ORACLE_HOME中Oracle软件的细节信息
  • $ORACLE_HOME/inventory

组件文件:各组件信息及其关联性,补丁集和One-off patch以及其所修复的bug,$ORACLE_HOME/inventory/ContentsXML/comps.xml
ORACLE_HOME属性文件:关于HOME的GUID,ARU Id和Cluster_nodes等信息:
$ORACLE_HOME/inventory/oraclehomeproperties.xml
本地信息库指针:指向自身注册的中心信息库(10Gr2以后才出现)
ORACLE_HOME/oraInst.loc

 

如何重建集中信息库

  • 前提是本地信息库没有被损坏或丢失
  • 使用runInstaller的’-attachHome’ 选项
  • 仅在10gr1以后可能
  • 在10.1.0.3以后,OUI会重建指定位置的oraInst.loc集中信息库,即便oraInventory目录不存在
  • 命令语法
  • $ORACLE_HOME/oui/bin/runInstaller -slient -attachHome \
  • ORACLE_HOME=<ORACLE HOME PATH>
  • ORACLE_HOME_NAME=<name of the ORACLE HOME>
  • 在oracle 10gr2以后attachhome和detachome的脚本被自动包含
  • <ORACLE_HOME>/oui/bin/attachhome.sh
  • <ORACLE_HOME>/oui/bin/detachhome.sh

 

10g以前和10g后安装的区别

  • 在10g以前(经典的如9iR2),OUI与JRE组件一直作为非ORACLE_HOME组件而置于其独立位置上,与ORACLE_HOME相分离
  • 举例而言在9i中其安装位置
  • OUI 组件位于<oraInventory>/../oui
  • JRE组件位于<oraInventory>/../jre
  • <oraInventory>/ContentsXML/comps.xml包含了9iR2中OUI与JRE组件的相关信息
  • 到10g以后,JRE与OUI组件被移动到独立的ORACLE_HOME中,以使得各个ORACLE HOME可以做到自包含并支持例如clone和attachhome等的操作
  • 举例来说从10g以后,安装位置位于
  • OUI组件在$ORACLE_HOME/oui
  • JRE组件在$ORACLE_HOME/jre
  • <OH>/inventory/ContentsXML/comps.xml 包含了关于OUI和JRE的信息

 

使用OUI的前提:合适的JRE

  • OUI是基于Java的图形化工具
  • 启动JRE必须要用到JRE(Java运行时环境Java Runtime Environment)
  • 在绝大多数平台上安装包中已经包含了启动OUI必要的JRE
  • runInstaller/setup.exe在引导阶段会自动去解压并使用oraparam.ini中JRE_LOCATION所指向的JRE程序
  • OUI可以不使用自带的JRE,而使用用户指定的安装在操作系统上的JRE程序
  • JRE最低版本要求
  • OUI 2.2.0.X要求JRE版本不低于 1.3.1(某些老版本的OUI只接受少数几个较早版本JRE,有时这些JRE往往已经找不到了)
  • OUI 10.1.0.X和10.2.0.X 要求JRE版本不低于1.4.2
  • OUI 11.1.0.X则要求不低于1.5

 

JRE是如何与安装套件打包的

  • JRE一般对应与OUI版本和安装套件打包在一起
  • 安装套件使用OUI 10.2.0.x版包含了扩展的JRE套件

cat oraparam.ini |grep JRE_LOCATION
JRE_LOCATION=../stage/Components/oracle.swd.jre/1.4.2.8.0/1/DataFiles
filegroup1.jar filegroup2.jar filegroup3.jar filegroup4.jar filegroup5.jar
11g中installer在oraparam.ini中引入了BOOTSTRAP_COMPS与JRE_SCRATCH_LOC参数;通过使用这些参数,11g安装器可以抽取并使用JDK组件(即oracle.jdk)由安装套件自带的。
BOOTSTRAP_COMPS=”oracle.swd.oui:11.1.0.6.0,oracle.swd.oui.core:11.1.0.6.0,oracle.jdk:1.5.0.1.1″
JRE_SCRATCH_LOC=jdk/jre

 

如何使用可选的JRE协同OUI工作
安装套件(10.2.0.x和11g)使用OUI版本10.2.0.X和11.X,支持使用”-jreloc”选项以使用用户提供的JRE软件。
./runInstaller -jreloc /usr/local/jdk1.6.0_24 (Unix)
Setup.exe -jreloc C:\jdk1.6 (Windows)

安装套件(版本9.2.0.5至9.2.0.8和10.1.0.x)使用OUI版本10.1.0.X,可以参考Metalink文档”Note 298163.1”以了解创建“bin.jar和all_exception_bin.jar”

安装套件(版本9.2.0.2至9.2.0.4)使用OUI版本2.2.0.X,通过修改oraparam.ini并替换JRE_LOCATION所指向的位置,可以利用用户想要使用的JRE。

 

安装套件自带JRE已知的Bug/问题

Bug 5391050 – DB 10.2.0.1 INSTALLATION FAILS ON MONTECITO CHIP H/W
Note 400227.1  How To Install Oracle RDBMS Software On Itanium Servers With Montecito Processors

 

Bug 5530274 PATCH “P4547809_92080_SOLARIS64.ZIP” JAVA VERSION 1.3.1 – SR NUMBER 5746016.992
Note 393199.1 Oui provided with Patchset 9.2.0.8 fails with exception

 



 

11g新特性:ORACLE_BASE

  • ORACLE_BASE目前可以充当一个新的会话变量了
  • 例如./runInstaller ORACLE_BASE=<location of ORACLE_BASE>
  • 目前在GUI模式下界面会提示用户是否想要使用已有的ORACLE_BASE或者指定一个新的
  • 在安装之后,ORACLE_BASE信息会被记录到本地信息库中的以下文件
  • <OH>/inventory/ContentsXML/oraclehomeproperties.xml
  • 参考

Note 454442.1 11g Install : Understanding about Oracle Base, Oracle Home and Oracle Central/Global Inventory locations [ID 454442.1]

 

 11g新特性:JRE

  • 引入了可客制化的引导程序功能
  • 这样做的出发点:
  • 软件自带的JRE无法正常引导或工作
  • 用户未安装OS级别的JRE/JDK,由此runInstaller无法使用-jreloc选项
  • Oraparam.ini文件中的新参数

BOOTSTRAP_COMPS=”oracle.swd.oui:11.1.0.6.0,oracle.swd.oui.core:11.1.0.6.0,oracle.jdk:1.5.0.1.1″
JRE_SCRATCH_LOC=jdk/jre,该参数指定了启动java引擎所在位置的相对起点
举例来说JRE_SCRATCH_LOC=jdk/jre,那么在引导完成后,JRE在<scratch>/jdk/jre/bin/java的位置被启动
runinstaller目前出现了新的选项:-bootstarponly,即仅针对指定的组件启动引导操作
../runInstaller –bootstraponly BOOTSTRAP_LOC=<location>

  • OUI所使用JRE位置的优先级如下
  • 若指定了-jreloc,则使用指定的位置
  • 指定了的JRE_SCRATCH_LOCATION
  • 使用已引导的oracle.swd.jre组件,位置由oraparam.ini指定的JRE_LOCATION决定
  • 否则提示用户输入JRE_LOCATION

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2011-03-17_01-30-30PM. Please wait …

Please specify JRE/JDK location ( Ex. /home/jre ), <location>/bin/java should exist :/fds

Please specify a valid JRE location :

 

常见问题

  • 信息库常见问题
  • Unix或Windows上OUI启动问题检查列表

 

信息库(inventory)常见问题

  • 集中信息库或本地信息库可能丢失会损坏造成的使用”opatch lsinventory -detail”或者OUI界面上点击installed Products时找不到ORACLE HOME
  • 虽然opatch lsinventory -detail或者OUI界面上installed products点击可以显示相应ORACLE_HOME但无法列出详细信息,一般是ORACLE_HOME相关的信息库丢失或者损坏了
  • 若集中信息库丢失或损坏,可以通过还原来回复,前提是备份过
  • 我们极力推荐日常备份ORACLE_HOME和集中信息仓库,在升级或打patch之前
  • 使用9.2.0.2的客户需要注意,有报告说明OUI 2.2.0.12存在损坏信息库的bug,推荐参考文档Note 229773.1

 

UNIX上常见的OUI启动问题

Itanium Montecito processors相关的JRE问题

Note 401332.1  How To Identify A Server Which Has Intel® Montecito Processors Installed

Note 400227.1  How To Install Oracle RDBMS Software On Itanium Servers With Montecito Processors

 

UNIX上的OUI启动失败检查列表

DISPLAY环境变量设置不当

Note.153960.1 FAQ X Server Testing and Troubleshooting

/tmp临时目录至少需要400MB的空间并且对oracle 安装用户来说可写

实在没有办法的时候,可以修改临时目录变量$TMP到别的目录

Note 339657.1 Unable To Start OUI: not enough room in /tmp

Note 177902.1 How To Set Temporary Space Directory

调用OUI时使用”-debug”选项以确认

在JRE解压阶段没有出现错误

在调用java命令启动OUI阶段没有出现错误

若在JRE解压完成后(java 命令失败)OUI启动失败,那么一般可以确认是自带的JRE在目标系统上存在问题

 

  • 为了确认JRE的问题,手动解压自带的JRE并确认java命令:
cd database/stage/Components/oracle.swd.jre/1.4.2.8.0/1/DataFiles/

mkdir /tmp/java_test

cp *.jar /tmp/java_test

cd /tmp/java_test

Unzip filegroup[1-5].jar

cd jre/1.4.2/bin

chmod 755 java

[maclean@rh8 bin]$ ./java -version

java version "1.4.2_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)

 

可以看到在我们的场景中java命令运行正常,若以上测试的最后结果中java命令出错则说明Oracle安装介质自带的JRE存在问题,这可能是个例,在安装介质传输过程中出现网络错误所导致的文件损坏可能引起以上问题;可以通过checksum等方式验证安装介质包/ISO文件无误。若经过验证发现安装介质没有损坏,那么很有可能是自带JRE在目标操作系统上无法正常运行,用户可以到java.sun.com网站去下载指定平台最新可用的JDK软件,在成功安装后JDK后再次尝试以”-jreloc”选项启动runInstaller程序,命令示例如下:

./runInstaller -debug -jreLoc <JRE Install Home>

 

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *