計算サーバーの再イメージ化

計算サーバーが復旧不可能なダメージを負った場合は、そのサーバーを交換して、交換したサーバーを再イメージ化します。再イメージ化手順の実行中に、クラスタ内の他の計算サーバーは使用できます。クラスタに新しいサーバーを追加する際、作業中の計算サーバーから新しいサーバーにソフトウェアをコピーします。

次のタスクは計算サーバーの再イメージ化の方法を示しています:

Oracleサポート・サービスへの連絡

Oracleサポート・サービスでサポート・リクエストを開きます。サポート・エンジニアが障害が発生したサーバーを確認し、交換サーバーを送ります。サポート・エンジニアは、作業中の計算サーバーから実行したimagehistoryコマンドの出力結果も要求します。出力結果により、元の計算サーバーのイメージ化に使用され、システムのリストアに使用されるcomputeImageMakerファイルへのリンクが提供されます。

クラスタ検証ユーティリティの最新リリースのダウンロード

クラスタ検証ユーティリティ(cluvfy)の最新リリースは、My Oracle Support Doc ID 316817.1で入手できます。

クラスタの障害が発生した計算サーバーの削除

障害が発生した計算サーバーは、Oracle Real Application Clusters (Oracle RAC)から削除する必要があります。

このステップで、working_serverはクラスタ内の動作している計算サーバー、failed_serverは交換される計算サーバー、replacement_serverは新規サーバーです。

障害が発生した計算サーバーをOracle RACクラスタから削除するには、次のようにします。

  1. oracleユーザーとして、working_serverにログインします。

  2. 障害が発生したサーバーで実行されているリスナーを無効化します。

    $ srvctl disable listener -n failed_server
    $ srvctl stop listener -n failed_server
    
  3. インベントリからOracleホーム・ディレクトリを削除します。

    $ cd $ORACLE_HOME/oui/bin
    $ ./runInstaller -updateNodeList ORACLE_HOME= \
    /u01/app/oracle/product/12.1.0/dbhome_1 "CLUSTER_NODES=list_of_working_servers"
    

    前述のコマンドのlist_of_working_serversは、ra01db02ra01db03などのクラスタで動作している計算サーバーのリストです。

  4. 障害が発生したサーバーがクラスタから削除された(つまり、ピン解除された)ことを確認します。

    $ olsnodes -s -t
    
    ra01db01     Inactive        Unpinned
    ra01db02        Active          Unpinned
    
  5. 障害が発生した計算サーバーの仮想IP (VIP)リソースを停止して削除します。

    # srvctl stop vip -i failed_server-vip
    PRCC-1016 : failed_server-vip.example.com was already stopped
    
    # srvctl remove vip -i failed_server-vip
    Please confirm that you intend to remove the VIPs failed_server-vip (y/[n]) y
    
  6. クラスタから計算サーバーを削除します。

    # crsctl delete node -n failed_server
    CRS-4661: Node failed_server successfully deleted.
    

    次のようなエラー・メッセージを受領したら、投票ディスクを移動します。

    CRS-4662: Error while trying to delete node ra01db01.
    CRS-4000: Command Delete failed, or completed with errors.
    

    投票ディスクを移動するには、次のようにします。

    1. 投票ディスクの現在の場所を特定します。出力例では現在の場所がDBFS_DGであると示されています。

      # crsctl query css votedisk
      
      ##  STATE    File Universal Id          File Name                Disk group
      --  -----    -----------------          ---------                ----------
      1. ONLINE   123456789abab (o/192.168.73.102/DATA_CD_00_ra01cel07) [DBFS_DG]
      2. ONLINE   123456789cdcd (o/192.168.73.103/DATA_CD_00_ra01cel08) [DBFS_DG]
      3. ONLINE   123456789efef (o/192.168.73.100/DATA_CD_00_ra01cel05) [DBFS_DG]
      Located 3 voting disk(s).
      
    2. 投票ディスクを別のディスク・グループに移動します。

      # ./crsctl replace votedisk +DATA
      
      Successful addition of voting disk 2345667aabbdd.
      ...
      CRS-4266: Voting file(s) successfully replaced
      
    3. 投票ディスクを元の場所に戻します。この例ではDBFS_DGに戻されています。

      # ./crsctl replace votedisk +DBFS_DG
      
    4. crsctlコマンドを繰り返してクラスタからサーバーを削除します。

  7. Oracleインベントリを更新します。

    $ cd $ORACLE_HOME/oui/bin
    $ ./runInstaller -updateNodeList ORACLE_HOME=/u01/app/12.1.0/grid \
      "CLUSTER_NODES=list_of_working_servers" CRS=TRUE
    
  8. サーバーが正常に削除されたことを確認します。

    $ cluvfy stage -post nodedel -n failed_server -verbose
    
    Performing post-checks for node removal
    Checking CRS integrity...
    The Oracle clusterware is healthy on node "ra01db02"
    CRS integrity check passed
    Result:
    Node removal check passed
    Post-check for node removal was successful.
    

