11 LinuxおよびUNIXシステムのノードでのOracle RACの追加と削除

既存のOracle Real Application Clusters(Oracle RAC)ホームを他のノードおよびクラスタ内のインスタンスに拡張し、Oracle RACをノードおよびクラスタ内のインスタンスから削除します。

ノードの追加および削除について

ノードの追加および削除は、Oracle Real Application Clustersデータベース・クラスタを追加または変更するプロセスです

既存のOracle RACホームをクローニングし、クラスタ全体で複数の新規Oracle RACインストールを作成する場合は、「新規クラスタのノードへのOracle RACのクローニング」に示すクローニング手順に従います。

ノート:

  • ocrconfig -showbackupコマンドを実行してOracle RACの追加または削除を行う前に、Oracle Cluster Registry(OCR)の現行のバックアップがあることを確認してください。

  • Oracle RACノードの構成という文脈において"ターゲット・ノード"という語は、Oracle RAC環境の拡張先となるノードを指します。

Oracle Grid InfrastructureがインストールされたノードへのOracle RACの追加

Oracle Grid InfrastructureがインストールされたOracle Real Application Clusters (Oracle RAC)を追加する手順は、使用する記憶域およびOracleホームの構成によって異なります。

この手順をシステムで開始する前に、既存ノードのGrid_homeへのパスが正しいこと、および$ORACLE_HOME環境変数がOracle RACホームに設定されていることを確認します。

ローカル(非共有)のOracleホーム用の手順

ローカル(非共有)のOracleホームを使用している場合は、クラスタの既存のノード(この手順ではnode1)にあるOracle RACデータベース・ホームをターゲット・ノード(この手順ではnode3)に拡張する必要があります。

  1. node1Oracle_home/addnodeディレクトリに移動し、addnode.shスクリプトを実行します。

  2. サイレント・インストールを実行する場合は、次の構文を使用してaddnode.shスクリプトを実行します。

    $ ./addnode.sh -silent "CLUSTER_NEW_NODES={node3}"
  3. rootとして、node3Oracle_home/root.shスクリプトを実行します。

  4. 古いノードから新しく追加されたノードにtnsnames.oraファイルを手動でコピーします。

    $ cd $ORACLE_BASE_HOME/network/admin
    $ sftp tnsnames.ora new_node:$ORACLE_BASE_HOME/network/admin/
  5. SQL*Plusセッションで次のコマンドを使用して、新しく追加したノードでプラガブル・データベース(PDB)をオープンします。

    SQL> CONNECT / AS SYSDBA
    SQL> ALTER PLUGGABLE DATABASE pdb_name OPEN;

Oracle ACFSを使用している共有Oracleホーム用の手順

Oracle Advanced Cluster File System (Oracle ACFS)を使用して共有されている共有Oracleホームがある場合は、次の手順を実行し、Oracle DatabaseのOracleホームをnode3に拡張します。

  1. rootとしてGrid_home/binディレクトリから次のコマンドを実行して、新しいノードでOracle ACFSリソースを起動します。

    # srvctl start filesystem -device volume_device [-node node_name]

    ノート:

    Oracleホームが格納されているOracle ACFSレジストリ・リソースおよびOracle ACFSファイル・システム・リソースを含むOracle ACFSリソースが、新しく追加されたノードでオンラインであることを確認します。

  2. Oracle RACをインストールしたユーザーとして、追加したノードのOracle_home/oui/binディレクトリから次のコマンドを実行し、Oracle RACデータベース・ホームを追加します。

    $ ./runInstaller -attachHome ORACLE_HOME="ORACLE_HOME" "CLUSTER_NODES={node3}"
      LOCAL_NODE="node3" ORACLE_HOME_NAME="home_name" -cfs
  3. node1Oracle_home/addnodeディレクトリに移動し、次の構文を使用してOracle RACをインストールしたユーザーとしてaddnode.shスクリプトを実行します。

    $ ./addnode.sh -noCopy "CLUSTER_NEW_NODES={node3}"

    ノート:

    宛先ノードのOracleホームはすでにソフトウェアに完全に移入されているため、-noCopyオプションを使用します。

  4. rootとして、node3Oracle_home/root.shスクリプトを実行します。

