9 新規クラスタのノードへのOracle RACのクローニング

この章では、LinuxおよびUNIXシステムで、Oracle Real Application Clusters(Oracle RAC)データベース・ホームを新規クラスタのノードにクローニングする方法について説明します。

この章では、スクリプトを使用して実装する非対話式のクローニング技術について説明します。この章で説明するクローニング技術は、複数の同時クラスタ・インストールを実行する場合に最適です。スクリプトの作成は手動プロセスであり、間違いが発生する可能性があります。1つのクラスタのみをインストールする場合は、Oracle Universal InstallerやOracle Enterprise ManagerのProvisioning Pack機能などの従来の自動化された対話式のインストール方法を使用してください。

注意:

クローニングは、Provisioning Packに含まれるOracle Enterprise Managerクローニングにかわるものではありません。Oracle Enterprise Managerクローニングの間、プロビジョニング・プロセスでは、Oracleホームに関する詳細(クローニングのデプロイ先の位置、Oracle Databaseホームの名前、クラスタ内のノードのリストなど)が対話式で確認されます。

Oracle Enterprise Manager Cloud ControlのProvisioning Pack機能のフレームワークによって、新規ノードおよびクラスタのプロビジョニングを簡単に自動化できます。多数のOracle RACクラスタを持つデータ・センターの場合、既存のクラスタへの新規クラスタおよび新規ノードのプロビジョニングを簡素化するクローニング手順を作成しておくと有効です。

この章の内容は次のとおりです。

9.1 Oracle RACのクローニングの概要

クローニングとは、既存のOracle RACインストールを別の位置にコピーし、コピーしたインストールを新しい環境で動作するように更新するプロセスのことです。ソースOracleホームで適用された1回限りのパッチによって行われた変更は、クローニング操作後も存在します。ソース・パスと宛先パス(クローニング対象のホスト)は同じである必要はありません。

クローニングは、次のような状況で役立ちます。

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

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

  • クローニングによるOracle RACのインストールは、非常に迅速なプロセスです。たとえば、3つ以上のノードの新規クラスタにOracleホームをクローニングする場合、Oracleベース・ソフトウェアのインストールに数分と各ノードに対して数分ずつ必要となります(root.shスクリプトの実行に要する時間とほぼ同じ)。

クローン・インストールは、ソース・インストールと同様に動作します。たとえば、クローンOracleホームは、Oracle Universal Installerを使用して削除したり、OPatchを使用してパッチを適用することができます。また、クローンOracleホームを別のクローニング操作のソースとして使用することもできます。コマンドラインのクローニング・スクリプトを使用して、テスト用、開発用または本番用のインストールをクローニングしたコピーを作成できます。デフォルトのクローニング手順は、ほとんどの使用例に適しています。ただし、カスタム・ポート割当ての指定やカスタム設定の保存など、クローニングの様々な側面をカスタマイズすることもできます。

クローニング・プロセスでは、ソースOracleホームから宛先Oracleホームにすべてのファイルがコピーされます。このため、ソースOracleホームのディレクトリ構造外にあるソース・インスタンスによって使用されるすべてのファイルは、宛先位置にコピーされません。

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

9.2 Oracle RACのクローニングの準備

この概要を使用して、Oracle RACのクローニングに使用する手順について理解してください。

準備フェーズでは、Oracleホームのコピーを作成し、次にそのコピーを使用して1つ以上のノードでクローニング手順を実行します。Oracle Clusterwareもインストールします。

Oracle RACのインストール

ご使用のプラットフォーム用の『Oracle Real Application Clustersインストレーション・ガイド』の詳細な手順に従って、Oracle RACソフトウェアおよびパッチをインストールします。

  1. Oracle RACをインストールし、ソフトウェアのみインストール・オプションを選択します。

  2. リリースに必要なレベル(12.1.0.nなど)のパッチを適用します。

  3. 必要に応じて、1回限りのパッチを適用します。

ソース・ホームのバックアップの作成

Oracle RACホームのコピーを作成します。このファイルを使用して、クラスタ内の各ノードにOracle RACホームをコピーします。

バックアップ(tar)ファイルを作成する場合は、ファイルの名前にリリース番号を含めることをお薦めします。次に例を示します。

# cd /opt/oracle/product/12c/db_1
# tar –zcvf /pathname/db1120.tgz .

Oracle Clusterwareのインストールおよび起動

クローニングを使用してOracle RACホームを作成する前に、クローニングされたOracle RACホームをコピーするノードにOracle Clusterwareをインストールし、起動しておく必要があります。つまり、元のノードでOracle ClusterwareとOracle RACソフトウェア・コンポーネントをインストールしたときと同じ順序で、ソース・クラスタからターゲット・クラスタのノードにクローニングしたOracle RACホームを構成します。