関連項目:

計算サーバーのクラスタからの削除の詳細は、Oracle Real Application Clusters管理およびデプロイメント・ガイドを参照してください

イメージ化に使用するUSBフラッシュ・ドライブの準備

USBフラッシュ・ドライブを使用して、イメージを新しい計算サーバーにコピーします。

使用するUSBフラッシュ・ドライブを準備するには、次のようにします。

  1. 空のUSBフラッシュ・ドライブをクラスタの動作している計算サーバーに挿入します。
  2. rootユーザーとしてログインします。
  3. computeImageファイルを解凍します。
    # unzip computeImageMaker_release_LINUX.X64_release_date.platform.tar.zip
    
    # tar -xvf computeImageMaker_release_LINUX.X64_release_date.platform.tar
    
  4. イメージをUSBフラッシュ・ドライブ上にロードします。
    # cd dl360
    # ./makeImageMedia.sh -dualboot no
    

    makeImageMedia.shスクリプトにより、情報を要求されます。

  5. 計算サーバーからUSBフラッシュ・ドライブを取り外します。
  6. 動作している計算サーバーから解凍したd1360ディレクトリおよびcomputeImageMakerファイルを削除します。ディレクトリおよびファイルには、約2GBのディスク領域が必要です。

新規計算サーバーへのイメージのコピー

次の手順を実行する前に、障害のあった計算サーバーを新しいサーバーに交換します。「ストレージ・サーバーの追加によるリカバリ・アプライアンス・ラックの拡張」を参照してください。

イメージを交換サーバー上にロードするには、次のようにします。

  1. 交換サーバーのUSBポートにUSBフラッシュ・ドライブを挿入します。

  2. サービス・プロセッサを使用してコンソールにログインし、進捗状況をモニターします。

  3. 電源ボタンを押すか、Oracle ILOMを使用することで、計算サーバーの電源を投入します。

  4. マザーボードを交換した場合:

    1. BIOS中に[F2]を押します

    2. 「BIOS Setup」を選択します

    3. USBフラッシュ・ドライブを最初に設定してから、RAIDコントローラを設定します。

    そうでない場合は、BIOS中に[F8]を押して、ワンタイム起動選択メニューを選択してからUSBフラッシュ・ドライブを選択します。

  5. システムを起動できるようにします。

    システムが起動すると、CELLUSBINSTALLメディアが検出されます。イメージ化プロセスには、2つのフェーズがあります。両方のフェーズを完了してから次のステップに進んでください。

    イメージ化プロセスの1つ目のフェーズでは、古いBIOSまたはファームウェアを識別し、イメージに対応するレベルにコンポーネントをアップグレードします。コンポーネントがアップグレードまたはダウングレードされると、システムは自動的に再起動します。

    イメージ化プロセスの2つ目のフェーズでは、交換計算サーバーの工場出荷時のイメージをインストールします。

  6. システムで要求された場合、USBフラッシュ・ドライブを取り外します。

  7. [Enter]を押してサーバーの電源を切断します。

交換計算サーバーの構成

交換計算サーバーには、ホスト名、IPアドレス、DNSまたはNTP設定がありません。このタスクは、交換計算サーバーの構成方法を示しています。

情報はリカバリ・アプライアンス内のすべての計算サーバーで同じである必要があります。IPアドレスはDNSから取得できます。初期インストールからインストレーション・テンプレートのコピーも取得する必要があります。

交換計算サーバーを構成するには、次のようにします。

  1. 次の情報を組み立てます。
    • ネーム・サーバー

    • 南北アメリカ/シカゴなどのタイムゾーン

    • NTPサーバー

    • 管理ネットワークのIPアドレス情報

    • クライアント・アクセス・ネットワークのIPアドレス情報

    • InfiniBandネットワークのIPアドレス情報

    • 標準的なホスト名

    • デフォルトのゲートウェイ

  2. 交換計算サーバーの電源を投入します。システムが起動すると、構成スクリプトが自動的に実行され、情報が要求されます。
  3. 要求された場合は情報を入力して、設定を確認します。続いて起動プロセスが続行されます。

