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

Oracle 11g RAC增删节点

6号见的MindPalace 2021-05-26
1723

前情提要

客户一套AIX平台两节点Oracle 11g RAC数据库由于其中一个节点本地磁盘存在坏块导致该节点数据库软件损坏,数据库集群无法正常运行。由于磁盘损坏,损坏节点集群无法正常修复,进行了节点强制删除再重新正常添加。由于系统比较重要客户申请了6小时停机时间,实际修复时间从0点至3点基本结束。

案件回顾

强制删除损坏节点

    # 手动清理损坏节点所有与oracle相关的文件,硬件工程师替换损坏磁盘,重建文件系统
    rm -rf u01
    .....


    # 删除节点2的数据库实例
    # 在存活节点执行,确保数据库查不到racdb2的实例
    su - oracle
    dbca -silent -deleteInstance -nodeList racdb2 -gdbName orcl -instanceName orcl2-sysDBAUserName sys -sysDBAPassword "****"
    sqlplus as sysdba
    alter database disable thread 2;
    select thread#,status,instance from v$thread;


    # 检查数据库配置信息,检查还存在损坏节点实例信息,手动删除
    srvctl config db -d orcl
    srvctl remove instance -i orcl2


    # 检查损坏节点是否被pin住
    su - root
    olsnodes -t –s
    # 如果损坏节点状态为pin,手动将其状态设为unpin
    crsctl unpin css -n racdb2


    # 在存活节点上停止损坏节点nodeapps
    su - oracle
    srvctl stop nodeapps -n racdb2 -f


    # 在存活节点上使用oracle用户更新集群信息
    su - oracle
    $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={racdb1}"


    # 在存活节点上删除损坏节点vip
    su - root
    srvctl stop vip -i ora.racdb2.vip -f
    srvctl remove vip -i ora.racdb2.vip -f


    # 在存活节点上删除损坏节点
    su - root
    crsctl delete node -n racdb2
    olsnodes -t -s


    # 在存活节点上使用grid用户更新集群信息
    su - grid
    $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={racdb1}" CRS=true


    # 验证损坏节点是否被删除
    su - grid
    cluvfy stage -post nodedel -n racdb2
    crsctl stat res -t


    重新添加节点

      # 添加grid
      su - grid
      export IGNORE_PREADDNODE_CHECKS=Y
      /u01/app/grid_home/oui/bin/addNode.sh -silent "CLUSTER_NEW_NODES={racdb2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={racdb2-vip}" "CLUSTER_NEW_PRIVATE_NODE_NAMES={racdb2-priv}"
      # 新节点使用root运行脚本
      /u01/app/oraInventory/orainstRoot.sh
      /u01/app/grid_home/root.sh


      # 添加db
      su - oracle
      export IGNORE_PREADDNODE_CHECKS=Y
      /u01/app/oracle/product/11.2.0/db_1/oui/bin/addNode.sh -silent "CLUSTER_NEW_NODES={racdb2}"
      # 新节点使用root运行脚本
      /u01/app/oracle/product/11.2.0/db_1/root.sh


      # 添加实例
      su - oracle
      dbca -silent -addInstance -nodeList racdb2 -gdbName orcl -instanceName orcldb2 -sysDBAUserName sys -sysDBAPassword "***"


      # 验证
      su - oracle
      sqlplus / as sysdba
      select thread#,status,instance from gv$thread;


      经验总结

      凌晨变更伤身体!!!
      文章转载自6号见的MindPalace,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论