Oracle ACFSを使用していない共有Oracleホーム用の手順

Oracle ACFS以外の共有ファイル・システム上に共有Oracleホームがある場合は、まずターゲット・ノードでOracle RACデータベース・ホームのマウント・ポイントを作成し、Oracle RACデータベース・ホームをマウントおよびアタッチし、Oracle Inventoryを更新します。

  1. クラスタ内の既存ノードでsrvctl config database -db db_nameコマンドを実行して、マウント・ポイント情報を取得します。

  2. 次のコマンドをrootとしてnode3で実行し、マウント・ポイントを作成します。

    # mkdir -p mount_point_path
  3. Oracle RACデータベース・ホームをホストするファイル・システムをマウントします。

  4. Oracle RACをインストールしたユーザーとして、追加したノードのOracle_home/oui/binディレクトリから次のコマンドを実行し、Oracle RACデータベース・ホームを追加します。

    $ ./runInstaller -attachHome ORACLE_HOME="ORACLE_HOME" "CLUSTER_NODES=
      {local_node_name}" LOCAL_NODE="node_name" ORACLE_HOME_NAME="home_name"
  5. Oracle RACをインストールしたユーザーとして、次のようにOracle Inventoryを更新します。

    $ ./runInstaller -updateNodeList ORACLE_HOME=mount_point_path "CLUSTER_NODES=
      {node_list}"

    前述のコマンドで、node_listはOracle RACデータベース・ホームがインストールされたすべてのノード(追加したものも含む)のリストです。

  6. rootとして、node3Oracle_home/root.shスクリプトを実行します。

これで、Oracle RACデータベース・インスタンスをターゲット・ノードに追加できます。

draf

ノート:

ノード追加プロセスの終了後は、OCRをバックアップすることをお薦めします。

ターゲット・ノードへの管理者管理Oracle RACデータベース・インスタンスの追加

管理者管理Oracle Real Application Clusters (Oracle RAC)インスタンスの構成方法を学習します。

管理者管理Oracle RACデータベース・インスタンスの追加について

Oracle Real Application Clusters (Oracle RAC)データベース・インスタンスを追加するには、いくつかのツールを使用できます。

Oracle Enterprise ManagerまたはOracle DBCAを使用して、Oracle RACデータベース・インスタンスをターゲット・ノードに追加できます。

この項では、Oracle DBCAを使用してOracle RACデータベース・インスタンスを追加する方法について説明します。

これらのツールは、次のタスクをガイドします。

  • 各ターゲット・ノードでの新規データベース・インスタンスの作成

  • 高可用性コンポーネントの作成および構成

  • Oracleホームからのデフォルト以外のリスナー用のOracle Net構成の作成

  • 新規インスタンスの起動

  • サービス構成ページでサービス情報を入力した場合、サービスの作成および起動

ターゲット・ノードにインスタンスを追加した後で、「動的データベース・サービスによるワークロード管理」の説明に従って、必要なサービス構成手順を実行する必要があります。

対話モードでのOracle DBCAを使用したターゲット・ノードへのデータベース・インスタンスの追加

