8 Oracle Clusterwareのクローニング

この章では、Oracle Grid Infrastructureホームをクローニングする方法およびクローニングされたホームを使用してクラスタを作成する方法について説明します。この章のクローニング手順を実行するには、サイレント・モードでスクリプトを使用します。クローニング手順は、LinuxおよびUNIXシステムに適用できます。この章の例ではLinuxおよびUNIXのコマンドを使用しますが、通常、クローニングの概念および手順はすべてのプラットフォームに適用されます。

注意:

この章は、次のように構成されたOracle Clusterware 12cインストールをクローニングすることを前提としています。

  • グリッド・ネーミング・サービス(GNS)なし

  • Intelligent Platform Management Interface仕様(IPMI)なし

  • 投票ファイルおよびOracle Cluster Registry(OCR)がOracle Automatic Storage Management(Oracle ASM)に格納されている

  • 単一クライアント・アクセス名(SCAN)はDNSで解決される

この章のトピックは、次のとおりです:

8.1 Oracle Clusterwareのクローニングの概要

クローニングとは、既存のOracle Clusterwareインストールを別の場所にコピーし、その後、コピーしたインストールを新しい環境で動作するよう更新するプロセスです。クローニング元のOracle Grid Infrastructureホームに適用済の個別パッチによる変更は、クローニング後も継承されます。クローニング中には、Oracle Grid Infrastructureホームのインストールで実行された操作を再実行するスクリプトを実行します。

クローニングには、正常にインストールされたOracle Grid Infrastructureホームを使用することが必要です。このホームを、Oracle Grid Infrastructureホームを拡張するスクリプト実装のベースにして、元のGridホームに基づくクラスタを作成します。

手動でのクローニング・スクリプトの作成では、入力を検証する対話形式のチェックを使用せずにスクリプトを準備するため、エラーが発生しやすくなる場合があります。ただし、数十または数百のクラスタに対して単一スクリプトを実行するような場合には、この最初の作業は意味があります。インストールするクラスタが1つのみの場合は、Oracle Universal Installer(OUI)またはOracle Enterprise ManagerのProvisioning Pack機能など、従来の自動化された対話形式のインストール方法を使用してください。

注意:

クローニングは、Provisioning Packに含まれるOracle Enterprise Managerクローニングにかわるものではありません。Oracle Enterprise Managerによるクローニングでは、プロビジョニング・プロセスによってOracleホームの詳細が対話形式で確認されることで、クローニングが単純化されています。対話時の質問では、クローニングされた環境のデプロイ先、Oracle Databaseホームの名前、クラスタ内のノードのリストなどが確認されます。

Oracle Enterprise Manager Grid ControlのProvisioning Pack機能では、ノードおよびクラスタのプロビジョニングを自動化するフレームワークが提供されています。多数のクラスタを持つデータ・センターの場合、既存のクラスタに新規クラスタおよび新規ノードをプロビジョニングするためのクローニング手順を作成する作業は、その労力に見合った価値があります。

次のリストに、クローニングが有効ないくつかの状況を示します。

  • クローニングにより、Oracle Grid Infrastructureホームを1回準備するだけで、多数のホストに同時にデプロイされます。非対話形式のプロセスとして、サイレント・モードでインストールを完了できます。グラフィカル・ユーザー・インタフェース(GUI)のコンソールを使用する必要がなく、必要に応じて、セキュア・シェル(SSH)・ターミナル・セッションからクローニングを実行できます。

  • クローニングにより、すべてのパッチが適用されたインストール(本番、テスト、または開発用インストールのコピー)を1回の手順で作成できます。ベース・インストールを実行してソース・システムにすべてのパッチ・セットとパッチを適用した後は、クローニングにより、それらの個別の手順はすべて単一の手順で実行されます。これにより、クラスタの各ノードですべてのインストール・プロセスを通して行い、インストール、構成およびパッチ適用を個別の手順で実行するのとは、対照的な効果が得られます。

  • クローニングによるOracle Clusterwareのインストールでは、非常に短時間で処理を完了できます。たとえば、3つ以上のノードを持つクラスタにOracle Grid Infrastructureホームをクローニングする場合、必要な時間は、Oracleソフトウェアのインストールにかかる数分間と各ノードにかかる数分間を合わせた時間(合計時間はroot.shスクリプトの実行にかかる時間とほぼ等しい)となります。

  • クローニングでは、複数のクラスタで同一のOracle Clusterwareインストールを正確に繰り返すための確実な方法が提供されます。

