4 Oracle RAC One Nodeの管理

Oracle Real Application Clusters One Node(Oracle RAC One Node)は、クラスタ内の1つのノードで実行されるOracle Real Application Clusters(Oracle RAC)データベースのシングル・インスタンスです。このオプションによって、Oracleでのデータベース統合の柔軟性が向上します。フェイルオーバーによる保護で高可用性を実現しながら、多くのデータベースを最小限のオーバーヘッドで1つのクラスタに統合でき、オンラインでのローリング・パッチ適用、オペレーティング・システムおよびOracle Clusterwareのローリング・アップグレードも可能になります。

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

4.1 Oracle RAC One Nodeデータベースの作成

その他のOracle Databaseと同様に、高速ホーム・プロビジョニングまたはDatabase Configuration Assistant (DBCA)を使用すると、Oracle RAC One Nodeデータベースを作成できます(手動で作成したスクリプトも有効な代替手段です)。

Oracle RAC One Nodeデータベースは、高速ホーム・プロビジョニングと-dbtype RACONENODEパラメータを指定したrhpctl add databaseコマンドを使用することで作成できます。また、Oracle RAC One Nodeデータベースは、rhpctl add workingcopyコマンドを使用して組み込むこともできます。

Oracle RAC One Nodeデータベースは、単一インスタンスOracle Database (たとえば、rconfigを使用)またはOracle RACデータベースからの変換の結果になることもあります。通常、オラクル社提供のツールは、Oracle RAC One NodeデータベースをOracle Clusterwareに登録します。構成が原因で、Oracle RAC One NodeデータベースのOracle Clusterwareへの自動登録は行われなかった可能性があります。この場合は、この項のステップに従って、Oracle RAC One NodeデータベースをOracle Clusterwareに登録してください。

注意:

サーバー制御ユーティリティ(SRVCTL)を使用して、Oracle RAC One Nodeデータベースを管理することをお薦めします。SRVCTLを使用すると、特定の操作(オンライン・データベース再配置など)のみを実行できます。

Oracle RAC One NodeデータベースがOracle Clusterwareに自動的に登録されなかった場合は、srvctl add databaseコマンドを使用してOracle RAC One Nodeデータベースをクラスタに追加します。次に例を示します。

$ srvctl add database -dbtype  RACONENODE [-server server_list]
  [-instance instance_name] [-timeout timeout]

管理者管理Oracle RAC One Nodeデータベースを追加する場合は、-serverオプションおよび-instanceオプションを使用します。

Oracle RAC One Nodeデータベースの場合、少なくとも1つの動的データベース・サービスを構成する必要があります(デフォルトのデータベース・サービスに加えて、かつ、これと反対に)。管理者管理Oracle RAC One Nodeデータベースを使用する場合は、他のOracle RACデータベースと同様、サービスの登録が実行されます。サービスをポリシー管理Oracle RAC One Nodeデータベースに追加する場合、SRVCTLは配置情報を受け入れませんが、かわりにSERVER_POOLS属性の値を使用してこれらのサービスを構成します。

注意:

管理者管理Oracle RAC One Nodeデータベースを追加する場合は、オプションで、srvctl add databaseコマンドの-instance instance_nameオプションを使用してインスタンス接頭辞を指定できます。こうすると、インスタンスの名前は、prefix_1になります。インスタンス接頭辞を指定しないと、データベースの一意の名前の最初の12文字が接頭辞になります。インスタンス名は、オンライン・データベース再配置時にprefix_2に変更され、後続のオンライン・データベース再配置時にprefix_1に戻されます。フェイルオーバーでは、同じインスタンス名が使用されます。

4.2 データベースの変換

SRVCTLを使用して、インスタンスが1つのOracle RACデータベースをOracle RAC One Nodeデータベースに変換できます。その逆も同様に可能です。

この項には次のトピックが含まれます:

4.2.1 Oracle RACからOracle RAC One Nodeへのデータベースの変換

SRVCTLを使用して、Oracle RACデータベースをOracle RAC One Nodeデータベースに変換します。

Oracle RACデータベースをOracle RAC One Nodeデータベースに変換する前に、Oracle RACデータベースのインスタンスが1つのみであることを確認する必要があります。Oracle RACデータベースが管理者管理であり、かつ複数のインスタンスがある場合は、srvctl remove instanceコマンドを使用して、1つを除くすべてのインスタンスを削除する必要があります。Oracle RACデータベースがポリシー管理であり、かつ複数のインスタンスがある場合は、srvctl stop instanceコマンドを使用して、1つを除くすべてのインスタンスを停止する必要があります。

Oracle RACデータベースが管理者管理である場合は、すべてのサービスの構成を変更して、変換後でもOracle RAC One Nodeデータベースであるようなインスタンスに優先インスタンスを設定する必要があります。サービスにPRECONNECT TAFポリシーがある場合は、変換プロセスを開始する前に、そのTAFポリシーをBASICまたはNONEに更新する必要があります。これらのサービスでは、使用可能インスタンスが不要になります。

Oracle RACデータベースがポリシー管理である場合は、すべてのサービスの構成を変更して、Oracle RACデータベースをOracle RAC One Nodeデータベースに変換する前に、すべてのサービスで同じサーバー・プールが使用されるようにしておく必要があります。

次のように、srvctl convert databaseコマンドを使用して、インスタンスが1つのOracle RACデータベースをOracle RAC One Nodeデータベースに変換できます。

$ srvctl convert database -db db_unique_name -dbtype RACONENODE
  [-instance instance_name -timeout timeout]
  -w timeout]

