0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

みなさん、こんにちは!
Oracle Real Application Clusters(Oracle RAC)One Node は、Oracle Database 11g Release 2 で導入された、Oracle Database Enterprise Edition の有償オプション機能です。
本記事ではRAC One Nodeに関する内容を記載します。
※本記事でご紹介する図やコマンド、コマンド結果に出てくるDB名は「testdb」と表記しております。

RAC One Nodeとは

端的に言えば、その名の通り、1つのノードでのみインスタンスを稼働するRACです。

RACはアクティブ-アクティブ構成を持ち、構成するすべてのノードがアクティブ状態で稼働しています。これにより、複数のインスタンスが並行して動作する形となります。
RAC One Nodeも同様にOracle Grid Infrastructure(Oracle Clusterware、Oracle ASM)を使用したクラスタ環境ですが、アクティブノード(稼働系)とパッシブノード(待機系)の2ノード(アクティブ-パッシブ)構成で、インスタンスは常に1ノード上でのみ稼働します。

データベースとデータベースインスタンスの関係性として、RAC One Nodeでは1対1であるのに対して、RACは1対複数です。複数のインスタンスであっても同一のデータベースファイルにアクセスします。
image.png

フェイルオーバーとライブマイグレーション

RAC One Node構成では、アクティブノードからパッシブノードへの切り替えが発生するパターンとして、フェイルオーバーとライブマイグレーションの2つが挙げられます。

① フェイルオーバー(障害発生時の自動ノード切り替え)

RAC One Nodeでは、アクティブノードで障害が発生した場合、インスタンスは自動的にパッシブノードで起動し、サービスが再開されます。このとき、アクティブノードのリソースがそのまま移動するため、データベースインスタンスSIDにも変更はありません。
ただし、フェイルオーバー時は、パッシブノード側でインスタンスが起動するまでの数分間はサービス停止が発生します。
image.png

② ライブマイグレーション(計画的なノード切り替え)

ライブマイグレーションとは、DBインスタンスの停止なしでノード切り替えを行うことができる機能です。ライブマイグレーションにより、パッチ適用時などもデータベースサービスを停止させることなく、作業を実施することができます。
フェイルオーバーと異なり、パッシブノードにて新たにインスタンスを起動するため、ライブマイグレーション後はインスタンスSIDの末尾の数字(接尾辞:_1、_2など)が変更されます。
そのため、SIDを固定して接続している場合は別途対応が必要となります。
image.png

10日間ルール

RAC One Nodeでは10日間ルールが適用されるため、パッシブノード分のライセンスがなくても利用することができます。
しかし、フェイルオーバー、ライブマイグレーション、その方法に関わらず、パッシブノードでインスタンスが起動した日数が年間10日間を超えた場合は、パッシブノード分のライセンスも追加で必要となります。

10日間ルールに関しては、下記の記事「Oracle SEHAとは」で詳しく説明されているので、是非読んでみてください。
Oracle SEHAとは

RAC One Nodeの拡張性

RAC One Nodeは、RACへアップグレードすることで、スケールアウトすることができます。構成変更時にDBを停止する必要はないため、サービスの中断なしでRACへの構成変更が可能です。

※RACへのアップグレードには、適切なライセンスが必要となります。

RACへの構成変更

実際にRAC One NodeからRACへ構成変更を実施した手順をご紹介します。

・事前確認

【実行コマンド】

$ srvctl config database -db testdb

【実行結果例】

一意のデータベース名: testdb
データベース名: testdb
Oracleホーム: /u01/app/oracle/product/19.0.0/dbhome_1
Oracleユーザー: oracle
spfile: +DG_DATA2/testdb/PARAMETERFILE/spfile.xxxxx
パスワード・ファイル: +DG_DATA2/testdb/PASSWORD/pwdtestdb.xxxxx
ドメイン:
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール:
ディスク・グループ: DG_DATA2
マウント・ポイントのパス:
サービス: testdb_service
タイプ: RACOneNode
オンライン再配置タイムアウト: 30
インスタンス名接頭辞: testdb
候補サーバー: node1
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス: testdb_1
CSSクリティカル: no
CPU数: 0
メモリー・ターゲット: 0
最大メモリー: 0
データベース・サービスのデフォルト・ネットワーク番号:
データベースは管理者によって管理されています

特に何の変更も加えていないRAC One Node構成なので「タイプ: RACOneNode」と表示されます。

・構成変更

$ srvctl convert database -db testdb -dbtype RAC

コマンド実行後は特に何もメッセージは出力されずにプロンプトが返ってきました。
-dbtypeの指定を変更することでRACからRAC One Nodeへの逆パターンの構成変更も可能です。

※補足
構成変更はコマンドひとつでできますが、RACとして利用するためには、インスタンスやデータベースサービスの作成、tnsnames.oraの修正など、構成変更後に設定作業が必要となります。
また、構成変更後は自動的にSCANやSCANリスナーが起動します。

・事後確認

【実行コマンド】

$ srvctl config database -db testdb

【実行結果例】

一意のデータベース名: testdb
データベース名: testdb
Oracleホーム: /u01/app/oracle/product/19.0.0/dbhome_1
Oracleユーザー: oracle
spfile: +DG_DATA2/testdb/PARAMETERFILE/spfile.xxxxx
パスワード・ファイル: +DG_DATA2/testdb/PASSWORD/pwdtestdb.xxxxx
ドメイン:
開始オプション: open
停止オプション: immediate
データベース・ロール: PRIMARY
管理ポリシー: AUTOMATIC
サーバー・プール:
ディスク・グループ: DG_DATA2
マウント・ポイントのパス:
サービス: testdb_service
タイプ: RAC
開始の同時実行性:
停止の同時実行性:
OSDBAグループ: dba
OSOPERグループ: oper
データベース・インスタンス: testdb_1,testdb_2
構成されたノード: node1,node2
CSSクリティカル: no
CPU数: 0
メモリー・ターゲット: 0
最大メモリー: 0
データベース・サービスのデフォルト・ネットワーク番号:
データベースは管理者によって管理されています

事前に確認していたタイプが「タイプ: RAC」という表示に変更されていることやノードが2つになっていることが確認できます。
インスタンスを作成すれば、追加したインスタンスも表示されるようになります。(上記の実行結果例はインスタンス作成済み)

実際に本番運用されている環境で構成変更を行う場合には、もっと留意すべき事項や設計上の考慮漏れがないよう検証する必要があるかと思いますが、構成変更は思ったよりも少ない手順で実施できました。

おわりに

簡単にですが、RAC One Nodeの概要についてお話しました。
少しでも参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?