9.3 クラスタのノードへのOracle RACのクローニングのデプロイ

「Oracle RACのクローニングの準備」の項で説明した前提条件のタスクを完了した後、クローニングしたOracleホームをデプロイできます。

次のように、Oracle RACデータベース・ホームをクラスタにデプロイします。

  1. ご使用のプラットフォームに固有のOracle RACインストール・ガイドの説明に従い、次のようなOracle RACのインストール前のタスクを実行して新しいクラスタ・ノードを準備します。

    • カーネル・パラメータを指定します。

    • Oracle Clusterwareがアクティブであることを確認します。

    • Oracle ASMがアクティブであり、少なくとも1つのOracle ASMディスク・グループが存在し、マウント済であることを確認します。

  2. 次のように、Oracle RACデータベース・ソフトウェアをデプロイします。

    1. Oracleホームのクローンをすべてのノードにコピーします。次に例を示します。

      [root@node1 root]# mkdir -p /opt/oracle/product/12c/db
      [root@node1 root]# cd /opt/oracle/product/12c/db
      [root@node1 db]# tar –zxvf /path_name/db1120.tgz

      ホームの位置とpath_nameの指定では、ホームの位置を、tarの作成に使用したソース・ホームと同じディレクトリ・パスにすることも、異なるディレクトリ・パスにすることもできます。

    2. oracleユーザーまたはoinstallグループ(あるいはその両方)が、ソース・ノードと宛先ノード間で異なる場合は、次のように、Oracle Inventoryファイルの所有権を変更します。

      [root@node1]# chown -R oracle:oinstall /opt/oracle/product/12c/db

      Oracle RACホームで前述のコマンドを実行すると、Oracleバイナリからsetuidsetgidの情報が消去されます。

      注意:

      この手順は、各クラスタ・ノードでclone.plスクリプトおよび$ORACLE_HOME/root.shスクリプトを実行する手順3および4と同時に実行できます。

  3. 次のように、主なOracle RACクローニング・タスクを実行するclone.plスクリプトを各ノードで実行します。

    1. 表9-2表9-3に示すように、start.shスクリプトに環境変数とクローニング・パラメータを指定します。clone.plスクリプトでは、渡されるパラメータが厳密に識別されるため、括弧、一重引用符および二重引用符を正確に使用する必要があります。

    2. oracleまたはOracle RACソフトウェアを所有するユーザーとしてスクリプトを実行します。

    次の表に、clone.plスクリプト・パラメータとその説明を示します。

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

    パラメータ 説明
    ORACLE_HOME=Oracle_home

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

    ORACLE_BASE=ORACLE_BASE

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

    ORACLE_HOME_NAME= Oracle_home_name | -defaultHomeName

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

    ORACLE_HOME_USER=Oracle_home_user

    Windowsサービス用のOracleホーム・ユーザー。このパラメータはWindowsにのみ適用でき、オプションです。

    OSDBA_GROUP=group_name

    OSDBA権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    OSOPER_GROUP=group_name

    OSOPER権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    OSASM_GROUP=group_name

    OSASM権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    OSBACKUPDBA_GROUP=group_name

    OSBACKUPDBA権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    OSDGDBA_GROUP=group_name

    OSDGDBA権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    OSKMDBA_GROUP=group_name

    OSKMDBA権限が付与されたグループとして使用するオペレーティング・システム・グループを指定します。このパラメータは省略可能です。

    -debug

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

    -help

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

    次の例に、clone.plスクリプトをコールするstart.shスクリプトからの抜粋を示します。

    ORACLE_BASE=/opt/oracle
    ORACLE_HOME=/opt/oracle/product/12c/db
    cd $ORACLE_HOME/clone
    THISNODE='host_name'
    
    E01=ORACLE_HOME=/opt/oracle/product/12c/db
    E02=ORACLE_HOME_NAME=OraDBRAC
    E03=ORACLE_BASE=/opt/oracle
    C01="-O CLUSTER_NODES={node1,node2}"
    C02="-O LOCAL_NODE=$THISNODE"
    
    perl $ORACLE_HOME/clone/bin/clone.pl $E01 $E02 $E03 $C01 $C02

    次の表に、前の例に太字で示されている環境変数E01、E02およびE03とその説明を示します。

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

    記号 変数 説明

    E01

    ORACLE_HOME

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

    E02

    ORACLE_HOME_NAME

    Oracle RACデータベースのOracleホームの名前。Oracleインベントリに格納されています。

    E03

    ORACLE_BASE

    Oracleベース・ディレクトリの位置。

    次の表に、前の例に太字で示されているクローニング・パラメータC01およびC02とその説明を示します。

    表9-3 clone.plスクリプトに渡されるクローニング・パラメータ。

    変数 名前 パラメータ 説明

    C01

    クラスタ・ノード

    CLUSTER_NODES

    クラスタ内のノードのリストを表示します。

    C02

    ローカル・ノード

    LOCAL_NODE

    ローカル・ノードの名前。

    次の例に、ユーザーが作成する必要があり、clone.plスクリプトをコールするstart.batスクリプトからの抜粋を示します。

    set ORACLE_home=C:\oracle\product\12c\db1
    cd %ORACLE_home%\clone\bin
    set THISNODE=%hostname%
    set E01=ORACLE_HOME=%ORACLE_home%
    set E02=ORACLE_HOME_NAME=OraDBRAC
    set E03=ORACLE_BASE=Oracle_Base
    set C01="CLUSTER_NODES={node1,node2}"
    set C02="-O LOCAL_NODE=%THISNODE%"
    perl clone.pl %E01% %E02% %E03% %C01% %C02%
  4. 注意:

    この手順は、LinuxおよびUNIXのインストールに対してのみ実行します。

    ノードでclone.plプロシージャが完了した後、すぐにrootオペレーティング・システム・ユーザーとして$ORACLE_HOME/root.shを実行します。

    [root@node1 root]# /opt/oracle/product/12c/db/root.sh -silent

    各ノードでスクリプトを同時に実行できます。

    [root@node2 root]# /opt/oracle/product/12c/db/root.sh -silent

    各ノードでスクリプトが完了していることを確認し、次の手順に進みます。

  5. 注意:

    すべてのノードのOracle RACインスタンスを作成する場合、クラスタの1つのノードでDBCAを実行するだけで済みます。

    この手順では、DBCAをサイレント・モードで実行し、レスポンス・ファイルに入力してOracle RACインスタンスを作成する方法を示します。

    次の例では、ERIという名前のOracle RACデータベースを各ノードで作成し、各ノードにデータベース・インスタンスを作成し、そのインスタンスをOCRに登録し、DATAと呼ばれるOracle ASMディスク・グループにデータベース・ファイルを作成し、サンプル・スキーマを作成します。また、SYSSYSTEMSYSMANおよびDBSNMPパスワードをpassword(各アカウントのパスワード)に設定します。

    [oracle@node1 oracle]$ export ORACLE_HOME=/opt/oracle/product/12c/db
    [oracle@node1 oracle]$ cd $ORACLE_HOME/bin/
    [oracle@node1 bin]$./dbca -silent -createDatabase -templateName General_Purpose.dbc \
    -gdbName ERI -sid ERI \
    -sysPassword password -systemPassword password \
    -sysmanPassword password -dbsnmpPassword password \
    -emConfiguration LOCAL \
    -storageType ASM -diskGroupName DATA \
    -datafileJarLocation $ORACLE_HOME/assistants/dbca/templates \
    -nodelist node1,node2 -characterset WE8ISO8859P1 \
    -obfuscatedPasswords false -sampleSchema true

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

