很久没有更新BLOG了,无论出于什么样的原因,我都十分汗颜。向各位关注老熊一亩三分地的朋友们说声对不起了。

本文讲述端午节期间一位朋友在AIX 6.1上安装Oracle 10g RAC时死活不出现节点选择界面的问题的处理过程,希望对一些朋友有所帮助。在正文开始之前,向在端午期间仍然奋战在DBA工作一线的朋友们致敬^_^

对这个问题,是通过朋友的QQ远程协助处理的,因此在下面的过程描述中缺乏一些界面或者说是代码。不过我尽量将处理的思路描述清楚。

众所周知,在安装10g RAC时,需要先安装CRS,即Oracle Cluster,再安装Oracle RDBMS Software。安装这2部分都应该会出现选择安装节点的界面,本文描述的问题是出现在RDBMS部分出现的。下面是当时具体的处理过程:

  • 安装界面不出现节点选择界面,很多时候是由于/etc/hosts配置不当,以及rsh或ssh配置不当所导致。而之前CRS已经安装妥当,同时crs_stat命令检查CRS的各个资源也运行正常,使用crsctl check命令检查cluster也显示正常。那么hosts和rsh等问题应该是不会存在的,否则CRS也不能正确安装和运行。虽然如此,我还是检查了一下这2方面,没有发现任何问题。
  • 在OUI安装界面,在选择Oracle HOME时,发现主机上已经有2个HOME,分别是/oracle/product/10.2.0/crs和/oracle/product/10.2.0/cluster,此系统安装的朋友解释是在安装CRS时,出现了异常,然后重新安装到另一个目录成功。crs那个目录是废弃的HOME,cluster那个是正在运行的CRS的HOME。
  • 对于这样的问题,我习惯的做法是,先检查能够容易想到的,如果根据经验和能够想到的可能出现的问题进行排查后,仍然不能解决问题,那么我就会参考文档,按文档一步一步去检查。在此期间,我参考了Metalink上的文档《Minimum Software Versions and Patches Required to Support Oracle Products on IBM Power Systems [ID 282036.1]》、《RAC Assurance Support Team RAC Starter Kit and Best Practices (AIX) [ID 811293.1]》、《Oracle Database on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2) [ID 169706.1]》三篇文章。同时也参考了《Oracle Database 10gR2 RAC on AIX Install Guide》(本文可以自MOS 811293.1文章中的连接下载)。根据文档重点考虑到了AIX 6.1这个新版本,同时应用了文档中提到的rootpre.sh补丁。问题仍然没有解决。

其实根据安装的经验,安装RAC时问题通常会出现在CRS安装部分,而RDBMS这部分很少有遇到问题。接下来:

  • 在安装的时候还发现有java的报错,在网上搜索一番这个错误,未果。这个错误与安装问题可能有很大的关联,但是不知道问题出现在哪里,是JAVA的问题?是安装程序的问题?还是缺少什么组件?或者是操作系统的问题,不得而知。
  • 根据MOS文档《How to trace OUI Note:269837.1》,开启安装程序的跟踪:
    ./runInstaller -J-DTRACING.ENABLED=true -J-DTRACING.LEVEL=2
    从结果来看,安装程序获取了ocr的路径,同时获取了其他一些属性。在此之后,就报出了JAVA的错误。

在问题的整个处理过程中,我一直在思考一个问题,那就是安装程序OUI是怎么来判断应该安装RAC还是安装非RAC的软件。我想到的几个方面:

  • 从/etc/hosts来判断,我很快否决了这个想法,这个不太可靠。
  • RAC的运行离不开Cluster软件,因此检查是否有cluster,cluster中有些什么样的节点,这是一个可行的办法。以前在AIX上安装Oracle9i时,如果有HA软件在运行,在安装时则会自动出现节点的选择并安装RAC软件。这是我认为的比较可靠的,并且应该是Oracle应当会采用的方法。但这里一个关键的问题是,现在CRS运行正常,安装程序为什么不能检测到cluster,不能检测到cluster中的节点。
  • 通过Oracle Inventory来检测,这是从以前解决DBCA建库不出现节点选择界面所得到的经验。当时为了解决问题,甚至反编译了DBCA部分JAVA代码。

打开/oracle/oraInventory/ContentsXML/inventory.xml,文件内容如下:

<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 2005 Oracle Corporation. All rights Reserved -->
<!-- Do not modify the contents of this file by hand. -->
<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="OUIHome1" LOC="/oracle/product/10.2.0/crs" TYPE="O" IDX="1" CRS="true">
   <NODE_LIST>
      <NODE NAME="node1"/>
      <NODE NAME="node2"/>
   </NODE_LIST>