対話モードでOracle DBCAを使用してターゲット・ノードにデータベース・インスタンスを追加するには、ここで説明するステップを実行します。

  1. 既存ノードの$ORACLE_HOME環境変数がOracle RACホームに設定されていることを確認します。

  2. Oracle_home/binディレクトリから、システム・プロンプトでdbcaを入力してOracle DBCAを起動します。

    Oracle DBCAの実行中に、CVUの特定のチェックが実行されます。ただし、コマンドラインからCVUを実行して、様々な検証を実行することもできます。

    Oracle DBCAにOracle RAC用の「ようこそ」ページが表示されます。Oracle DBCAの各ページで「ヘルプ」をクリックすると、追加情報を参照できます。

  3. 「インスタンス管理」を選択して「次へ」をクリックすると、Oracle DBCAによって「インスタンス管理」ページが表示されます。

  4. 「インスタンスの追加」を選択し、「次へ」をクリックします。Oracle DBCAによって「クラスタ・データベースのリスト」ページが表示され、データベースおよび現在のステータス(ACTIVEINACTIVEなど)が表示されます。

  5. 「クラスタ・データベースのリスト」ページで、インスタンスを追加するアクティブなOracle RACデータベースを選択します。「次へ」をクリックすると、Oracle DBCAによって選択したOracle RACデータベースの既存のインスタンスの名前を示す「クラスタ・データベース・インスタンスのリスト」ページが表示されます。

  6. 新規インスタンスを追加するには、「次へ」をクリックします。Oracle DBCAによって「インスタンスの追加」ページが表示されます。

  7. 「インスタンスの追加」ページで、Oracle DBCAに表示されるインスタンス名が既存のインスタンス名スキームと合致しない場合には、このページの最上部のフィールドにインスタンス名を入力します。

  8. 「サマリー」ダイアログ・ボックスに表示された情報を確認し、「OK」をクリックするか、またはインスタンス追加操作を終了する場合は「取消」をクリックします。Oracle DBCAがインスタンス追加操作を実行中であることを示す進捗ダイアログ・ボックスが表示されます。

  9. Oracle DBCAセッションの終了後、次のコマンドを実行して、ターゲット・ノードでの管理権限を確認し、それらの権限に関する詳細情報を取得します(node_listは、データベース・インスタンスを追加したノードの名前で構成されます)。

    cluvfy comp admprv -o db_config -d Oracle_home -n node_list [-verbose]
  10. 「動的データベース・サービスによるワークロード管理」で説明したように、必要なサービス構成手順を実行します。

サイレント・モードでのOracle DBCAを使用したターゲット・ノードへのデータベース・インスタンスの追加

サイレント・モードでOracle DBCAを使用して、Oracle ClusterwareホームおよびOracle Databaseホームを拡張したノードにインスタンスを追加できます。

dbcaコマンドを実行する前に、既存ノードでORACLE_HOME環境変数が正しく設定されていることを確認します。次の構文を使用して変数に値を指定し、Oracle DBCAを実行します。

dbca -silent -addInstance -nodeName node_name -gdbName gdb_name
  [-instanceName instance_name -sysDBAUserName sysdba -sysDBAPassword
  password]

次の表に、各変数に指定する必要がある値を示します。

表11-1 Oracle DBCAサイレント・モード構文の変数

変数 説明
node_name

インスタンスの追加(または削除)対象のノード。

gdb_name

グローバル・データベース名。

instance_name

インスタンスの名前。Oracle RACインスタンス名に関するOracleネーミング規則を使用せずにインスタンス名を指定する場合にのみ、インスタンス名を指定します。

sysdba

SYSDBA権限を持つOracleユーザーの名前。

password

SYSDBAユーザーのパスワード。

「動的データベース・サービスによるワークロード管理」で説明したように、必要なサービス構成手順を実行します。

クラスタ・ノードからのOracle RACの削除

この手順を使用すると、クラスタ・ノードからOracle RACを削除できます。

クラスタ・ノードからOracle RACを削除するには、データベース・インスタンスおよびOracle RACを削除した後に、クラスタからそのノードを削除します。

ノート:

削除するノードにデータベース・インスタンスがない場合は、「Oracle RACの削除」に進みます。

関連トピック

Oracle RACデータベースからのインスタンスの削除

SRVCTLユーティリティを使用して、Oracle RACデータベース・インスタンスを削除できます。

管理者管理データベースからのインスタンスの削除

ノート:

Oracle RACデータベースからインスタンスを削除する前に、SRVCTLを使用して次の操作を実行します。

  • サービスが構成されている場合は、サービスを再配置します。

  • 各サービスを残りのインスタンスの1つで実行できるように、サービスを変更します。

  • 管理者管理データベースから削除されるインスタンスが、何らかのサービスの優先インスタンスまたは使用可能インスタンスではないことを確認します。

対話モードでのOracle DBCAによるノードからのインスタンスの削除

この手順では、対話モードでOracle DBCAを使用してOracle RACデータベースからインスタンスを削除する方法を示します。

