【翻译自mos文章】使用config.sh/config.bat 来 configure or re-configure GI

本文详细介绍了在$GRID_HOME/crs/config/目录下的config.sh文件用于配置或重新配置Grid Infrastructure (GI)。它适用于Oracle Database Enterprise Edition 11.2.0.2及后续版本,提供静默模式运行选项,并且可以用于特定场景,如GI软件安装或克隆后的配置,或从其他集群克隆GI。此外,文章还提到了在不中断运行的情况下,如何在有问题的节点上进行配置或重新配置的方法。
来自 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;
}
<think>好的,用户遇到了一个配置时的警告信息:“checking for pkg-config... /usr/bin/pkg-config configure: WARNING: using cross tools not prefixed with host triplet”。我需要帮他们理解这个问题出现的原因以及解决方法。 首先,用户可能是在进行跨平台编译,也就是在一种系统上编译运行在另一种系统上的程序。这时候通常会使用交叉编译工具链。而警告中提到“cross tools not prefixed with host triplet”,意味着配置脚本检测到使用的工具(比如pkg-config)没有按照惯例添加主机三元组前缀。主机三元组通常是类似“arm-linux-gnueabihf”这样的格式,用来标识目标平台。工具链中的工具一般会用这个三元组作为前缀,比如arm-linux-gnueabihf-pkg-config,这样配置脚本就能正确识别这些工具是为目标平台准备的。 接下来,用户可能不太清楚主机三元组的具体含义,需要解释清楚。主机三元组通常由CPU架构、供应商、操作系统和ABI组成,例如x86_64-linux-gnu。在交叉编译时,使用带前缀的工具可以避免与宿主系统的工具混淆,确保正确链接到目标平台的库和头文件。 然后,用户需要知道为什么会出现这个警告。可能的原因有几个:首先,他们可能没有正确安装或配置交叉编译工具链,导致工具没有正确的前缀。其次,配置脚本可能在自动检测工具时没有正确指定前缀,导致使用了宿主系统的pkg-config。最后,用户可能在配置时没有明确指定PKG_CONFIG环境变量,导致脚本使用默认路径下的工具。 解决这个问题的方法可能有几个步骤。首先,建议用户检查是否安装了目标平台对应的pkg-config工具,通常是带三元组前缀的,比如arm-linux-gnueabihf-pkg-config。如果没有安装,需要安装对应的工具包。其次,在运行configure脚本时,可以通过环境变量指定PKG_CONFIG的路径,例如使用export PKG_CONFIG=/path/to/cross-pkg-config,或者在配置命令中加入PKG_CONFIG=/path/to/cross-pkg-config。另外,用户可能需要使用--host选项指定目标平台的三元组,这会提示配置脚本寻找带前缀的工具。此外,检查交叉编译工具链的安装是否正确,确保所有必要的工具和库都已正确安装并配置。最后,如果宿主系统的pkg-config被错误使用,可能需要调整PATH环境变量,让交叉工具链的路径优先于系统路径。 用户可能还想知道如何确认是否已经安装了正确的工具,或者如何查找正确的前缀。可以建议他们检查工具链的安装目录,通常位于/usr/bin/下,查找是否有带相应前缀的pkg-config。如果找不到,可能需要通过包管理器安装,比如在Ubuntu上使用apt-get install pkg-config-arm-linux-gnueabihf之类的命令。 另外,用户可能对交叉编译的整体流程不太熟悉,可能需要简要解释交叉编译的基本概念,强调工具链正确配置的重要性,以避免后续出现更多问题。同时,提醒用户在配置时仔细阅读输出信息,及时处理类似的警告,因为它们可能导致生成的二进制文件不正确或无法运行。 最后,总结问题的核心在于工具前缀的缺失,解决方法围绕正确安装和配置交叉工具链,确保配置脚本能够使用正确的工具。如果用户按照这些步骤操作,应该能够解决警告,继续进行正确的编译过程。</think>在编译软件时遇到提示`checking for pkg-config... /usr/bin/pkg-config configure: WARNING: using cross tools not prefixed with host triplet`,这通常与**交叉编译**相关。以下是逐步解析和解决方案: --- ### **1. 问题本质** - **交叉编译场景**:当你在当前系统(如x86_64架构的Linux)上编译目标平台(如ARM架构)的软件时,需要使用专门为**目标平台**设计的工具链(如`arm-linux-gnueabihf-gcc`)。 - **警告含义**:配置脚本(`configure`)检测到你的工具(如`pkg-config`)未按约定添加**主机三元组(host triplet)**前缀(如`arm-linux-gnueabihf-pkg-config`),可能导致后续编译链接到错误的库。 --- ### **2. 关键术语解释** - **主机三元组(Host Triplet)**:标识目标平台的格式,如: - `arm-linux-gnueabihf`(ARM架构 + Linux系统 + GNU EABI硬浮点) - `x86_64-w64-mingw32`(64位Windows) - **工具链前缀**:交叉编译工具链中的工具通常以主机三元组开头,例如: - `arm-linux-gnueabihf-gcc`(交叉编译器) - `arm-linux-gnueabihf-pkg-config`(目标平台的`pkg-config`) --- ### **3. 问题原因** - **未正确配置工具链**: - 系统中存在宿主系统(Host)的`pkg-config`(如`/usr/bin/pkg-config`),但它属于当前系统(x86_64),而非目标平台。 - 配置脚本未正确找到目标平台的`pkg-config`(如缺少前缀的版本)。 --- ### **4. 解决方案** #### **步骤 1:安装目标平台的pkg-config** - 通过包管理器安装带主机三元组前缀的`pkg-config`: ```bash # 示例:Ubuntu/Debian安装ARM平台的pkg-config sudo apt-get install pkg-config-arm-linux-gnueabihf ``` #### **步骤 2:指定目标平台的pkg-config** - **方法 1:通过环境变量** 在运行`configure`脚本前,设置`PKG_CONFIG`变量: ```bash export PKG_CONFIG=arm-linux-gnueabihf-pkg-config ./configure --host=arm-linux-gnueabihf ``` - **方法 2:直接传递参数** 在`configure`命令中显式指定: ```bash ./configure --host=arm-linux-gnueabihf PKG_CONFIG=arm-linux-gnueabihf-pkg-config ``` #### **步骤 3:验证工具链路径** - 确保交叉工具链的路径在`PATH`环境变量中优先级高于系统默认路径: ```bash # 示例:将交叉工具链路径添加到PATH export PATH=/path/to/cross-toolchain/bin:$PATH ``` #### **步骤 4:检查依赖库路径** - 如果目标平台的库安装在非标准路径(如`/opt/arm-libs`),需通过`PKG_CONFIG_PATH`指定: ```bash export PKG_CONFIG_PATH=/opt/arm-libs/pkgconfig ``` --- ### **5. 补充说明** - **宿主系统(Host) vs 目标系统(Target)**: - **Host**:你正在执行编译的系统(如x86_64 Linux)。 - **Target**:编译生成的程序将运行的系统(如ARM Linux)。 - **为何需要前缀**:防止工具链中的工具(如`gcc`、`pkg-config`)与宿主系统的同名工具冲突。 --- ### **6. 调试建议** - 运行`configure`时添加`--verbose`参数观察详细检测过程: ```bash ./configure --host=arm-linux-gnueabihf --verbose ``` - 检查生成的`config.log`文件,定位具体错误。 通过以上步骤,可确保使用正确的交叉工具链,消除警告并完成编译。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值