クローニング・スクリプトは複数のツールを実行し、それぞれが独自にログ・ファイルを生成する可能性があります。

clone.plスクリプトの実行が終了した後、ログ・ファイルを参照して、クローニング・プロセスに関する詳細情報を入手できます。

クローニング時に生成された次のログ・ファイルは、診断のための主要なログ・ファイルです。

  • Central_Inventory/logs/cloneActionstimestamp.log

    クローニングのOracle Universal Installerの部分で発生したアクションの詳細なログが含まれます。

  • Central_Inventory/logs/oraInstalltimestamp.err

    Oracle Universal Installerの実行時に発生したエラーに関する情報が含まれます。

  • Central_Inventory/logs/oraInstalltimestamp.out

    Oracle Universal Installerによって生成されたその他のメッセージが含まれます。

  • $ORACLE_HOME/clone/logs/clonetimestamp.log

    クローニング前とクローニング操作中に発生したアクションの詳細なログが含まれます。

  • $ORACLE_HOME/clone/logs/errortimestamp.log

    クローニング前とクローニング操作中に発生したエラーに関する情報が含まれます。

表9-4に、Oracleインベントリ・ディレクトリの位置を確認する方法を示します。

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

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

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

/var/opt/oracle/oraInst.loc

IBM AIXおよびLinux

/etc/oraInst.locファイル。

Windows

C:\Program Files\Oracle\Inventory