ノート:

  • 計算サーバーがすべてのネットワーク・インタフェースを使用していない場合は、構成プロセスが停止し、いずれかのネットワーク・インタフェースが切断されているという警告が出されます。検出プロセスを再試行するかどうかの確認を求められます。環境に応じて、yesまたはnoと入力します。

  • 収集ネットワークにボンディングが使用される場合、この時点でデフォルトのアクティブ/パッシブ・モードに設定されます。

クラスタの交換計算サーバーの準備

リカバリ・アプライアンスの初期インストールでは各種ファイルが変更されました。

交換計算サーバー上のファイルを変更するには、次のようにします。

  1. クラスタ内の動作している計算サーバーから、次のファイルの内容をレプリケートします。

    1. /etc/security/limits.confファイルをコピーします。

    2. /etc/hostsファイルの内容をマージします。

    3. /etc/oracle/cell/network-config/cellinit.oraファイルをコピーします。

    4. 交換計算サーバーのBONDIB0インタフェースのIPアドレスでIPアドレスを更新します。

    5. /etc/oracle/cell/network-config/cellip.oraファイルをコピーします。

    6. 10GbEなど、追加ネットワーク要件を構成します。

    7. /etc/modprobe.confファイルをコピーします。

    8. /etc/sysctl.confファイルをコピーします。

    9. 計算サーバーを再起動し、ネットワーク変更を有効にします。

  2. ユーザー名を1つ以上のグループに追加して、交換計算サーバーのOracleソフトウェア所有者を設定します。所有者は通常、oracleユーザーです。

    1. 動作している計算サーバーから現在のグループ情報を取得します。

      # id oracle
      uid=1000(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba),1003(oper),1004(asmdba)
      
    2. groupaddコマンドを使用して、グループ情報を交換計算サーバーに追加します。この例では、前のステップで識別されたグループが追加されます。

      # groupadd –g 1001 oinstall
      # groupadd –g 1002 dba
      # groupadd –g 1003 oper
      # groupadd –g 1004 asmdba
      
    3. 動作している計算サーバーから現在のユーザー情報を取得します。

      # id oracle uid=1000(oracle) gid=1001(oinstall) \
        groups=1001(oinstall),1002(dba),1003(oper),1004(asmdba)
      
    4. ユーザー情報を交換計算サーバーに追加します。この例では、前のステップのグループIDがoracleユーザーIDに追加されます。

      # useradd -u 1000 -g 1001 -G 1001,1002,1003,1004 -m -d /home/oracle -s \
        /bin/bash oracle
      
    5. ORACLE_BASEおよびGrid Infrastructureディレクトリを作成します。この例では、/u01/app/oracleおよび/u01/app/12.1.0/gridが作成されます。

      # mkdir -p /u01/app/oracle
      # mkdir -p /u01/app/12.1.0/grid
      # chown -R oracle:oinstall /u01/app
      
    6. cellip.oraおよびcellinit.oraファイルの所有権を変更します。所有者は通常、oracle:dbaです。

      # chown -R oracle:dba /etc/oracle/cell/network-config
      
    7. リストアされた計算サーバーの安全を確保します。

      $ chmod u+x /opt/oracle.SupportTools/harden_passwords_reset_root_ssh
      $ /opt/oracle.SupportTools/harden_passwords_reset_root_ssh
      

      計算サーバーが再起動します。

    8. rootユーザーとしてログインします。新しいパスワードを要求されたら、他の計算サーバーのrootパスワードと一致するように設定します。

    9. Oracleソフトウェア所有者のパスワードを設定します。所有者は通常、oracleです。

      # passwd oracle
      
  3. oracleアカウントにSSHを設定します。

    1. 交換計算サーバー上のoracleアカウントに変更します。

      # su - oracle
      
    2. Oracleクラスタのサーバーをリストする交換計算サーバーのdcliグループ・ファイルを作成します。

    3. 交換計算サーバーでsetssh-Linux.shスクリプトを実行します。この例ではスクリプトがインタラクティブに実行されます。

      $ /opt/oracle.SupportTools/onecommand/setssh-Linux.sh -s
      

      スクリプトによってサーバーのoracleパスワードが要求されます。-sオプションにより、スクリプトはサイレント・モードで実行されます。

    4. 交換計算サーバー上のoracleユーザーに変更します。

      # su - oracle
      
    5. SSHの同等性を検証します:

      $ dcli -g dbs_group -l oracle date
      
  4. 動作している計算サーバーから交換計算サーバーにカスタム・ログイン・スクリプトを設定またはコピーします。

    $ scp .bash* oracle@replacement_server:. 
    

    前述のコマンドのreplacement_serverは、ra01db01などの新しいサーバーの名前です。

