12 WindowsシステムのノードでのOracle RACの追加と削除

次の手順を使用して、Microsoft Windows上の既存のOracle Real Application Clusters (Oracle RAC)ホームをクラスタ内の他のノードおよびインスタンスに拡張したり、Oracle RACをクラスタ内のノードおよびインスタンスから削除します。

次のトピックでは、Grid_homeのエントリはOracle Grid Infrastructureホームのフル・パス名を指し、Oracle_homeのエントリはOracle RACを含むOracleホームの環境変数の代替を指します。

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

ノート:

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

  • ノードの追加とノードの削除のすべての手順で、%TEMP%C:\Tempなどの一時ディレクトリは、共有ディレクトリにしないでください。一時ディレクトリが共有されていると、%TEMP%などの一時環境変数にはローカル・ノードにある場所が設定されます。また、すべてのノードに存在するディレクトリ・パスを使用してください。

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

Oracle Clusterwareクラスタ・ノードであるMicrosoft WindowsノードにOracle Real Application Clustersを追加するには、次の手順を確認します。

これらの手順を開始する前に、既存ノードのGrid_homeへのパスが正しいこと、およびOracle_home環境変数が正しく設定されていることを確認します。

既存ノードでのOracle RACホームの拡張

Oracle Grid InfrastructureがすでにインストールされているノードにOracle RACデータベース・インスタンスを追加するには、クラスタの既存のノード(この手順ではnode1)にあるOracle RACホームをターゲット・ノードに拡張する必要があります。

  1. node1Oracle_home\addnodeディレクトリに移動し、次の構文を使用してaddnode.batスクリプトを実行します(ここで、node2は追加するノードの名前です)。

    addnode.bat "CLUSTER_NEW_NODES={node2}"

    このコマンドをサイレント・モードで実行するには:

    addNode.bat -silent "CLUSTER_NEW_NODES={node2}"

    使用するOracleホーム・ディレクトリで、Oracle DatabaseソフトウェアをインストールしたときにOracleホーム・ユーザーを指定した場合、OUIではOracleホーム・ユーザーのパスワードが必要になります。OUIは、ユーザーの(OCRに格納されている)ウォレットをチェックし、そこからパスワードを抽出します。ユーザー情報がウォレットに含まれていない場合は、コマンドラインで-promptPasswdフラグを指定しないかぎり、addnode.batスクリプトによってエラーが生成されます。

共有ファイル・システムでのOracleホームのマウント・ポイントの作成

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

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

  2. Oracle RACデータベース・ホームをホストするファイル・システムをマウントします。

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

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

    setup.exe -updateNodeList ORACLE_HOME=mount_point_path "CLUSTER_NODES={node_list}"

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

ノート:

ノード追加プロセスの終了後は、投票ディスクおよびOracle Cluster Registry(OCR)ファイルをバックアップすることをお薦めします。

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

Oracle DBCAを使用してOracle RACデータベース・インスタンスを追加する方法について学習します。

Oracle RACデータベース・インスタンスをターゲット・ノードに追加するには、Oracle Enterprise ManagerまたはOracle Database Configuration Assistant (Oracle DBCA)のいずれかを使用できます。次のトピックでは、Oracle DBCAの使用について説明します

Oracle DBCAを使用したOracle RACインスタンスの追加について

Oracle Database Configuration Assistant (Oracle DBCA)を使用してOracle Real Application ClustersインスタンスをOracle Clusterwareに追加すると、単なるデータベースのデプロイメントより多くのことを完了できます。

Oracle DBCAでは次のタスクを順に実行できます。

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

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

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

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

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

ターゲット・ノードにインスタンスを追加した後で、必要なサービス構成手順を実行する必要があります。

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

次の手順では、まずOracle DBCAを使用してデータベース・インスタンスをターゲット・ノードに追加し、次にOracle Services for Microsoft Transaction Server (OraMTS)のサービスを作成します。

ターゲット・ノードへのデータベース・インスタンスの追加

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

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

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

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

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

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

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

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

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

    ノート:

    「Oracleホーム・ユーザー」オプションとともにOracleホームをインストールした場合、Oracle DBCAによって、このページでパスワードが求められます。

  8. 「サマリー」ページの情報を確認し、「終了」をクリックしてインスタンス追加操作を開始します。Oracle DBCAがインスタンス追加操作を実行中であることを示す進捗ダイアログ・ボックスが表示されます。

OraMTS Service for Microsoft Transaction Serverの作成

