暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

子网含255时Oracle 12c RAC安装root.sh执行失败的替代方案

东方宏达EHONDA 2016-08-04
1136

安装Oracle 12.1.0.2 RAC时,第一节点root.sh执行失败,报错信息如下:2016/01/16 22:37:52 CLSRSC-343: Successfully started Oracle Clusterware stack2016/01/16 22:38:02 CLSRSC-180: An error occurred while executing the command '/oracle/grid/12.1.0/bin/oifcfg setif -global en6/132.77.255.0:public en7/192.168.3.0:cluster_interconnect' (error code 1)2016/01/16 22:38:03 CLSRSC-287: FirstNode configuration failedDied at oracle/grid/12.1.0/crs/install/crsinstall.pm line 2398.The command '/oracle/grid/12.1.0/perl/bin/perl -I/oracle/grid/12.1.0/perl/lib -I/oracle/grid/12.1.0/crs/install oracle/grid/12.1.0/crs/install/rootcrs.pl ' execution failed检查网卡配置,实际上已经成功:root@nasdb1:/# oifcfg getifen6  132.77.255.0  global  publicen7  192.168.3.0  global  cluster_interconnect手工执行oifcfg setif命令测试一下:root@nasdb1:/# oifcfg setif -global en6/132.77.255.0:public en7/192.168.3.0:cluster_interconnectPRIF-15: invalid format for subnetroot@nasdb1:/# echo $?1参考文档root.sh fails with CLSRSC-287 due to: PRIF-15: invalid format for subnet (Doc ID 1933472.1)This is due to the following bug:Bug 19777496 - ROOT.SH FAILED: PRIF-15: INVALID FORMAT FOR SUBNETSolutionThe bug fix is included in 12.1.0.2 GI PSU3, apply/request interim patch 19777496 if needed.The workaround is to change subnet so it won't include 255 in subnet ID, i.e. for this case change from 10.18.255.0 to 10.18.251.0文档提供的解决方案和替代方案都不太容易实现,Patch很大,AIX平台1.5G,打起来也不方便,网络规划也不能改变,于是分析相关脚本寻找其它替代方案。经查,此功能调用过程如下:$GRID_HOME/crs/install/crsinstall.pm中的sub CRSInstall -> sub perform_configNode -> sub configNode ->crsutils.pm中的sub configFirstNode:      $success = configFirstNode($DHCP_flag, \@nodes_to_start);      if ($success != SUCCESS) {         writeCkpt($ckptName, CKPTFAIL);         die(dieformat(287));      }crsutils.pm中的sub configFirstNode -> sub setNetworkInterface:setNetworkInterface() || return FAILED;其中setNetworkInterface是这样定义的:sub setNetworkInterface{  my $success = TRUE;  my $oifcfg = catfile($CFG->params('ORACLE_HOME'), 'bin', 'oifcfg');  my $networks = oifcfgNetworks();  my @out = system_cmd_capture($oifcfg, "setif -global", $networks);  my $rc = shift @out;  if ($rc == 0)  {     trace("$oifcfg setif -global $networks successful");  } else {     trace("$oifcfg setif -global $networks failed rc = $rc");     print_error(180, "$oifcfg setif -global $networks", $rc);     $success = FALSE;  }  return $success;}我们在安装过程中发现,尽管root.sh报了错并退出,事实上网卡设置信息已经正确写入(参见前部的oifcfg getif输出),于是手工修改crsutils.pm中的configFirstNode函数(在运行root.sh之前)绕过此问题:setNetworkInterface() || return FAILED;改为:setNetworkInterface();root.sh尽管仍会有错误信息报出,但脚本仍会继续,oifcfg setif是成功的,root.sh也是成功的。


注:11.2.0.4没有此问题。

文章转载自东方宏达EHONDA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论