クローニングされたインストールは、クローニング元のインストールと同じ動作をします。たとえば、クローニングされたOracle Grid Infrastructureホームは、OUIを使用して削除したり、OPatchを使用してパッチを適用することができます。また、クローニングされたOracle Grid Infrastructureホームを、別のクローニング操作のソースとして使用できます。コマンドラインのクローニング・スクリプトを使用して、テスト用、開発用または本番用のインストールをクローニングしたコピーを作成できます。

多くの場合、デフォルトのクローニング手順で十分です。ただし、カスタム・ポート割当ての指定、またはカスタム設定の保持など、クローニングのいくつかの側面をカスタマイズすることもできます。

たとえば、リスナーのカスタム・ポートを、次のように指定できます。

$ export ORACLE_HOME=/u01/app/12.1.0/grid
$ $ORACLE_HOME/bin/srvctl modify listener -endpoints tcp:12345

クローニング・プロセスでは、クローニング元のOracle Grid Infrastructureホームからクローニング先のOracle Grid Infrastructureホームにすべてのファイルをコピーします。Oracle Grid Infrastructureホームは、ローカル(非共有)ホームまたは共有ホームのどちらの場合でもクローニングできます。したがって、ソース・インスタンスで使用されているファイルの中で、クローニング元のOracle Grid Infrastructureホームのディレクトリ構造の外部に置かれているものがある場合、それはクローニング先にコピーされません。

ソースおよび宛先のバイナリ・ファイルのサイズは異なる場合がありますが、これはクローニング操作の一部としてこれらのファイルが再リンクされており、これら2つの位置のオペレーティング・システムのパッチ・レベルが異なっていることがあるためです。また、いくつかのファイルがソースからコピーされることによって、特にインスタンス化されたファイルはクローン操作の一部としてバックアップされるため、クローン・ホームのファイルの数が増える場合があります。

8.2 Oracle Grid Infrastructureホームをクローニングするための準備

クローニング元のOracle Grid Infrastructureホームでクローニングを準備するには、インストール済のOracle Grid Infrastructureホームのコピーを作成し、別のノードでクローニング手順を実行する際に使用します。次の段階ごとの手順に従って、Oracle Grid Infrastructureホームのコピーを準備します。

8.2.1 手順1: Oracle Clusterwareのインストール

『Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイド』の詳細指示に従って、ソース・ノードで、次の手順を実行します。

  1. Oracle Clusterware 12cをインストールします。このインストールによって、Oracle Cluster Registry(OCR)および投票ファイルがOracle Automatic Storage Management(Oracle ASM)に配置されます。

    注意:

    クラスタ用のOracle Grid Infrastructureをインストールして構成するか、Oracle Clusterwareソフトウェアのみをインストールしてください(ご使用のプラットフォーム固有の『Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイド』を参照)。

    クラスタ用のOracle Grid Infrastructureをインストールして構成した場合は、クローニング手順を実行する前にOracle Clusterwareを停止する必要があります。ソフトウェアのみのインストールを実行する場合は、Oracle Clusterwareを停止する必要はありません。

  2. 必要に応じて、適切なパッチ(Oracle Grid Infrastructureバンドル・パッチなど)をインストールします。
  3. 必要に応じて、1回限りのパッチを適用します。

8.2.2 手順2: 実行中のソフトウェアの停止

クローニング元のOracle Grid Infrastructureホームをコピーする前に、ノードで実行されているサービス、データベース、リスナー、アプリケーション、Oracle ClusterwareおよびOracle ASMインスタンスをすべて停止します。サーバー制御(SRVCTL)ユーティリティを使用してデータベースを停止してから、Oracle Clusterware制御(CRSCTL)ユーティリティを使用して残りのコンポーネントを停止することをお薦めします。

8.2.3 手順3: Oracle Grid Infrastructureホームのコピーの作成

インストールしたOracle Grid Infrastructureホームを作業ホームとして保持するために、クローニング元のOracle Grid Infrastructureホームの全体コピーを作成します。

ヒント:

コピーの作成時には、ファイル名にリリース番号を含めることをお薦めします。

次の方法のいずれかを使用してOracle Grid Infrastructureホームの圧縮コピーを作成します(Grid_homeはすべてのファイルを含む元のノードの元のOracle Grid Infrastructureホームであり、copy_pathは不要なファイルが削除されるコピーされたOracle Grid Infrastructureホームへのディレクトリ・パスです)。