交換計算サーバーへのパッチ・バンドルの適用

オラクル社では、リカバリ・アプライアンス用のソフトウェアのパッチ・バンドルを定期的にリリースしています。動作している計算サーバーにcomputeImageMakerファイルのリリースよりも新しいパッチ・バンドルがある場合、パッチ・バンドルを交換計算サーバーに適用する必要があります。

パッチ・バンドルが適用されたかどうか判断するには、imagehistoryコマンドを使用します。交換計算サーバーの情報を、動作している計算サーバーの情報と比較します。動作しているデータベースのリリースが新しい場合、ストレージ・サーバー・パッチ・バンドルを交換計算サーバーに適用します。

Oracle Grid Infrastructureのクローニング

次の手順では、交換計算サーバーにOracle Grid Infrastructureをクローニングする方法について説明します。コマンドのworking_serverは動作している計算サーバー、replacement_serverは交換計算サーバーです。

Oracle Grid Infrastructureをクローニングするには、次のようにします。

  1. rootとして、クラスタの動作している計算サーバーにログインします。

  2. クラスタ検証ユーティリティ(cluvfy)を使用して、ハードウェアおよびオペレーティング・システムのインストールを検証します。

    $ cluvfy stage -post hwos -n replacement_server,working_server –verbose
    

    レポートの最後にPost-check for hardware and operating system setup was successfulのフレーズが表示されます。

  3. ピア互換性を検証します:

    $ cluvfy comp peer -refnode working_server -n replacement_server  \
      -orainv oinstall -osdba dba | grep -B 3 -A 2 mismatched
    

    次に、出力の例を示します。

    Compatibility check: Available memory [reference node: ra01db02]
    Node Name Status Ref. node status Comment
    ------------ ----------------------- ----------------------- ----------
    ra01db01 31.02GB (3.2527572E7KB) 29.26GB (3.0681252E7KB) mismatched
    Available memory check failed
    Compatibility check: Free disk space for "/tmp" [reference node: ra01db02]
    Node Name Status Ref. node status Comment
    ------------ ----------------------- ---------------------- ----------
    ra01db01 55.52GB (5.8217472E7KB) 51.82GB (5.4340608E7KB) mismatched
    Free disk space check failed
    

    障害が発生したコンポーネントだけが物理メモリー、スワップ領域およびディスク領域に関連している場合は、手順を継続できます。

  4. サーバーを追加するために必要な確認を行います。

    1. GRID_HOME/network/admin/samplesディレクトリの権限が750に設定されていることを確認します。

    2. 計算サーバーの追加を検証します。

      $ cluvfy stage -ignorePrereq -pre nodeadd -n replacement_server \
      -fixup -fixupdir  /home/oracle/fixup.d
       

      障害が発生したコンポーネントだけがスワップ領域に関連している場合は、手順を継続できます。

      次のように、投票ディスクにエラーが発生する場合があります。

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

      このエラーが発生する場合は、次のステップでaddnodeスクリプトの実行時に-ignorePrereqオプションを使用します。

  5. 交換計算サーバーをクラスタに追加します。

    $ cd /u01/app/12.1.0/grid/addnode/
    $ ./addnode.sh -silent "CLUSTER_NEW_NODES={replacement_server}" \
      "CLUSTER_NEW_VIRTUAL_HOSTNAMES={replacement_server-vip}"[-ignorePrereq]
    

    addnodeスクリプトでは、Oracle Universal InstallerによってOracle Clusterwareソフトウェアが交換計算サーバーにコピーされます。次のようなメッセージが表示されます。

    WARNING: A new inventory has been created on one or more nodes in this session.
    However, it has not yet been registered as the central inventory of this
    system. To register the new inventory please run the script at
    '/u01/app/oraInventory/orainstRoot.sh' with root privileges on nodes
    'ra01db01'. If you do not register the inventory, you may not be able to 
    update or patch the products you installed.
    
    The following configuration scripts need to be executed as the "root" user in
    each cluster node:
     
    /u01/app/oraInventory/orainstRoot.sh #On nodes ra01db01
     
    /u01/app/12.1.0/grid/root.sh #On nodes ra01db01
    
  6. 構成スクリプトを実行します。

    1. 端末のウィンドウを開きます。

    2. rootユーザーとしてログインします。

    3. 各クラスタ・サーバーでスクリプトを実行します。

    スクリプトの実行後、次のメッセージが表示されます。

    The Cluster Node Addition of /u01/app/12.1.0/grid was successful.
    Please check '/tmp/silentInstall.log' for more details.
    
  7. orainstRoot.shおよびroot.shスクリプトを実行します。

    # /u01/app/oraInventory/orainstRoot.sh
    Creating the Oracle inventory pointer file (/etc/oraInst.loc)
    Changing permissions of /u01/app/oraInventory.
    Adding read,write permissions for group.
    Removing read,write,execute permissions for world.
    Changing groupname of /u01/app/oraInventory to oinstall.
    The execution of the script is complete.
     
    # /u01/app/12.1.0/grid/root.sh
    

    /u01/app/12.1.0/grid/install/のログ・ファイルで、root.shスクリプトの出力結果を確認します。出力ファイルで、交換した計算サーバーのリスナー・リソースの起動が失敗したことが報告されます。これは予測される出力の例です。

    /u01/app/12.1.0/grid/bin/srvctl start listener -n ra01db01 \
    ...Failed
    /u01/app/12.1.0/grid/perl/bin/perl \
    -I/u01/app/12.1.0/grid/perl/lib \
    -I/u01/app/12.1.0/grid/crs/install \
    /u01/app/12.1.0/grid/crs/install/rootcrs.pl execution failed
    
  8. 「クラスタの障害が発生した計算サーバーの削除」で停止したリスナー・リソースを再有効化します。

    # GRID_HOME/grid/bin/srvctl enable listener -l LISTENER \
      -n replacement_server
    
    # GRID_HOME/grid/bin/srvctl start listener -l LISTENER  \
      -n replacement_server