注意:

Oracle RAC One Nodeに変換するOracle RACデータベースでは、Oracle Managed Filesを使用しているか(自動スレッド割当てを有効にするため)、または2つ以上のREDOスレッドを保持している必要があります。

4.2.2 Oracle RAC One NodeからOracle RACへのデータベースの変換

Oracle RAC One Nodeデータベース所有者としてログインして、次のSRVCTLコマンドを入力すると、Oracle RAC One NodeデータベースをOracle RACデータベースに変換できます。

srvctl convert database -db db_unique_name -dbtype RAC

オンライン・データベース再配置を使用してOracle RACに変換するデータベースを再配置している場合、またはオンライン・データベース再配置が失敗した場合は、srvctl convert databaseコマンドを実行する前に、再配置を終了するか、完了させる必要があります。

このコマンドを実行した後に、データベース・サーバー・プールの他に、各データベース・サービスのサーバー・プールを作成する必要があります。このデータベース・サービスが使用するサーバー・プールのSERVER_NAMESの値に、Oracle RAC One NodeからOracle RACノードに変換したノードが設定されている必要があります。CRSCTLユーティリティまたはOracle Enterprise Managerを使用すると、サーバー・プールを作成して構成できます。

管理者管理Oracle RAC One NodeデータベースをOracle RACデータベースに変換すると、シングル・インスタンス・データベースがデータベース・サービスの優先インスタンスになるようにすべてのデータベース・サービスが構成されます。データベースを変換した後は、srvctl add instanceコマンドを実行してインスタンスをデータベースに追加できます。

ポリシー型管理のOracle RAC One NodeデータベースをOracle RACデータベースに変換すると、すべてのデータベース・サービスのカーディナリティがUNIFORMに設定されます。また、このデータベースが現在実行されているサーバー・プールが再利用されることになります。変換では、このデータベースがサーバー・プール内のすべてのノードで実行されるように再構成されます。このコマンドでは、追加のインスタンスは起動されませんが、srvctl start databaseコマンドを実行すると、サーバー・プール内のすべてノードでこのデータベースが起動します。

4.3 オンライン・データベース再配置

オンライン・データベース再配置機能を使用して、サービスの可用性を維持したまま、Oracle RAC One Nodeデータベースを別のノードに再配置できます。

データベースの新規ノードへの再配置中に、データベース・セッションを継続できるように、計画的なオンライン・データベース再配置中にのみOracle RAC One Nodeデータベースの第2インスタンスが作成されます。Oracle RAC One Nodeデータベースではオンライン・データベース再配置のみを使用できますが、管理スタイルにかかわらず(管理者管理またはポリシー管理)、Oracle RACデータベースではオンライン・データベース再配置は使用できません。

srvctl relocate databaseコマンドを使用して、再配置されるデータベースの開始およびサービスの移行後、データベースの以前のインスタンスが停止するまでの時間を構成できます。この構成時間は、操作全体にかかる時間の上限ではなく、再配置されるデータベースが以前のインスタンスから新しいインスタンスに接続が移行するのを待機した後、以前のインスタンスが停止するまでの時間を制御するだけです。

オンライン・データベース再配置は、次のように行われます。

  1. 新しいデータベース・インスタンスを別の場所で開始します。

  2. 再配置するインスタンスにすべてのサービスを移動します。

  3. 再配置するインスタンスにすべての接続が移行するまで待機します。

  4. 以前のデータベース・インスタンスを停止し、再配置するインスタンスに残りのすべての接続を強制移動します。

オンライン再配置のタイムアウトは、ステップ3を実行するために構成する時間です。

Oracle RAC One Nodeデータベースが管理者管理の場合、データベース・インスタンスを再配置する先のターゲット・ノードは、再配置を開始するときの空きサーバー・プールの一部である必要があります。空きサーバー・プールに予備のターゲット・ノードがある場合、このノードは、Oracle RAC One Nodeデータベースの候補リストに追加されます。

注意:

  • データベースの候補サーバー・リストに現在存在していないターゲット・ノードにデータベース・インスタンスを再配置する場合は、Oracle ASMに格納されている共有パスワード・ファイルを使用しないかぎり、パスワード・ファイル(構成されている場合)をターゲット・ノードにコピーする必要があります。

    共有パスワード・ファイルを使用せずにOracle RAC One Nodeデータベースのリモート管理に対してパスワード・ファイルベースの認証を使用する場合、データベースを実行できるノードごとに、SID_prefix_1およびSID_prefix_2という名前の2つのパスワード・ファイルが必要です。パスワード・ファイルを更新するたびに、これらの両方のファイルをすべての候補ノードに再コピーする必要があります。これは、ポリシー管理型と管理者管理型の両方のデータベースに当てはまります。

    Oracle Clusterwareを使用してデータベースの起動および停止を行うこと、および他の管理用にデータ・ディクショナリにユーザーを定義することをお薦めします。

  • データベース・インスタンスを再配置する前に、データベース・サービス・ユーザーがウォレットに追加されていることを確認する必要があります。crsctl query wallet -type OSUSER -allを実行して、データベース・サービス・ユーザーがウォレットに存在するかどうかを確認します。存在しない場合、crsctl add wallet -type OSUSER -user user_name -passwdを実行して、データベース・サービス・ユーザーをウォレットに追加します。

srvctl relocate databaseコマンドを使用して、Oracle RAC One Nodeデータベースの再配置を実行します。次に例を示します。

$ srvctl relocate database -d rac1 -n node7