</HOME>
<HOME NAME="OUIHome2" LOC="/oracle/product/10.2.0/cluster" TYPE="O" IDX="2" CRS="true">
   <NODE_LIST>
      <NODE NAME="node1"/>
      <NODE NAME="node2"/>
   </NODE_LIST>
</HOME>
</HOME_LIST>
</INVENTORY>

会不会是安装程序在根据第一个CRS HOME检测cluster出现了问题呢。删除掉IDX=“1”的那个HOME,将IDX=“2”改成IDX="1",然后重装安装。啊,上帝保佑,成功了。当时差点就内牛满面啊。

对于这个问题,其实还有一个不算太完美的解决办法,就是分别在2个节点上安装好Oracle RDBMS软件,然后打开rac_on选项,然后relink oracle。只不过这样的情况下,DBCA这样的工具又不能正常使用了。

也许有朋友问,为什么不一开始就关注inventory的问题。这可能跟我的处理问题习惯有关系,通常情况下我会按常规方式处理,或者看看有没有类似的案例。接下来才会考虑那些比较另类的方法。
--EOF

Trackback

17 comments untill now

  1. 如果是我来处理,可能我会把之前的安装的全部干掉,重新安装,也就是清理好安装环境,相比解决问题的时间可能速度更快些,而且环境也干净。

    [回复]

    老熊 回复:

    @boson, 每个人的习惯不一样,我喜欢找原因。不过安装失败,清理环境重新安装不失为一个好方法。

    [回复]

  2. 熊哥,别老是汗颜,我向您请教的问题您还没有回答呢,当然您有不回答的权利

    由于闭包传递和谓词推入(push predicate)—见执行计划12行及下面的注释,SYS_DOMAIN表在过滤之后,并且从执行计划的第7行可以看出,由于闭包传递,连接条件已经丢失,这种情况下,第7行的MERGE JOIN评估的行数应该与第8行显示的行数(8667K)一致才对,而这里显示的是411行。

    这个是以前你说的,我一直在看这个,看了几个月了 :(
    从执行计划中只能看到 闭包传递 发生过,但是 谓词推入 不知道你是怎么看出来的?只有对于VIEW才会发生 谓词推入,还有就是你说 第7行 应该显示8667K,我不知道为什么会这样?根据JOIN的算法,出现411也很正常,

    [回复]

    老熊 回复:

    @zabll, 这个问题,最好是在QQ上讨论。咱们在QQ上讨论一下?

    [回复]

  3. 真不容易啊。。。

    [回复]

  4. 顶,熊哥~~~~~~~~~

    [回复]

  5. 要我的话,肯定也重装了,诶,没有熊哥这种探索精神

    [回复]

  6. “删除掉IDX=“1”的那个HOME”
    是指删除inventory.xml的条目,还是删除文件目录?

    我想,应该是指前者,oui在检测到第一个条目后,去验证文件目录,结果为空,就发生了该问题?而对第二个条目不做处理?bug?

    老熊还是没有说清楚验证机制啊~

    [回复]

    老熊 回复:

    @rain@dna, 删除XML中的条目。实际上第一个HOME也是存在的,就是那个crs,第二个HOME是cluster

    [回复]

  7. 熊哥,是把:

    改成:

    吗?

    [回复]

  8. 熊哥,是把:

    改成

    吗?

    [回复]

  9. 评论中不能有XML吗?

    [回复]

    老熊 回复:

    @TQ, 你得把HTML符号>替换成& gt;之类的

    [回复]

  10. 实际上在安装完CRS再安装RAC的时候,整个环境是否是集群环境,就是依靠inventory.xml来判定的,当然我不知道这是不是唯一判断的标准。可以参考Metalink Note [ID 798203.1],如果inventory.xml中的项目缺少了CRS=”true”这几个字,那么安装RAC时也同样会报错。常规处理方法应该是手动detachHome,再attachHome。在老熊你这个案例中,应该是detachHome掉OUIHome1就可以了。

    [回复]

  11. 每次都有意处收获,挺好。

    [回复]

  12. 老熊果然是大牛。Kamus 补充得也好,我安装11.2.0.4的时候,死活不出节点名称,检查果然没有CRS=true. 但您提到的Metalink Note [ID 798203.1] 是内部文档吗? 普通MOS帐号搜索不到呀

    [回复]

  13. 在文章里看到,想问问,crs状态正常,dbca建库的时候看不到nodes,应该怎么解决。

    [回复]

Add your comment now