8.2.3.1 方法1: Oracle Grid Infrastructureホームのコピーを作成し、そのコピーから不要なファイルを削除する
  1. ソース・ノードで、Oracle Grid Infrastructureホームのコピーを作成します。インストールしたOracle Grid Infrastructureホームを作業ホームとして保持するために、クローニング元のOracle Grid Infrastructureホームの全体コピーを作成し、そのコピーから不要なファイルを削除します。たとえば、Linuxシステムでは、rootユーザーとしてcpコマンドを実行します。
    # cp -prf Grid_home copy_path
    
  2. コピーから不要なファイルを削除します。

    Oracle Grid Infrastructureホームには、ソース・ノードにのみ関連するファイルが含まれているため、logcrs/initcrfおよびcdataディレクトリのOracle Grid Infrastructureホームのコピーから不要なファイルを削除できます。次に、LinuxおよびUNIXシステムでOracle Grid Infrastructureホームのコピーから不要なファイルを削除する場合に実行するコマンドの例を示します。

    [root@node1 root]# cd copy_path
    [root@node1 grid]# rm -rf log/host_name
    [root@node1 grid]# rm -rf gpnp/host_name
    [root@node1 grid]# find gpnp -type f -exec rm -f {} \;
    [root@node1 grid]# rm -rf cfgtoollogs/*
    [root@node1 grid]# rm -rf crs/init/*
    [root@node1 grid]# rm -rf cdata/*
    [root@node1 grid]# rm -rf crf/*
    [root@node1 grid]# rm -rf network/admin/*.ora
    [root@node1 grid]# rm -rf crs/install/crsconfig_params
    [root@node1 grid]# find . -name '*.ouibak' -exec rm {} \;
    [root@node1 grid]# find . -name '*.ouibak.1' -exec rm {} \;
    [root@node1 grid]# rm -rf root.sh*
    [root@node1 grid]# rm -rf bin/clsecho/*
    [root@node1 grid]# rm -rf rdbms/audit/*
    [root@node1 grid]# rm -rf rdbms/log/*
    [root@node1 grid]# rm -rf inventory/backup/*
  3. LinuxおよびUNIXシステムではtarまたはgzipを使用して、前述のコピー済Oracle Grid Infrastructureホームの圧縮コピーを作成します。使用するツールによって、権限およびファイル・タイムスタンプが保持されることを確認してください。次に例を示します。

    LinuxおよびUNIXシステムの場合:

    [root@node1 root]# cd copy_path
    [root@node1 grid]# tar -zcvpf /copy_path/gridHome.tgz

    前述の例で、cdコマンドは、この手順の最初の2つの手順で作成したOracle Grid Infrastructureのホームのコピー(不要なファイルは削除済み)に場所を変更し、tarコマンドはgridHome.tgzという名前のファイルを作成します。tarコマンドで、copy_pathは、Oracle Grid Infrastructureホームのコピーの場所を表します。

    AIXまたはHPUXシステムの場合は、次のコマンドを発行します。

    uncompress gridHome.tar.Z
    tar xvf gridHome.tar
    

    Windowsシステムで、WinZipを使用してzipファイルを作成します。