関連項目:

クローニングの詳細は、Oracle Real Application Clusters管理およびデプロイメント・ガイドを参照してください。

交換計算サーバーへのOracle Databaseホームのクローニング

交換サーバーへOracle Databaseホームをクローニングするには、次のようにします。

  1. Oracle Database ORACLE_HOMEを交換計算サーバーに追加します。
    $ cd /u01/app/oracle/product/12.1.0/db_home/addnode/
    $ ./addnode.sh -silent "CLUSTER_NEW_NODES={replacement_server}" -ignorePrereq
    

    addnodeスクリプトでは、Oracle Universal InstallerによってOracle Databaseソフトウェアが交換計算サーバーにコピーされます。

    WARNING: The following configuration scripts need to be executed as the "root"
    user in each cluster node.
    /u01/app/oracle/product/12.1.0/dbhome_1/root.sh #On nodes ra01db01
    To execute the configuration scripts:
    Open a terminal window.
    Log in as root.
    Run the scripts on each cluster node.
     

    スクリプトの完了後、次のメッセージが表示されます。

    The Cluster Node Addition of /u01/app/oracle/product/12.1.0/dbhome_1 was
    successful.
    Please check '/tmp/silentInstall.log' for more details.
    
  2. 交換計算サーバーでroot.shスクリプトを実行します。
    # /u01/app/oracle/product/12.1.0/dbhome_1/root.sh
     

    スクリプトの出力に/u01/app/oracle/product/12.1.0/dbhome_1/install/root_replacement_server.company.com_date.logファイルを確認します。

  3. インスタンス・パラメータが交換したデータベース・インスタンスに設定されていることを確認します。次に、CLUSTER_INTERCONNECTSパラメータの例を示します。
    SQL> SHOW PARAMETER cluster_interconnects
    
    NAME                                 TYPE        VALUE
    ------------------------------       --------    -------------------------
    cluster_interconnects                string
     
    SQL> ALTER SYSTEM SET cluster_interconnects='192.168.73.90' SCOPE=spfile SID='dbm1';
    
  4. 構成ファイルを検証し、必要に応じて修正します。
    • ORACLE_HOME/dbs/initSID.oraファイルは、Oracle ASM共有ストレージ内のサーバー・パラメータ・ファイル(SPFILE)を示します。

    • ORACLE_HOME/dbディレクトリにコピーされるパスワードは、orapwSIDに変更されています。

  5. データベース・インスタンスを再起動します。