来自 How to Configure or Re-configure Grid Infrastructure With config.sh/config.bat (文档 ID 1354258.1)
适用于:
Oracle Database - Enterprise Edition - Version 11.2.0.2 and later
Information in this document applies to any platform.
目的:
本文解释了在$GRID_HOME/crs/config/目录下的config.sh(config.bat on Windows)文件。
细节:
Basic:
"config.sh" 是一个 11.2.0.2 Grid Infrastructure (GI)的新特性。该特性用于 GI software 被安装或者被clone后 的 configure 11gR2 GI Cluster 上。
config.sh将会启动GI configuration framework GUI,该GUI会指导用户通过一些页面输入一些必要的信息,最后config.sh会提示运行root脚本。config.sh也可以在静默模式下运行(此时使用响应文件)
config.sh 不是部署software的工具。software可以通过运行OUI 或者clonig 来部署。
这也就是说:若是GI软件被破坏,config.sh将对该种情况没有帮助。
此时(若是GI软件被破坏),deinstall 或者 node removal/addition procedure 可以在该情况下使用。
可以使用config.sh的情况:
在所有节点上,使用rootcrs.pl脚本将GI cluster deconfigured之后
在这种情况下,若是交互模式,config.sh 会询问cluster参数以生成GI configuration files 并提示运行root.sh 以建立新的GI cluster
从config.sh询问配置信息开始,config.sh不会关心原来的cluster是一个全新的安装或者从老版本升级上来的安装,
也不会关心 新的cluster的是否有相同的节点数,也不会关系 configurations (OCR/VD location, network info etc)是否跟之前一样。
对11.2.0.3 或更高版本来说,如果diskgroup attribute compatible.asm is set to 11.2.0.0 and above
config.sh可以为 ocr和vd来 重用(re-use)已经存在diskgroups
从其他cluster中clone过来的GI
这是clone过程的一部分,请参见:
Oracle Clusterware
Administration and Deployment Guide
11g Release 2 (11.2)
当GI仅仅安装完software之后
这种情况下:
---如果没有之前的oracle clusterware安装,config.sh会询问cluster parameter以生成GI 配置文件(configuration files ) 并提示运行root.sh 以配置一个新的GI cluster
---如果已经存在一个oracle clusterware安装,config.sh会询问cluster parameter以生成GI 配置文件(configuration files )
并运行rootupgrade.sh 以升级一个新的GI cluster。在这种情况下,在running config.sh之前,没有必要去deconfigure 任何东西。
---若是已经存在一个GI Standalone安装,config.sh会报错,config.sh不能用于升级Oracle Restart
不可以使用config.sh的情况:
对GI cluster environment来说,config.sh会在所有节点的停机时间(down time)去configure/reconfigure cluster中的所有节点。
因此,对于下面不需要停机就能完成的场景,config.sh不是一个最好的选择。
one or more nodes are having problem, but there is node or nodes that are running fine,
in this case, node removal/addition procedure can be used to avoid downtime.
one or more nodes are having problem, but there is node or nodes that are running fine, and the cluster is freshly installed without any patch set regardless how long it has been running - if patch set update(PSU) has been applied, that is fine, and cluster
parameters are not changed since original configuration, eg: OCR/VD on same location, network configuration has not been changed etc, and GRID_HOME is intact. In this case, deconfig and reconfig on each problematic node can be used (as root, execute "$GRID_HOME/crs/install/rootcrs.pl
-deconfig -force" then "$GRID_HOME/root.sh").
Root script的并行执行:
当建立or升级一个含有多个节点的GI cluster时,可以在第一个节点上运行root script(root.sh or rootupgrade.sh)并等待完成。
然后,在其他所有节点(除了最后一个节点)上执行root script(root.sh or rootupgrade.sh)并等待完成。
最后在last node上执行root script(root.sh or rootupgrade.sh)
Known issue:
Bug 10158098 - Can not find ASM disks
This issue affects 11.2.0.2 only, refer to Document 1277148.1 for more details.
Bug 10055663 - OUI stuck after nodes list are specified (INS-42017 could be reported)
This issue affects 11.2.0.2 only, Patch 10055663 needs to be applied.
If INS-42017 still happens after the patch is applied, compare GRID_HOME on all nodes to make sure they are the same, especially $GRID_HOME/inventory/ContentsXML/comps.xml; if there‘s a discrepancy, investigate for cause (different patches etc) and fix it .
Refer to note 1623645.1 if ORACLE_HOME_NAME is different on different nodes.
Bug 13409054 - OUI does not start with "Exception in thread "main" java.lang.UnsatisfiedLinkError: no oraInstaller in java.library.path"
This issue affects 11.2.0.3 on Solaris, it‘s fixed in 12.1 and the workaround is to modify <grid-home>/crs/config/config.pl
Replace the following:
sub setLdLibraryPath() {
my $osname=$^O;
$LD_LIBRARY_PATH = $ORACLE_HOME.$dirSep.‘lib‘.$pathSep.$OUI_LIBRARY_LOCATION;
$LD_LIBRARY_PATH .= $pathSep.$ORACLE_HOME.$dirSep.‘bin‘;
$LD_LIBRARY_PATH .= $pathSep.$ENV{LD_LIBRARY_PATH} if (exists($ENV{LD_LIBRARY_PATH}));
$ENV{LD_LIBRARY_PATH} = $LD_LIBRARY_PATH;
}
With:
sub setLdLibraryPath() {
my $osname=$^O;
$LD_LIBRARY_PATH = $ORACLE_HOME.$dirSep.‘lib‘.$pathSep.$OUI_LIBRARY_LOCATION;
$LD_LIBRARY_PATH .= $pathSep.$ORACLE_HOME.$dirSep.‘bin‘;
$LD_LIBRARY_PATH .= $pathSep.$ENV{LD_LIBRARY_PATH} if (exists($ENV{LD_LIBRARY_PATH}));
$ENV{LD_LIBRARY_PATH} = $LD_LIBRARY_PATH;
my $libpath = $ENV{LD_LIBRARY_PATH};
$ENV{LD_LIBRARY_PATH_64} = $libpath;
}