8.2.3.2 方法2: -Xオプションを使用してOracle Grid Infrastructureホームの圧縮コピーを作成する
  1. Oracle Grid Infrastructureホーム内の不要なファイルを示すファイルを作成します。たとえば、excludeFileListというファイルに、アスタリスク(*)のワイルドカードを使用して次のファイル名を示します。
    Grid_home/host_name
    Grid_home/log/host_name
    Grid_home/gpnp/*
    Grid_home/bin/clsecho/*
    Grid_home/crs/init/*
    Grid_home/cdata/*
    Grid_home/crf/*
    Grid_home/network/admin/*.ora
    Grid_home/root.sh*
    Grid_home/cfgtoollogs/*
    Grid_home/crs/install/crsconfig_params
    Grid_home/rdbms/audit/*
    Grid_home/rdbms/log/*
    Grid_home/inventory/backup/*
    *.ouibak
    *.ouibak1
    
  2. tarコマンドまたはWinzipを使用して、Oracle Grid Infrastructureホームの圧縮コピーを作成します。たとえば、LinuxおよびUNIXシステムでは、次のコマンドを実行して、クローニング元のOracle Grid Infrastructureホームをアーカイブおよび圧縮します。
    tar cpfX - excludeFileList Grid_home | compress -fv > temp_dir/gridHome.tar.Z

    注意:

    Oracle Grid Infrastructureホームをコピーおよび圧縮するために、jarユーティリティは使用しないでください。

8.3 Oracle Clusterwareのクローニングによるクラスタの作成

この項では、正常にインストールされたOracle Clusterware環境をクローニングし、それをクローニング先のクラスタ上のノードにコピーすることにより、クラスタを作成する方法を説明します。この項の手順では、Linux、UNIXおよびWindowsシステムでクローニングを使用する方法について説明します。クローニングでクラスタを正常に作成した後、OCRおよび投票ファイルは2つのクラスタ間で共有されません。

たとえば、クローニングを使用して、正常にインストールされたOracle Clusterware環境を複製し、クラスタを作成することができます。図8-1では、クローニング手順の最終結果を示しており、ここでは、ノード1上のOracle Grid Infrastructureホームがクラスタ2上のノード2およびノード3にクローニングされ、クラスタ2が新規の2ノード・クラスタとして作成されています。

図8-1 クローニングによるOracle Clusterware環境の作成

図8-1の説明が続きます
「図8-1 クローニングによるOracle Clusterware環境の作成」の説明

クローニングでクラスタを作成する手順は次のとおりです。

8.3.1 手順1: 新規クラスタ・ノードの準備

各宛先ノードで、次のインストール前の手順を実行します。

  • カーネル・パラメータの指定

  • Oracle Clusterwareデバイス用のブロック・デバイスの構成

  • ブロック・デバイスの権限が正しく設定されていることの確認

  • /etc/hostsファイル内のすべての名前に対する短い非ドメイン修飾の名前の使用

  • pingコマンドによる、インターコネクト・インタフェースが到達可能かどうかのテスト

  • pingコマンドによる、クローニング・プロセスの開始時にVIPアドレスがアクティブでないことの検証(VIPアドレスのpingコマンドは失敗する必要があります)

  • ベンダーのクラスタウェアを実行しているAIXシステムおよびSolaris x86-64-bitシステムでクラスタにノードを追加する場合は、クラスタにノードを追加する前に、ノードでrootpre.shスクリプト(DVDからOracle Clusterwareをインストールした場合はマウント・ポイント、ソフトウェアをダウンロードした場合はtarファイルを解凍したディレクトリにあります)を実行する必要があります。

  • CVUの実行によるハードウェアおよびオペレーティング・システム環境の検証

インストール前の全チェックリストは、ご使用のプラットフォーム固有のOracle Clusterwareインストレーション・ガイドを参照してください。

注意:

従来のインストール方法とは異なり、クローニング・プロセスでは、準備フェーズ中に入力が検証されません。(これと比較して、OUIを使用した従来のインストール方法では、インタビュー・フェーズ中に様々なチェックが実行されます。)したがって、ハードウェア設定または準備フェーズ中にミスをすると、クローニング・インストールは失敗します。

8.3.2 手順2: 宛先ノードでのOracle Grid Infrastructureホームのデプロイ

この項で説明しているクローニング手順を開始する前に、Oracle Grid Infrastructureホームのコピーを作成するための必須タスクを完了していることを確認してください(「Oracle Grid Infrastructureホームをクローニングするための準備」を参照)。

  1. 各宛先ノードに、「手順3: Oracle Grid Infrastructureホームのコピーの作成」で作成したOracle Grid Infrastructureホームのコピーを次のようにデプロイします。

    Oracle Grid Infrastructureホームが共有ホームでない場合は、Oracle Grid Infrastructureホームのコピーを宛先クラスタの各ノードにリストアします。ソース・ノードのOracle Grid Infrastructureホームで使用されているディレクトリ構造と同じディレクトリ構造を使用します。Oracle Grid Infrastructureホームが共有ホームの場合、この手順はスキップします。

    たとえば、LinuxまたはUNIXシステムで、次のようなコマンドを実行します。

    [root@node1 root]# mkdir -p location_of_the_copy_of_the_Grid_home
    [root@node1 root]# cd location_of_the_copy_of_the_Grid_home
    [root@node1 crs]# tar -zxvf /gridHome.tgz

    この例で、location_of_the_copy_of_the_Grid_homeは、/u01/app/12.1.0/gridなどのOracle Grid Infrastructureホームのインストール先のディレクトリ構造を表します。クローニング・プロセスでは、Gridホームの場所を変更できます。

    Windowsシステムの宛先ノードで、Oracle Grid Infrastructureホームを解凍します。ディレクトリ構造は、Oracle Grid Infrastructureホームが存在するソース・ノードのディレクトリ構造と同じにします。

  2. Oracle Grid Infrastructureホームから不要なファイルを削除していない場合は、「方法2: -Xオプションを使用してOracle Grid Infrastructureホームの圧縮コピーを作成する」の手順2を繰り返します。
  3. 宛先ノードでOracle Inventory用のディレクトリを作成し、必要に応じてOracle Grid Infrastructureホームのすべてのファイルの所有権をOracle Grid Infrastructureインストール所有者およびOracle Inventory(oinstall権限)グループによって所有されるように変更します。次の例では、Oracle Grid Infrastructureインストール所有者がoracleで、Oracle Inventoryグループがoinstallの場合にLinuxシステムでこれを行うコマンドを示します。
    [root@node1 crs]# chown -R oracle:oinstall /u01/app

    Gridホームで前述のコマンドを実行すると、Oracleバイナリからsetuidsetgidの情報が消去されます。想定どおり、このコマンドによって、次のバイナリからsetuidも消去されます。

    Grid_home/bin/extjob
    Grid_home/bin/jssu
    Grid_home/bin/oradism

    setuid情報は、クローニング手順の最後にroot.shスクリプトを実行した後で適切に設定されます。

  4. 処理を続行する前に、ソースおよび宛先の両方のノードのGrid_homeディレクトリからすべてのOracleネットワーク・ファイルを削除することも重要です。

8.3.3 手順3: 各宛先ノードでのclone.plスクリプトの実行

新しいOracle Clusterware環境を設定する場合、clone.plスクリプトではいくつかの設定値の指定が必要となります。

変数の値を指定するには、clone.plスクリプトの実行時にコマンドライン上で入力値を指定するか、またはファイルを作成してそこでクローン変数に値を割り当てるかのいずれかの方法があります。次の説明では、これらの方法を示します。

注意:

clone.plを実行した後、スクリプトによりorainstRoot.shおよびroot.shを実行するプロンプトが表示されます。orainstRoot.shのみを実行し、「手順4: 構成ウィザードの起動」に進んでください。この構成ウィザードにより、root.shを実行するプロンプトが表示されます。

8.3.3.1 コマンドライン上でのclone.plスクリプトの入力値の指定

Oracle Grid Infrastructureホームが共有ホームでない場合は、各宛先ノードのGrid_home/clone/binディレクトリに移動して、clone.plスクリプトを実行します(これによって、Oracle Clusterwareの主要なクローニング・タスクが実行されます)。

スクリプトを実行するには、複数のパラメータへの入力が必要です。次の表に、clone.plスクリプト・パラメータを示します。

表8-1 clone.plスクリプトのパラメータ

パラメータ 説明
ORACLE_BASE=ORACLE_BASE

クローニング元のOracleベースの完全パス。無効なパスを指定すると、スクリプトは終了します。このパラメータは必須です。

ORACLE_HOME=GRID_HOME

クローニングするためのOracle Grid Infrastructureホームへの完全なパスです。無効なパスを指定すると、スクリプトは終了します。このパラメータは必須です。

[ORACLE_HOME_NAME= Oracle_home_name | -defaultHomeName]

クローニング元のホームのOracleホーム名。必要に応じて、-defaultHomeNameフラグを指定できます。このパラメータは必須です。

[ORACLE_HOME_USER= Oracle_home_user_name]

WindowsでのOracleホーム・ユーザー。Oracle Databaseソフトウェアのクローニングを実行する際にこのパラメータを渡すことをお薦めします。このパラメータは省略可能です。

INVENTORY_LOCATION= location_of_inventory

Oracleインベントリの場所。

OSDBA_GROUP= OSDBA_privileged_group

OSDBA権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。デフォルト値を必要としない場合、このパラメータはオプションです。

"CLUSTER_ NODES={node_ name,node_ name,...}"

この新しいクラスタに含まれるノードの短縮名のカンマ区切りリスト(空白なし)。

データベース・ホームをクローニングする場合にのみ次のことが適用されます。

  • Oracle Flex Cluster構成のハブ・ノードでclone.plを実行する場合、このリストには、クラスタのすべてのハブ・ノードを含める必要があります。

  • Oracle Flex Cluster構成のリーフ・ノードでclone.plを実行する場合、ローカル・ホスト名のみを指定する必要があります。

注意: このパラメータは、Oracle Grid Infrastructure 12c リリース2 (12.2)以上では使用できません。

"LOCAL_NODE=node_name"

clone.plを実行するノードの短縮名。

CRS=TRUE

このパラメータは、Oracle Universal Installerインベントリでこのプロパティを設定するために必要です。

OSASM_GROUP= OSASM_privileged_group

OSASM権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。デフォルト値を必要としない場合、このパラメータはオプションです。

clone.plを実行する場合、オペレーティング・システム・グループのパラメータを指定しないと、スクリプトはソース・ホームのオペレーティング・システム・グループ値を使用します。

OSOPER_GROUP= OSOPER_privileged_group

OSOPER権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。デフォルト値を必要としない場合、このパラメータはオプションです。

-debug

デバッグ・モードでclone.plスクリプトを実行するにはこのオプションを指定します。

-help

このオプションは、clone.plスクリプトのヘルプを表示する場合に指定します。

たとえば、LinuxおよびUNIXシステムで次のように指定します。

$ perl clone.pl -silent ORACLE_BASE=/u01/app/oracle ORACLE_HOME=
/u01/app/12.2/grid ORACLE_HOME_NAME=OraHome1Grid
INVENTORY_LOCATION=/u01/app/oraInventory LOCAL_NODE=node1 CRS=TRUE

Windowsシステムの場合:

C:\>perl clone.pl ORACLE_BASE=D:\u01\app\grid ORACLE_HOME=D:\u01\app\grid\12.2
ORACLE_HOME_NAME=OraHome1Grid ORACLE_HOME_USER=Oracle_home_user_name
"LOCAL_NODE=node1" CRS=TRUE

Windowsプラットフォームの場合は、他のすべてのノードで、追加の引数(PERFORM_PARTITION_TASKS=FALSE)を指定して同じコマンドを実行します。

次に例を示します。

C:\>perl clone.pl ORACLE_BASE=D:\u01\app\grid ORACLE_HOME=D:\u01\app\grid\12.2
ORACLE_HOME_NAME=OraHome1Grid ORACLE_HOME_USER=Oracle_home_user_name 
"LOCAL_NODE=node1" CRS=TRUE PERFORM_PARTITION_TASKS=FALSE

前述の例に含まれている様々なパラメータの詳細は、前述の表を参照してください。

Oracle Grid Infrastructureホームが共有ホームの場合は、この手順のコマンド例に-cfsオプションを追加し、クラスタ・ファイル・システムの完全なパス位置を指定します。

8.3.3.2 ファイル内でのclone.plスクリプトの入力値の指定

clone.plスクリプトは取得したパラメータの値に依存するため、括弧、一重引用符および二重引用符は正確に使用する必要があります。エラーの発生を回避するために、start.shスクリプトに類似したファイルを作成(例8-1を参照)して、そこでclone.plスクリプトに対する環境変数およびクローニング・パラメータを指定できます。

例8-1は、clone.plスクリプトをコールするstart.shというサンプル・スクリプトからの抜粋を示しており、例はcrsclusterというクラスタ用に構成されています。Oracle Clusterwareをインストールしたオペレーティング・システム・ユーザーとしてスクリプトを実行します。

注意:

Solarisシステムでは、hostnameの後の-sはありません。

start.shスクリプトでは、表8-2に示すように、いくつかの環境変数およびクローニング・パラメータが設定されます。表8-2に、環境変数E01E02E03E04(例8-1では太字でしめされている)、およびC01およびC02を示します。

表8-2 clone.plスクリプトに渡される環境変数

記号 変数 説明

E01

ORACLE_BASE

Oracleベース・ディレクトリの場所。

E02

ORACLE_HOME

Oracle Grid Infrastructureホームの場所。このディレクトリの場所は存在している必要があり、Oracleオペレーティング・システム・グループのOINSTALLによって所有されている必要があります。

E03

ORACLE_HOME_NAME

Oracle Grid Infrastructureホームの名前。Oracleインベントリに格納されています。

E04

INVENTORY_LOCATION

Oracleインベントリの場所。このディレクトリの場所は存在している必要があり、最初にOracleオペレーティング・システム・グループのOINSTALLによって所有されている必要があります。

C01

CLUSTER_NODES

クラスタ内のノードの短縮名のカンマ区切りリスト。

C02

LOCAL_NODE

ローカル・ノードの短縮名。

例8-1 Oracle Clusterwareをクローニングするstart.shスクリプトの抜粋

#!/bin/sh
ORACLE_BASE=/u01/app/oracle
GRID_HOME=/u01/app/12.1/grid
THIS_NODE=`hostname -s`

E01=ORACLE_BASE=${ORACLE_BASE}
E02=ORACLE_HOME=${GRID_HOME}
E03=ORACLE_HOME_NAME=OraGridHome1
E04=INVENTORY_LOCATION=${ORACLE_BASE}/../oraInventory

#C00="-debug"
C01="CLUSTER_NODES={node1,node2}"
C02="LOCAL_NODE=$THIS_NODE"

perl ${GRID_HOME}/clone/bin/clone.pl -silent $E01 $E02 $E03 $E04 $C01 $C02 CRS=TRUE

8.3.4 手順4: 構成ウィザードの起動

構成ウィザードでは、crsconfig_paramsファイルを簡単に準備することができます。また、(rootcrs.plスクリプトをコールする)root.shスクリプトを実行するように求められ、Oracleバイナリの再リンクとクラスタ検証が実行されます。

次のように、構成ウィザードを起動します。

Linux/UNIXの場合:

$ Oracle_home/crs/config/config.sh

Windowsの場合:

C:\>Oracle_home\crs\config\config.bat

オプションで、次のようにレスポンス・ファイルを指定して、構成ウィザードを暗黙的に実行できます。

$ Oracle_home/crs/config/config.sh -silent -responseFile file_name

Windowsの場合:

C:\>Oracle_home\crs\config\config.bat -silent -responseFile file_name

関連項目:

レスポンス・ファイルの準備の詳細は、お使いのプラットフォームの『Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイド』を参照してください

8.4 クローニングを使用したクラスタへのノードの追加

また、クローニングを使用してクラスタにノードを追加することもできます。

図8-2では、クローニング手順の最終結果を示しており、ここでは、ノード1上のOracle Grid Infrastructureホームが同じクラスタ上のノード2にクローニングされ、クラスタ2が2ノード・クラスタとして作成されています。クラスタへ新しく追加されたノードは、同じOCRおよび投票ファイルを共有します。

図8-2 クラスタにノードを追加するためのクローニング

図8-2の説明が続きます
「図8-2 クラスタにノードを追加するためのクローニング」の説明

図8-2を例とし、次の手順では、クローニングを使用してクラスタへノードを追加する方法を説明します。この手順では、最初にノード1を作成するために使用したイメージ(クローン)をノード2にコピーします。

手順1: 新規クラスタ・ノードの準備で説明されているように、ノード2を準備します。

  1. 手順2: 宛先ノードでのOracle Grid Infrastructureホームのデプロイで説明されているように、ノード2でOracle Grid Infrastructureホームをデプロイします。

    tarユーティリティを使用してノード1でOracle Grid Infrastructureホームのアーカイブを作成し、それをノード2にコピーします。ノード1のOracle Grid Infrastructureホームの場所が$ORACLE_HOMEである場合は、これと同じディレクトリをノード2のコピー先として使用する必要があります。

  2. ノード2のGrid_home/clone/binディレクトリに格納されているclone.plスクリプトを実行します。

    関連項目:

    clone.plスクリプトで使用されるパラメータの詳細は、表8-1を参照してください。

    次の例は、LinuxまたはUNIXシステムの場合です。

    $ perl clone.pl ORACLE_HOME=/u01/app/12.1/grid ORACLE_HOME_NAME=OraHome1Grid
      ORACLE_BASE=/u01/app/oracle "'CLUSTER_NODES={node1, node2}'"
      "'LOCAL_NODE=node2'" CRS=TRUE INVENTORY_LOCATION=/u01/app/oraInventory
    

    root.shの実行を求めるプロンプトが表示されたら、そのプロンプトを無視して、次の手順に進みます。

    次の例は、Windowsシステムの場合です。

    C:\>perl clone.pl ORACLE_BASE=D:\u01\app\grid ORACLE_HOME=D:\u01\app\grid\12.1.0
      ORACLE_HOME_NAME=OraHome1Grid '"CLUSTER_NODES={node1,node2}"'
      '"LOCAL_NODE=node2"' CRS=TRUE

    注意:

    前述のコマンドでは、ノードをクローニングしてノードを追加するときに、ORACLE_HOME_NAMEが必要です。ノードのレジストリからクローニングしているノードの正確な値は、次のように取得できます。

    HKEY_LOCAL_MACHINE\SOFTWARE\oracle\KEY_OraCRs12c_home1

    ORACLE_HOME_NAMEパラメータ・キーを探して値を取得します。前述のコマンドのORACLE_HOME_NAMEパラメータの値が、クローニングするノードの値と一致しない場合、新しいノードを追加すると失敗します。

  3. この手順はWindowsには適用されません。

    ノード2の中央インベントリ・ディレクトリで、rootとしてorainstRoot.shスクリプトを実行します。このスクリプトは、/etc/oraInst.locディレクトリに中央インベントリの場所を移入します。次に例を示します。

    [root@node2 root]# /opt/oracle/oraInventory/orainstRoot.sh
    

    複数の宛先ノードで同時にスクリプトを実行することができます。

  4. 次のように、ノード1のGrid_home/addnodeディレクトリに格納されているaddnode.sh(Windowsではaddnode.bat)スクリプトを実行します。
    $ addnode.sh -silent -noCopy "CLUSTER_NEW_NODES={node2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node2-vip}"
        "CLUSTER_NEW_NODE_ROLES={HUB}"

    注意:

    • ノード2ではclone.plスクリプトをすでに実行してあるため、この手順では、ノードでインベントリを更新し、ローカル・ノードでスクリプトをインスタンス化するのみです。

    • addnode.shスクリプトで-noCopyオプションを使用する場合、パスワード・ファイルのコピーはノード2に存在しない可能性があり、この場合、ノード2に正しいパスワード・ファイルをコピーする必要があります。

    • addnode.shスクリプトは、cluvfy stage -pre nodeadd検証を実行します。

    • 追加するノードがハブ・ノードかリーフ・ノードであるかをOracle Flex Clusterで示すには、CLUSTER_NEW_NODE_ROLESパラメータを使用します。

    次のように、複数のノードを追加できます。

    $ addnode.sh -silent -noCopy "CLUSTER_NEW_NODES={node2,node3,node4}"
      "CLUSTER_NEW_VIRTUAL_HOSTNAMES={node2-vip,node3-vip,}"
      "CLUSTER_NEW_NODE_ROLES={HUB,HUB,LEAF}"
    

    前述の構文例で、ノード4はリーフ・ノードとして指定されているため、VIPが含まれている必要はありません。

  5. 次のファイルをaddnode.shを実行したノード1からノード2へコピーします。
    Grid_home/crs/install/crsconfig_addparams
    Grid_home/crs/install/crsconfig_params
    Grid_home/gpnp
  6. ノード2で、Grid_home/root.shスクリプトを実行します。

    注意:

    • root.shまたはgridconfig.batスクリプトを実行する前に、すべてのデータベース・ホームを展開したことを確認します。

    • この例のクラスタのノードは2つのみです。クラスタに複数のノードを追加する場合、すべてのノードでroot.shを同時に実行することができます。

    次の例はLinuxまたはUNIXシステム用の例です。ノード2で、次のコマンドを実行します。

    [root@node2 root]# Grid_home/root.sh
    

    root.shスクリプトは、Oracle Cluster Registry (OCR)に仮想IP (VIP)リソースを自動的に構成します。

    Windowsでは、ノード2で次のコマンドを実行します。

    C:\>Grid_home\crs\config\gridconfig.bat
    
  7. ノード1で次のクラスタ検証ユーティリティ(CVU)・コマンドを実行します。
    $ cluvfy stage -post nodeadd -n destination_node_name [-verbose]

8.5 クローニング時に生成されたログ・ファイルの検索および表示

クローニング・スクリプトは、それぞれがログ・ファイルを生成できる複数のツールを実行します。clone.plスクリプトの実行が終了した後、これらのログ・ファイルを参照して、クローニング手順のステータスに関する詳細情報を入手することができます。表8-3では、クローニング時に生成される、診断に重要なログ・ファイルを示します。

注意:

表8-3Central_inventoryは、Oracle Inventoryディレクトリを表します。

表8-3 クローニングのログ・ファイルおよび説明

ログ・ファイルの名前および場所 説明
Central_inventory/logs/cloneActions/timestamp.log

クローニングのOUI部分で行われたアクションの詳細ログが含まれます。

Central_inventory/logs/oraInstall/timestamp.err

OUIの実行中に発生したエラーに関する情報が含まれます。

Central_inventory/logs/oraInstall/timestamp.out

その他の情報が含まれます。

表8-4は、様々なプラットフォーム用のOracle Inventoryディレクトリの場所を示しています。

表8-4 Oracleインベントリ・ディレクトリの位置の確認

システムのタイプ Oracleインベントリ・ディレクトリの位置

LinuxおよびIBM AIXを除くすべてのUNIXコンピュータ

/var/opt/oracle/oraInst.loc

IBM AIXおよびLinux

/etc/oraInst.loc

Windows

C:\Program Files\Oracle\Inventory