対話モードでOracle DBCAを使用してインスタンスを削除するには、次のステップを実行します。

  1. Oracle DBCAを起動します。

    削除するインスタンスをホストしているノード以外のノードで、Oracle DBCAを起動します。削除するデータベースおよびインスタンスは、このステップの間、実行し続けている必要があります。

  2. Oracle DBCAの「操作」ページで「インスタンス管理」を選択し、「次へ」をクリックします。Oracle DBCAによって「インスタンス管理」ページが表示されます。

  3. Oracle DBCAの「インスタンス管理」ページで、削除するインスタンスを選択し、「インスタンスの削除」を選択し、「次へ」をクリックします。

  4. 「クラスタ・データベースのリスト」ページで、次のように、インスタンスを削除するOracle RACデータベースを選択します。

    1. この「クラスタ・データベース・インスタンスのリスト」ページには、Oracle DBCAによって選択したOracle RACデータベースに関連付けられたインスタンスと各インスタンスのステータスが表示されます。インスタンスを削除するクラスタ・データベースを選択します。

    2. 「確認」ダイアログ・ボックスで「OK」をクリックし、インスタンスの削除を続行します。

      Oracle DBCAがインスタンスを削除していることを示す進捗ダイアログ・ボックスが表示されます。この操作の中で、Oracle DBCAはインスタンスとそのインスタンスのOracle Net構成を削除します。

      Oracle DBCAを終了する場合は「いいえ」を、別の操作を実行する場合は「はい」をクリックします。「はい」をクリックすると、Oracle DBCAによって「操作」ページが表示されます。

  5. 既存ノードでSQL*Plusを使用してGV$LOGビューを問い合せ、削除したインスタンスのREDOスレッドが削除されていることを確認します。REDOスレッドが無効になっていない場合は、スレッドを無効にします。たとえば:

    SQL> ALTER DATABASE DISABLE THREAD 2;
  6. 次のコマンドを実行して、OCRからインスタンスが削除されていることを確認します(db_unique_nameはOracle RACデータベースの一意のデータベース名です)。

    $ srvctl config database -db db_unique_name
  7. 複数のノードを削除する場合は、このステップを繰り返し、削除するすべてのノードからインスタンスを削除します。

サイレント・モードでのOracle DBCAによるノードからのインスタンスの削除

サイレント・モードでOracle DBCAを使用してノードからインスタンスを削除する方法を学習します。

次のコマンドを実行します。変数は、表11-1に示したインスタンスを削除するOracle DBCAコマンドの変数と同じです。次の例に示すとおり、Oracle DBCAが実行されているノード以外からインスタンスを削除する場合のみ、ノード名を指定します(passwordはパスワードです)。

dbca -silent -deleteInstance [-nodeName node_name] -gdbName gdb_name
-instanceName instance_name [-sysDBAUserName sysdba -sysDBAPassword password]

この時点で、次の作業が完了しました。

  • 関連付けられたOracle Net Servicesリスナーからの選択されたインスタンスの登録解除

  • インスタンスの構成ノードからの選択されたデータベース・インスタンスの削除

  • Oracle Net構成の削除

  • インスタンスの構成ノードからのOracle Flexible Architectureディレクトリ構造の削除

Oracle RACの削除

この手順では、クラスタから削除するノードからOracle RACを削除し、残りのノードのインベントリを更新します。

  1. 削除するノードのOracle RACホームにリスナーが存在する場合、Oracle RACソフトウェアを削除する前にリスナーを無効にして停止する必要があります。リスナーの名前および削除するノード名前を指定して、次のコマンドをクラスタ内の任意のノードで実行します。

    $ srvctl disable listener -l listener_name -n name_of_node_to_delete
    $ srvctl stop listener -l listener_name -n name_of_node_to_delete
  2. Oracle_home\deinstallディレクトリから次のコマンドを実行することによって、削除するノードからOracleホームをアンインストールします(Oracleホームが共有されていない場合のみ)。

    deinstall -local

    注意:

    Oracleホームが共有されている場合、共有ソフトウェアを削除してしまうため、このコマンドは実行できません。そのかわり、次のステップに進みます。

クラスタからのノードの削除

この手順を使用して、クラスタからノードを削除します。

データベース・インスタンスおよびOracle RACを削除した後に、クラスタからそのノードを削除できます。これを行うには、削除するノードでスクリプトを実行してOracle Clusterwareを削除します。次に、残りのノードでスクリプトを実行してノード・リストを更新します。