11 LinuxおよびUNIXシステムのノードでのOracle RACの追加と削除
既存のOracle Real Application Clusters(Oracle RAC)ホームを他のノードおよびクラスタ内のインスタンスに拡張し、Oracle RACをノードおよびクラスタ内のインスタンスから削除します。
既存のOracle RACホームをクローニングし、クラスタ全体で複数の新規Oracle RACインストールを作成する場合は、「新規クラスタのノードへのOracle RACのクローニング」に示すクローニング手順に従います。
内容は次のとおりです。
注意:
-
ocrconfig -showbackup
コマンドを実行してOracle RACの追加または削除を行う前に、Oracle Cluster Registry(OCR)の現行のバックアップがあることを確認してください。 -
この章で使用されているターゲット・ノードという語は、Oracle RAC環境の拡張先ノードを意味しています。
11.1 Oracle ClusterwareがインストールされたノードへのOracle RACの追加
この手順を開始する前に、既存ノードのGrid_home
へのパスが正しいこと、および$ORACLE_HOME
環境変数がOracle RACホームに設定されていることを確認します。
-
ローカル(非共有)のOracleホームを使用している場合は、クラスタの既存のノード(この手順では
node1
)にあるOracle RACデータベース・ホームをターゲット・ノード(この手順ではnode3
)に拡張する必要があります。node1
のOracle_home/addnode
ディレクトリに移動し、addnode.sh
スクリプトを実行します。サイレント・インストールを実行する場合は、次の構文を使用して
addnode.sh
スクリプトを実行します。$ ./addnode.sh -silent "CLUSTER_NEW_NODES={node3}"
-
Oracle Automatic Storage Management Cluster File System (Oracle ACFS)を使用して共有されている共有Oracleホームを持つ場合は、次の手順を実行し、Oracle Databaseホームを
node3
に拡張します。-
root
としてGrid_home/bin
ディレクトリから次のコマンドを実行して、新しいノードでOracle ACFSリソースを起動します。# srvctl start filesystem -device volume_device [-node node_name]
注意:
Oracleホームが格納されているOracle ACFSレジストリ・リソースおよびOracle ACFSファイル・システム・リソースを含むOracle ACFSリソースが、新しく追加されたノードでオンラインであることを確認します。
-
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
-
node1
のOracle_home/addnode
ディレクトリに移動し、次の構文を使用してOracle RACをインストールしたユーザーとしてaddnode.sh
スクリプトを実行します。$ ./addnode.sh -noCopy "CLUSTER_NEW_NODES={node3}"
注意:
宛先ノードのOracleホームはすでにソフトウェアに完全に移入されているため、
-noCopy
オプションを使用します。
-
-
Oracle ACFS以外の共有ファイル・システムで共有Oracleホームを持つ場合は、まずターゲット・ノードでOracle RACデータベース・ホームのマウント・ポイントを作成し、Oracle RACデータベース・ホームをマウントおよびアタッチし、次のようにOracle Inventoryを更新します。
-
クラスタ内の既存ノードで
srvctl config database -db db_name
コマンドを実行して、マウント・ポイント情報を取得します。 -
次のコマンドを
root
としてnode3
で実行し、マウント・ポイントを作成します。# mkdir -p mount_point_path
-
Oracle RACデータベース・ホームをホストするファイル・システムをマウントします。
-
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"
-
Oracle RACをインストールしたユーザーとして、次のようにOracle Inventoryを更新します。
$ ./runInstaller -updateNodeList ORACLE_HOME=mount_point_path "CLUSTER_NODES= {node_list}"
前述のコマンドで、
node_list
はOracle RACデータベース・ホームがインストールされたすべてのノード(追加したものも含む)のリストです。
-
root
として、node3
でOracle_home/root.sh
スクリプトを実行します。
注意:
ノード追加プロセスの終了後は、OCRをバックアップすることをお薦めします。
これで、次の項のいずれかの手順を使用して、ターゲット・ノードにOracle RACデータベース・インスタンスを追加できます。
11.1.1 ターゲット・ノードへのポリシー管理Oracle RACデータベース・インスタンスの追加
ポリシー管理データベースをOracle Automatic Storage Management(Oracle ASM)に格納しないかぎり、およびOracle Managed Filesが有効でないかぎり、UNDOログおよびREDOログを手動で追加する必要があります。
サーバー・プールにノードを追加するための空き領域があり、データベースが1回以上起動されている場合、Oracle ClusterwareはOracle RACデータベース・インスタンスを新しく追加したノードに追加するため、それ以上の処置は必要ありません。
注意:
新しく追加したノードにデータベース・インスタンスを追加する前に、データベースは1回以上起動されている必要があります。
サーバー・プールに空き領域がない場合は、新しく追加したノードは空きサーバー・プールに移動します。srvctl modify srvpool
コマンドを使用して、新しく追加したノードを格納するサーバー・プールのカーディナリティを上げた後に、ノードは空きサーバー・プールから修正済サーバー・プールに移動し、Oracle ClusterwareはOracle RACデータベース・インスタンスをそのノードに追加します。
11.1.2 ターゲット・ノードへの管理者管理Oracle RACデータベース・インスタンスの追加
注意:
この項の手順は、管理者管理データベースに対してのみ実行してください。ポリシー管理データベースは、そのデータベースのサーバー・プールでノードが使用可能な場合にノードを使用します。
Oracle Enterprise ManagerまたはDBCAを使用して、Oracle RACデータベース・インスタンスをターゲット・ノードに追加できます。Oracle Enterprise Managerを使用してターゲット・ノードにデータベース・インスタンスを追加する方法の詳細は、『Oracle Database 2日でReal Application Clustersガイド』を参照してください。
この項では、DBCAを使用してOracle RACデータベース・インスタンスを追加する方法について説明します。
これらのツールは、次のタスクをガイドします。
-
各ターゲット・ノードでの新規データベース・インスタンスの作成
-
高可用性コンポーネントの作成および構成
-
Oracleホームからのデフォルト以外のリスナー用のOracle Net構成の作成
-
新規インスタンスの起動
-
サービス構成ページでサービス情報を入力した場合、サービスの作成および起動
ターゲット・ノードにインスタンスを追加した後で、「動的データベース・サービスによるワークロード管理」の説明に従って、必要なサービス構成手順を実行する必要があります。
11.1.2.1 対話モードでのDBCAによるターゲット・ノードへのデータベース・インスタンスの追加
対話モードでDBCAを使用してターゲット・ノードにデータベース・インスタンスを追加するには、次の手順を実行します。
-
既存ノードの
$ORACLE_HOME
環境変数がOracle RACホームに設定されていることを確認します。 -
Oracle_home/bin
ディレクトリから、システム・プロンプトでdbca
を入力してDBCAを起動します。DBCAの実行中に、CVUの特定のチェックが実行されます。ただし、コマンドラインからCVUを実行して、様々な検証を実行することもできます。
DBCAにOracle RAC用の「ようこそ」ページが表示されます。DBCAの各ページで「ヘルプ」をクリックすると、追加情報を参照できます。
-
「インスタンス管理」を選択して「次へ」をクリックすると、DBCAによって「インスタンス管理」ページが表示されます。
-
「インスタンスの追加」を選択し、「次へ」をクリックします。DBCAによって「クラスタ・データベースのリスト」ページが表示され、データベースおよび現在のステータス(
ACTIVE
やINACTIVE
など)が表示されます。 -
「クラスタ・データベースのリスト」ページで、インスタンスを追加するアクティブなOracle RACデータベースを選択します。「次へ」をクリックすると、DBCAによって選択したOracle RACデータベースの既存のインスタンスの名前を示す「クラスタ・データベース・インスタンスのリスト」ページが表示されます。
-
新規インスタンスを追加するには、「次へ」をクリックします。DBCAによって「インスタンスの追加」ページが表示されます。
-
「インスタンスの追加」ページで、DBCAに表示されるインスタンス名が既存のインスタンス名スキームと合致しない場合には、このページの一番上のフィールドにインスタンス名を入力します。
-
「サマリー」ダイアログ・ボックスに表示された情報を確認し、「OK」をクリックするか、またはインスタンス追加操作を終了する場合は「取消」をクリックします。DBCAがインスタンス追加操作を実行中であることを示す進捗ダイアログ・ボックスが表示されます。
-
DBCAセッションの終了後、次のコマンドを実行して、ターゲット・ノードでの管理権限を確認し、それらの権限に関する詳細情報を取得します(
node_list
は、データベース・インスタンスを追加したノードの名前で構成されます)。cluvfy comp admprv -o db_config -d Oracle_home -n node_list [-verbose]
-
「動的データベース・サービスによるワークロード管理」で説明したように、必要なサービス構成手順を実行します。
11.1.2.2 サイレント・モードでのDBCAによるターゲット・ノードへのデータベース・インスタンスの追加
DBCAのサイレント・モードを使用して、Oracle ClusterwareホームおよびOracle Databaseホームを拡張したノードにインスタンスを追加できます。
dbca
コマンドを実行する前に、既存ノードでORACLE_HOME
環境変数が正しく設定されていることを確認します。表11-1に示す変数に値を指定して、DBCAを実行します。
dbca -silent -nodeList node_name -gdbName gdb_name
[-instanceName instance_name -sysDBAUserName sysdba -sysDBAPassword
password]
表11-1 DBCAサイレント・モード構文の変数
変数 | 説明 |
---|---|
node_name |
インスタンスの追加(または削除)対象のノード。 |
gdb_name |
グローバル・データベース名。 |
instance_name |
インスタンスの名前。Oracle RACインスタンス名に関するOracleネーミング規則を使用せずにインスタンス名を指定する場合にのみ、インスタンス名を指定します。 |
sysdba |
|
password |
|
「動的データベース・サービスによるワークロード管理」で説明したように、必要なサービス構成手順を実行します。
11.2 クラスタ・ノードからのOracle RACの削除
クラスタ・ノードからOracle RACを削除するには、データベース・インスタンスおよびOracle RACソフトウェアを削除した後で、クラスタからそのノードを削除する必要があります。
注意:
削除するノードにデータベース・インスタンスがない場合は、「Oracle RACの削除」に進みます。
この項では、次の手順を実行して、Oracle RAC環境のクラスタからノードを削除します。
関連項目
11.2.1 Oracle RACデータベースからのインスタンスの削除
データベース・インスタンスの削除手順は、ポリシー管理データベースと管理者管理データベースとで異なります。
ポリシー管理データベース・インスタンスを削除すると、データベース・インスタンスが存在するサーバー・プールのサーバーの数が減少します。管理者管理データベース・インスタンスの削除では、DBCAを使用したデータベース・インスタンスの削除が必要です。
ポリシー管理データベースの削除
ポリシー管理データベースを削除するには、データベース・インスタンスが存在するサーバーを別のサーバー・プールに再配置することで、データベース・インスタンスが存在するサーバー・プールのサーバーの数を減らします。この操作によって、ノードからOracle RACソフトウェアを削除しなくても、またはクラスタからノードを削除しなくても、事実上インスタンスは削除されます。
たとえば、クラスタ内の任意のノードで次のコマンドを実行すると、ポリシー管理データベースを削除できます。
$ srvctl stop instance -db db_unique_name -node node_name
$ srvctl relocate server -servers "server_name_list" -serverpool Free
最初のコマンドは特定のノードのデータベース・インスタンスを停止し、2つ目のコマンドはノードを現行のサーバー・プールから空きサーバー・プールに移動します。
管理者管理データベースからのインスタンスの削除
注意:
Oracle RACデータベースからインスタンスを削除する前に、SRVCTLを使用して次の操作を実行します。
-
サービスが構成されている場合は、サービスを再配置します。
-
各サービスを残りのインスタンスの1つで実行できるように、サービスを変更します。
-
管理者管理データベースから削除されるインスタンスが、何らかのサービスの優先インスタンスまたは使用可能インスタンスではないことを確認します。
11.2.1.1 対話モードでのDBCAによるノードからのインスタンスの削除
この項の手順では、対話モードでDBCAを使用してOracle RACデータベースからインスタンスを削除する方法について説明します。
対話モードでDBCAを使用してインスタンスを削除するには、次の手順を実行します。
-
DBCAを起動します。
削除するインスタンスを保持しているノード以外のノードで、DBCAを起動します。削除するデータベースおよびインスタンスは、この手順の間、実行し続けている必要があります。
-
DBCAの「操作」ページで「インスタンス管理」を選択し、「次へ」をクリックします。DBCAによって「インスタンス管理」ページが表示されます。
-
DBCAの「インスタンス管理」ページで、削除するインスタンスを選択し、「インスタンスの削除」を選択し、「次へ」をクリックします。
-
「クラスタ・データベースのリスト」ページで、次のように、インスタンスを削除するOracle RACデータベースを選択します。
-
この「クラスタ・データベース・インスタンスのリスト」ページには、DBCAによって選択したOracle RACデータベースに関連付けられたインスタンスと各インスタンスのステータスが表示されます。インスタンスを削除するクラスタ・データベースを選択します。
-
「確認」ダイアログ・ボックスで「OK」をクリックし、インスタンスの削除を続行します。
DBCAがインスタンスを削除していることを示す進捗ダイアログ・ボックスが表示されます。この操作の中で、DBCAはインスタンスとそのインスタンスのOracle Net構成を削除します。
DBCAを終了する場合は「いいえ」を、別の操作を実行する場合は「はい」をクリックします。「はい」をクリックすると、DBCAによって「操作」ページが表示されます。
-
-
既存ノードでSQL*Plusを使用して
GV$LOG
ビューを問い合せ、削除したインスタンスのREDOスレッドが削除されていることを確認します。REDOスレッドが無効になっていない場合は、スレッドを無効にします。次に例を示します。SQL> ALTER DATABASE DISABLE THREAD 2;
-
次のコマンドを実行して、OCRからインスタンスが削除されていることを確認します(
db_unique_name
はOracle RACデータベースの一意のデータベース名です)。$ srvctl config database -db db_unique_name
-
複数のノードを削除する場合は、この手順を繰り返し、削除するすべてのノードからインスタンスを削除します。
11.2.1.2 サイレント・モードでのDBCAによるノードからのインスタンスの削除
DBCAのサイレント・モードを使用して、ノードからデータベース・インスタンスを削除できます。
次のコマンドを実行します(変数は、表11-1に示したインスタンスを追加するDBCAコマンドの変数と同じです)。次の例に示すとおり、DBCAが実行されているノード以外からインスタンスを削除する場合のみ、ノード名を指定します(password
はパスワードです)。
dbca -silent -deleteInstance [-nodeList node_name] -gdbName gdb_name
-instanceName instance_name [-sysDBAUserName sysdba -sysDBAPassword password]
この時点で、次の作業が完了しました。
-
関連付けられたOracle Net Servicesリスナーからの選択されたインスタンスの登録解除
-
インスタンスの構成ノードからの選択されたデータベース・インスタンスの削除
-
Oracle Net構成の削除
-
インスタンスの構成ノードからのOracle Flexible Architectureディレクトリ構造の削除
11.2.2 Oracle RACの削除
この手順では、クラスタから削除するノードからOracle RACソフトウェアを削除し、残りのノードのインベントリを更新します。
-
削除するノードの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
-
Oracle_home\deinstall
ディレクトリから次のコマンドを実行することによって、削除するノードからOracleホームをアンインストールします(Oracleホームが共有されていない場合のみ)。deinstall -local
警告:
Oracleホームが共有されている場合、共有ソフトウェアを削除してしまうため、このコマンドは実行できません。そのかわり、次の手順に進みます。