Oracle Services for Microsoft Transaction Server (OraMTS)を使用すると、Microsoftアプリケーションで調整されるトランザクション内で、リソース・マネージャとしてOracle Databaseを使用できます。OraMTSは、Microsoft分散トランザクション・コーディネータ(MSDTC)に対するOracle Databaseのプロキシとして機能します。この結果、OraMTSによってクライアント側の接続プールが提供され、Oracleを利用するクライアント・コンポーネントが昇格可能な分散トランザクションに参加できるようになります。また、サービス自体がWindowsで実行される場合、OraMTSは、任意のオペレーティング・システム上で実行されているOracle Databaseと連携して動作できます。

Oracle Database 12cより前のリリースでは、OraMTSサービスはソフトウェアのみのインストールの一部として作成されました。Oracle Database 12c以降のリリースでは、構成ツールを使用してこのサービスを作成する必要があります。

ノードの追加後、またはOracle RACについてソフトウェアのみのインストールを実行した後にOraMTSサービスを作成するには、次の手順を実行します。

  1. コマンド・ウィンドウを開きます。

  2. ディレクトリを%ORACLE_HOME%\binに変更します。

  3. OraMTSCtlユーティリティを実行してOraMTSサービスを作成します(host_nameはサービスが作成されるノードのリストです)。

    C:\..bin> oramtsctl.exe -new -host host_name

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

Oracle ClusterwareホームおよびOracle Databaseホームを拡張したノードにインスタンスを追加します。

次の構文とともにサイレント・モードでOracle DBCAを使用します。

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

必要なサービス構成手順を実行します。

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

クラスタ・ノードからOracle Real Application Clusters (Oracle RAC)を削除するには、データベース・インスタンスおよびOracle RACソフトウェアを削除した後で、クラスタからそのノードを削除する必要があります。

ノート:

削除するノードにデータベース・インスタンスがない場合は、Oracle RACを削除します。

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

管理者管理データベース・インスタンスの削除では、Oracle Database Configuration Assistant (Oracle DBCA)を使用してデータベース・インスタンスを削除します。

ノート:

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

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

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

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

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

サイレント・モードでOracle DBCAを使用して、ノードからデータベース・インスタンスを削除できます。

インスタンスを削除するには、次のコマンド構文を使用します。次の例に示すとおり、Oracle DBCAが実行されているノード以外からインスタンスを削除する場合のみ、ノード名を指定します(passwordはSYSDBAパスワードです)。

dbca -silent -deleteInstance [-nodeName node_name] -gdbName gdb_name
-instanceName instance_name [-sysDBAUserName sysdba] [-sysDBAPassword password]
次の表に、各変数に指定する必要がある値を示します。

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

変数 説明
node_name

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

gdb_name

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

instance_name

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

sysdba

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

password

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

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

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

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

  • Oracle Net構成の削除

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

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

対話モードでOracle Database Configuration Assistasnt (Oracle DBCA )を使用してOracle Real Application Clusters (Oracle RAC)インスタンスを削除するには、次の手順を実行します。

  1. OCRの現行のバックアップがあることを確認します。

    ocrconfig -showbackupコマンドを実行して、有効なバックアップがあることを確認します。

  2. Oracle DBCAを起動します。

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

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

  4. 「インスタンス管理」ページで、「インスタンスの削除」を選択して、「次へ」をクリックします。Oracle DBCAによって「クラスタ・データベースのリスト」ページが表示されます。

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

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

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

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

    3. 次の「確認」ダイアログ・ボックスで「OK」をクリックし、インスタンスおよび関連するOptimal Flexible Architecture(OFA)ディレクトリ構造を削除します。

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

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

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

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

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

Oracle RACの削除

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

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

    C:\srvctl disable listener -listener listener_name -node name_of_node_to_delete
    C:\srvctl stop listener -listener listener_name -node name_of_node_to_delete
  2. Oracle_home\deinstallディレクトリから次のコマンドを実行して、削除するノードからOracleホームをアンインストールします。

    deinstall -local

共有Oracle RACホームがある場合、このステップのコマンド例に-cfsオプションを追加し、クラスタ・ファイル・システムの完全なパスの場所を指定します。

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

インスタンスを削除すると、クラスタからノードを削除するプロセスを開始できます。

クラスタからノードを削除するには、削除するノードでスクリプトを実行して、Oracle Grid Infrastructureインストールを削除します。次に、残りのノードでスクリプトを実行してノード・リストを更新します。