3.7 クラスタへのサーバーの追加

次の手順では、サーバーをクラスタに追加する方法について説明します。

Oracle VMクラスタにノードを追加するには、Oracle Exadata Database Machineメンテナンス・ガイドExadataでのOracle VM RACクラスタの拡張を参照してください。

注意:

Oracle Clusterwareで、Oracle GoldenGateなど、新しいノードにまだインストールされていない追加サービスを管理する場合は次の点に注意してください。

  • addNode.shスクリプトを実行する前に、既存のノードでそれらのサービスを停止する必要がある場合があります。

  • これらの追加サービスを実行する新しいデータベース・サーバーに任意のユーザーとグループを作成する必要があります。

  • Oracle Clusterwareが新しいノードでサービスを開始しないように、それらのサービスの自動起動を無効にする必要がある場合があります。

ノート:

既存のノードと新しいノード間でファイルを転送する際に問題が発生するのを防ぐため、SSH等価を設定する必要があります。詳細は、「ExadataでのOracle VM Oracle RACクラスタの拡張」のステップ4を参照してください。
  1. すべてのデータベース・サーバーの/etc/oracle/cell/network-config/*.oraファイルを、正しく一貫性があるものにします。cellip.oraファイルのすべてのデータベース・サーバーには、より古いデータベース・サーバーとストレージ・サーバー、より新しいデータベース・サーバーとストレージ・サーバーを含めます。

  2. ORACLE_BASEおよびdiag宛先ディレクトリがOracle Grid Infrastructure宛先ホームに作成されていることを確認します。

    次に、Oracle Grid Infrastructure 11gの例を示します。

    # dcli -g /root/new_group_files/dbs_group -l root mkdir -p   \
      /u01/app/11.2.0/grid  /u01/app/oraInventory /u01/app/grid/diag
    
    # dcli -g /root/new_group_files/dbs_group -l root chown -R grid:oinstall \
      /u01/app/11.2.0 /u01/app/oraInventory /u01/app/grid
    
    # dcli -g /root/new_group_files/dbs_group -l root chmod -R 770   \
      /u01/app/oraInventory 
    
    # dcli -g /root/new_group_files/dbs_group -l root chmod -R 755   \
      /u01/app/11.2.0  /u01/app/11.2.0/grid
    

    次に、Oracle Grid Infrastructure 12cの例を示します。

    # cd /
    # rm -rf /u01/app/*
    # mkdir -p /u01/app/12.1.0.2/grid
    # mkdir -p /u01/app/oracle/product/12.1.0.2/dbhome_1
    # chown -R oracle:oinstall /u01
  3. inventoryディレクトリおよびグリッド・インフラストラクチャ・ホーム・ディレクトリが作成され、適切な権限があることを確認します。ディレクトリの所有者はグリッド・ユーザーでOINSTALLグループである必要があります。inventoryディレクトリには770個の権限、Oracle Grid Infrastructureホーム・ディレクトリには755個の権限があります。

    Oracle Grid Infrastructure 12c以降を実行している場合は、次のようにします。

    • oraInventory/u01/app内に存在していないことを確認します。

    • /etc/oraInst.locが存在していないことを確認します。

  4. 既存のノードと同じユーザー識別子およびグループ識別子を使用して、新しいノードにユーザーおよびグループを作成します。

    ノート:

    以前にOracle Exadata Deployment Assistant (OEDA)を使用したときに、これらのユーザーおよびグループが作成されています。それらが存在し、UID値とGID値が適切なことを確認します。
  5. グリッド・ユーザーとして、既存のホストにログインします。

  6. Oracle Cluster Registry (OCR)のバックアップが存在することを確認します。

    ocrconfig -showbackup 
    
  7. 次のようなコマンドを使用して、データベース・サーバーをクラスタに追加できることを確認します。

    $ cluvfy stage -post hwos -n \
      dm02db01,dm02db02,dm02db03,dm02db04,dm02db05,dm02db06,dm02db07,dm02db08 \
      -verbose
    
    $ cluvfy comp peer -refnode dm01db01 -n \
      dm02db01,dm02db02,dm02db03,dm02db04,dm02db05,dm02db06,dm02db07,dm02db08 \
      -orainv oinstall -osdba dba | grep -B 3 -A 2 mismatched
    
    $ cluvfy stage -pre nodeadd -n \
      dm02db01,dm02db02,dm02db03,dm02db04,dm02db05,dm02db06,dm02db07,dm02db08 \
      -verbose -fixup -fixupdir /home/grid_owner_name/fixup.d
    

    前述のコマンドで、gi_owner_nameOracle Grid Infrastructureソフトウェアの所有者の名前、dm02db01からdb02db08は、新しいデータベース・サーバー、refnodeは既存のデータベース・サーバーです。

    ノート:

    • 2番目と3番目のコマンドでは、コマンドが正常に完了した場合は出力が表示されません。

    • 投票ディスクに関するエラーが次のように表示される場合があります。

       ERROR: 
       PRVF-5449 : Check of Voting Disk location "o/192.168.73.102/ \
       DATA_CD_00_dm01cel07(o/192.168.73.102/DATA_CD_00_dm01cel07)" \
       failed on the following nodes:
       Check failed on nodes: 
               dm01db01
               dm01db01:No such file or directory
       …
       PRVF-5431 : Oracle Cluster Voting Disk configuration check
      

      そのようなエラーが発生した場合:

      - Oracle Grid Infrastructure 11gを実行している場合、環境変数を次のように設定します。

      $ export IGNORE_PREADDNODE_CHECKS=Y
      

      環境変数を設定しても、cluvfyコマンドの実行時のエラーを防止できませんが、addNode.shスクリプトは正常に完了できます。

      - Oracle Grid Infrastructure 12c以降を実行している場合、addnodeパラメータの-ignoreSysPrereqs -ignorePrereqを使用します。

      Oracle Grid Infrastructure 12c以降では、addnodeIGNORE_PREADDNODE_CHECKS環境変数を使用しません。

    • データベース・サーバーが特定のイメージでインストールされ、後で以降のイメージにパッチが適用された場合、一部のオペレーティング・システム・ライブラリはcluvfyコマンドで期待されるバージョンよりも古い場合があります。この場合、cluvfyコマンドは失敗し、addNode.shスクリプトも失敗する可能性があります。

      バージョンでの相違が小さな場合は、以前のバージョンを使用できます。たとえば、glibc-common-2.5-81.el5_8.2glibc-common-2.5-49です。バージョンは異なりますが、両方ともバージョン2.5であるため相違は小さく、違いを許容できます。

      この問題を回避するために、addNode.shスクリプトを実行する前に環境変数IGNORE_PREADDNODE_CHECKS=Yを設定するか、addnodeパラメータの-ignoreSysPrereqs -ignorePrereqaddNode.shスクリプトで使用します。

  8. 既存のサーバーのOracle Grid Infrastructureホーム内のすべてのディレクトリに実行可能なビット・セットがあることを確認します。次のコマンドをrootユーザーとして実行します。

    find /u01/app/11.2.0/grid  -type d  -user root  ! -perm /u+x  !     \
    -perm /g+x ! -perm o+x
    
    find /u01/app/11.2.0/grid  -type d  -user grid_owner_name  ! -perm /u+x  !   \
    -perm /g+x ! -perm o+x
    

    前述のコマンドのgrid_owner_nameOracle Grid Infrastructureソフトウェアの所有者の名前で、/u01/app/11.2.0/gridOracle Grid Infrastructureホーム・ディレクトリです。

    ディレクトリが表示される場合、グループおよびその他の権限が+xであることを確認します。Grid_home/network/admin/samples, $GI_HOME/crf/admin/run/crfmondおよびGrid_home/crf/admin/run/crflogdディレクトリには、+x権限セットが必要な場合があります。

    Oracle Grid Infrastructure 12c以降を実行している場合、次のようなコマンドを実行します。

    # chmod -R u+x /u01/app/12.1.0.2/grid/gpnp/gpnp_bcp*
    
    # chmod -R o+rx /u01/app/12.1.0.2/grid/gpnp/gpnp_bcp*
    
    # chmod o+r /u01/app/12.1.0.2/grid/bin/oradaemonagent /u01/app/12.1.0.2/grid/srvm/admin/logging.properties
    
    # chmod a+r /u01/app/oracle/product/12.1.0.2/dbhome_1/bin/*O
    
    # chmod a+r /u01/app/oracle/product/12.1.0.2/dbhome_1/bin/*0
    
    # chown -f gi_owner_name:dba /u01/app/12.1.0.2/grid/OPatch/ocm/bin/emocmrsp

    Grid_home/network/admin/samplesディレクトリは、+x権限が必要です:

    chmod -R a+x /u01/app/12.1.0.2/grid/network/admin/samples
  9. 次のコマンドを実行します。Oracle Grid Infrastructureホームはグリッド・ユーザーに所有されているとします。

    $ dcli -g old_db_nodes -l root chown -f grid_owner_name:dba \
      /u01/app/11.2.0/grid/OPatch/ocm/bin/emocmrsp
    
  10. このステップは、Oracle Grid Infrastructure 11gを実行している場合にのみ必要です。Oracle Grid Infrastructure 12cでは、値はコマンドラインで指定されるため、レスポンス・ファイルは必要ありません。

    レスポンス・ファイルadd-cluster-nodes.rspをグリッド・ユーザーとして作成し、次のような新しいサーバーを追加します。

    RESPONSEFILE_VERSION=2.2.1.0.0
    
    CLUSTER_NEW_NODES={dm02db01,dm02db02,   \
    dm02db03,dm02db04,dm02db05,dm02db06,dm02db07,dm02db08}
    
    CLUSTER_NEW_VIRTUAL_HOSTNAMES={dm0201-vip,dm0202-vip,dm0203-vip,dm0204-vip,  \
    dm0205-vip,dm0206-vip,dm0207-vip,dm0208-vip}
    

    前述のファイルでは、ホスト名dm02db01からdb02db08は、クラスタに追加されている新しいノードです。

    ノート:

    サーバー名を示す複数の行は、連続した1つの行で表示されます。ページ制限により、ドキュメント内で折り返されています。
  11. クラスタを拡張する前に、Grid_home/rdbms/auditおよびGrid_home/log/diag/*ディレクトリのファイルの大部分が移動または削除されていることを確認します。

  12. インストーラがメモリー不足になる場合は、My Oracle Supportノート744213.1を参照してください。このノートは、Grid_home/oui/ora-param.iniファイルを編集する方法、およびJRE_MEMORY_OPTIONSパラメータを-Xms512m-Xmx2048mに変更する方法について説明しています。

  13. グリッド・ユーザーとして既存のサーバーからaddNode.shスクリプトを実行して、新しいサーバーを追加します。

    • Oracle Grid Infrastructure 11gを実行している場合は、次のようにします。

      $ cd Grid_home/oui/bin
      $ ./addNode.sh -silent -responseFile /path/to/add-cluster-nodes.rsp
      
    • Oracle Grid Infrastructure 12c以降を実行している場合は、addnode.shコマンドをCLUSTER_NEW_NODESおよびCLUSTER_NEW_VIRTUAL_HOSTNAMESパラメータを指定して実行します。構文は次のとおりです:

      $ ./addnode.sh -silent "CLUSTER_NEW_NODES={comma_delimited_new_nodes}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={comma_delimited_new_node_vips}"

      たとえば:

      $ cd Grid_home/addnode/
      
      $ ./addnode.sh -silent "CLUSTER_NEW_NODES={dm02db01,dm02db02,dm02db03,dm02db04,dm02db05,
      dm02db06,dm02db07,dm02db08}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={dm02db01-vip,dm02db02-vip,
      dm02db03-vip,dm02db04-vip,dm02db05-vip,dm02db06-vip,dm02db07-vip,dm02db08-vip}" 
      -ignoreSysPrereqs -ignorePrereq
  14. グリッド・ディスクが新しいデータベース・サーバーのそれぞれから表示できることを確認します。

    $ Grid_home/grid/bin/kfod disks=all dscvgroup=true
    
  15. 要求された場合、dcliユーティリティを使用して、rootユーザーとしてorainstRoot.shスクリプトを実行します。

    $ dcli -g new_db_nodes -l root \
      /u01/app/oraInventory/orainstRoot.sh
    
  16. 新しいサーバーでHAIPを無効にします。

    root.shスクリプトを実行する前に、新しい各サーバーで環境変数HAIP_UNSUPPORTEDTRUEに設定します。

    $ export HAIP_UNSUPPORTED=true
  17. Grid_home/root.shスクリプトを、順次、各サーバーで実行します。これによりプロセスが簡略化され、問題を明確に識別して対処できます。

    ノート:

    ノード識別子は、root.shスクリプトが実行されるノードの順に設定されます。通常、スクリプトは番号の最も小さいノードから最も大きいノードに実行されます。
  18. root.shスクリプトからログ・ファイルをチェックし、次のサーバーに進む前にサーバーに問題がないことを確認します。問題がある場合、先に進む前に問題を解決します。

  19. サーバーの追加後のクラスタのステータスを確認します。

    $ cluvfy stage -post nodeadd -n \
      dm02db01,dm02db02,dm02db03,dm02db04,dm02db05,dm02db06,dm02db07,dm02db08 \
      -verbose
    
  20. すべてのサーバーが追加され、基本サービスが実行されていることを確認します。

    crsctl stat res -t
    

    ノート:

    場合によっては、新しいサーバーのディスク・グループをマウントする必要があります。oracleユーザーとして次のコマンドを実行する必要があります。

    $ srvctl start diskgroup -g data
    $ srvctl start diskgroup -g reco
  21. Oracle Grid Infrastructureリリース11.2.0.2以降を実行している場合、次のステップを実行します。

    1. CLUSTER_INTERCONNECTSパラメータを各Oracle ASMインスタンスのSPFILEに手動で追加します。

      ALTER SYSTEM SET cluster_interconnects = '192.168.10.x'       \
      sid='+ASMx' scope=spfile
    2. 新しい各サーバーでクラスタを再起動します。

    3. パラメータが正しく設定されていることを確認します。