DBサーバ構成
全体構成
一般的なオンラインWebシステムでは「アプリケーション・サーバの処理能力 < DBサーバの処理能力」ではないかと思います。構築予定のアプリケーション・サーバは2台なのでDBサーバも2台で十分じゃないの? というところですがノード追加やDBサービスの動作検証をいろいろ試したいのでDBサーバは3台構成です。

ネットワーク
ネットワーク/ポートグループ
Oracle RAC環境ではサービス・ネットワークにあたるパブリック・ネットワークとノード間の通信(インターコネクト)用のプライベート・ネットワークが必要です。また、Data GuardのREDO転送に使用するネットワークも必要ですが、この通信には管理ネットワークを利用します。
ネットワーク | 用途 | ポートグループ | ネットワーク・アドレス |
管理ネットワーク | 管理用/DRサイトへのREDO転送 | Production MG Pub Network | 172.16.10.0/24 |
DBネットワーク (パブリック・ネットワーク) | DB接続 | Production DB Pub Network | 192.168.30.0/24 |
インターコネクト (プライベート・ネットワーク) | RACノード間通信 | Production DB Prv Network | 10.10.20.0/24 |
ホスト名/IPアドレス
RAC環境ではDBサーバのIPアドレス、DBインスタンス接続用の仮想IPアドレスに加えて3個以上の単一クライアント・アクセス(SCAN)用IPアドレスが必要です。
DBサーバの各ネットワーク・インターフェースに割り当てるホスト名とIPアドレスの一覧を以下に記載します。
ネットワーク | DBサーバ#1 | DBサーバ#2 | DBサーバ#3 |
ホスト名(system) | prsdb01.exsample.lan | prsdb02.exsample.lan | prsdb03.exsample.lan |
管理ネットワーク | prsdb01-mgt.exsample.lan 172.16.10.21/24 | prsdb02-mgt.exsample.lan 172.16.10.22/24 | prsdb03-mgt.exsample.lan 172.16.10.23/24 |
DBネットワーク | prsdb01.exsample.lan 192.168.30.21/24 | prsdb02.exsample.lan 192.168.30.22/24 | prsdb03.exsample.lan 192.168.30.23/24 |
DBネットワーク | prsdb01-vip.exsample.lan 192.168.30.31/24 | prsdb02-vip.exsample.lan 192.168.30.32/24 | prsdb03-vip.exsample.lan 192.168.30.33/24 |
インターコネクト | prsdb01-prv.exsample.lan 10.10.20.1/24 | prsdb02-prv.exsample.lan 10.10.20.2/24 | prsdb03-prv.exsample.lan 10.10.20.3/24 |
ネットワーク | SCAN | IPアドレス |
DBネットワーク | prsscan.exsample.lan | 192.168.30.121/24 192.168.30.122/24 192.168.30.123/24 |
名前解決
DNSを使用せずhostsファイルのみを使用してRACを構成することも可能ですが今回はSCANの名前解決にDNS、SCAN以外の名前解決にhostファイルを使用します。なお、DNSにSCANの名前解決を任せる場合はDBサーバのDNS登録も必要です。
ハードウェア
Oracle 21c「Grid Infrastructureインストレーションおよびアップグレード・ガイド」のインストール・チェックリストに記載されたサーバー構成要件は以下の通りです。
・ メモリ(RAM):最小8GB
・SWAP:RAM 16GBまでRAMと同じサイズ。RAM 16GB以上は16GB
・ソフトウェア・ディスクサイズ :Grid Infrastructure分 12GB以上+DB 10GB以上
DBサーバにはチェックリストの値に少し余裕を持たせてリソースを割り当てます。
設定項目 | 設定値 |
CPU | 4 |
メモリ(RAM) | 12 GiB |
SWAP | 12 GiB |
OSその他 | 100 GB |
ソフトウェア用ディスク | 50 GiB |
RAC/DB構成
ASMディスク・グループ
ある程度以上の規模のシステムではストレージの高速バックアップ機能(オールフラッシュ・ストレージではスナップショット)を使用してボリューム・セット単位(=ASMディスク・グループ単位)でDBのバックアップを取得するケースが多いと思います。
今回構築するシステムもこのバックアップ方式を前提にASMのディスク・グループを構成します。
ディスク・グループ | 用途 | ASMディスク(仮想ディスク) | 冗長性 | 合計サイズ |
DG01 | 投票ディスク&OCR格納用 | storage/prsdb/disk001.vmdk(3 GB) storage/prsdb/disk002.vmdk(3 GB) storage/prsdb/disk003.vmdk(3 GB) | 標準 | 9GB |
DG02 | アーカイブログ格納用 | storage/prsdb/disk011.vmdk(10 GB) storage/prsdb/disk012.vmdk(10 GB) | 外部 | 20 GB |
DG11 | REDOログ、一時ファイル格納用 | storage/prsdb/disk101.vmdk(10 GB) storage/prsdb/disk102.vmdk(10 GB) | 外部 | 20 GB |
DG21 | データファイル格納用 | storage/prsdb/disk201.vmdk(30 GB) storage/prsdb/disk202.vmdk(30 GB) | 外部 | 60 GB |
投票ディスク&OCR格納用ディスク・グループ
外部冗長性のディスク・グループでは単一の投票ディスク、標準冗長性のディスク・グループでは最低3個の投票ディスクが作られます。万一投票ディスクが破損するとクラスタ全体が停止してしまうことから投票ディスク、OCR及びメタデータは標準冗長性のディスク・グループに格納します。
なお、標準冗長のディスク・グループに投票ディスクを格納する場合は最低3本のASMディスクが必要です。
アーカイブログ格納用ディスク・グループ
RAC環境のアーカイブログ出力先はすべてのノードからアクセス可能な場所という制約があります。ファイル操作という面では管理サーバのNFSにアーカイブログを出力したいところですが、NFSやネットワークの障害でアーカイブログが出力できなくなるとDB処理も停止してしまいます。そこでアーカイブログの出力先はASMディスク・グループ、アーカイブログ・バックアップの保管場所を管理サーバのNFSとします。
REDOログ、一時ファイル格納用ディスク・グループ
オンライン・バックアップを使用したDBバックアップにリストアの対象外である一時ファイルやREDOログを含めることにはデメリットしかないのでデータファイル格納用のディスク・グループとREDOログ・一時ファイル格納用のディスク・グループを分けて構成します。
データファイル格納用ディスク・グループ
「Oracle Automatic Storage Management 管理者ガイド 21c」によるとディスク・グループあたりの推奨ディスク本数は「アクティブなI/Oパスの少なくとも4倍」となっています。この本数には冗長性その他の前提や具体的な根拠が書かれておらず、HDDのシークに伴うI/O分散を意識したルールのようにも思えます。
ただし、SSDを使用したオールフラッシュ・ストレージでもディスク・グループを複数ディスク(LU)で構成することでI/Oキューや優先コントローラ、I/Oパス分散の効果は見込めるようなので、データファイル格納用ディスク・グループを始めとする各ディスク・グループは投票ディスク&OCR格納用を除きすべて2本のASMディスクで構成します。
【補足】
上に書いた複数LUを使用したディスク・グループ構成の効果は本物のオールフラッシュ・ストレージを使用した場合です。今回構築する環境ではストレージ側ではなく仮想マシン側にディスク共有用のSCSIコントローラを一つ持たせるだけ(最大4個まで実装できるがそこまでやりたくない)、またESXiの仕様上仮想マシンにマルチパスを構成することもできないのでまあ、効果はまったくないかと。それでも複数LUでのディスク・グループ構成としたのはなるべく本物っぽくやりたいからということで。
OSユーザ及びグループ
Grid Infrastructure及びOracle Database用OSアカウントは以下の通りとします。
グループ | ID | 用途 |
oinstall | 1100 | Oracle製品所有者 |
asmadmin | 1101 | Oracle ASM管理者グループ |
asmdba | 1102 | ASM用OS DBAグループ |
racdba | 1103 | OS RAC DBAグループ |
dba | 1104 | Oracle DB管理者グループ |
ユーザ名 | ID | プライマリ・グループ | 所属グループ | 用途 |
grid | 1100 | oinstall | asmadmin,asmdba,racdba,dba | Grid Infrastructureバイナリ所有者 |
oracle | 1101 | oinstall | asmdba,racdba,dba | Oracle Databaseバイナリ所有者 |
DBサービス
DB名及びPDB名
非常に残念なことですがOracle 20c以降、非マルチテナント構成(従来のシングル構成)はサポート対象外となりました。本番DBはマルチテナントで構成します。本番DB名及び本番PDB名は以下の通りです。
DB | DB名 |
本番DB(Production Database) | PRDB |
本番PDB(Production Pluggable Database) | PRPDB |
DBサービス
DB構築時に作成されるデフォルト・サービスは管理用に使用するものでありプロパティの変更もできず、「Real Application Clusters管理およびデプロイメント・ガイド」でもRAC環境でアプリケーションのDB接続には使用しないように明記されていることから、本番DBのアプリケーション接続用にDBサービスを追加します。
サービス名 | 用途 | 設定 |
online_srv | オンライン・アプリケーション接続用 | PDB:prdpdb 優先インスタンス:prddb1,prddb2 フェイルバック:NO TAFポリシー:BASIC サービス管理ポリシー:AUTOMATIC 高速アプリケーション通知:TRUE 接続時ロード・バランシング目標:SHORT フェイルオーバー・タイプ:SESSION ランタイム・ロード・バランシングの目標:THROUGHPUT 接続リトライ回数:3 再接続試行間の時間遅延(秒):5 |
batch_srv | バッチ・アプリケーション接続用 | PDB:prdpdb 優先インスタンス:prddb3 使用可能インスタンス:prddb2 フェイルバック:NO TAFポリシー:BASIC 高速アプリケーション通知:TRUE フェイルオーバー・タイプ:SESSION 接続リトライ回数:3 再接続試行間の時間遅延(秒):5 |
ちなみにデフォルト・サービスを使用したDB接続のフェイルオーバー設定はインスタンスが停止した場合は機能しますが、インスタンスが起動している状態でPDBが停止した場合は機能せず、障害ノードに再接続しようとしてエラーになったりします。
ディスク・レイアウト
本番DBのディスク・レイアウトは以下の通りです。ストレージ機能を使用したDBオンライン・バックアップではDG21のASMディスク(disk201、disk202)を対象にスナップショットを取得します。

その他、細かい事項については構築の各段階に記述します。ということで、まずはDBサーバの構築から
参考情報
「DBサーバ構築」を書くにあたり、以下の情報を参考にさせていただきました。
【Device Mapper Multipath】
Device Mapper Multipath の設定 | Red Hat Product Documentation
【Grid Infrastructure】
Oracle Grid Infrastructure Grid Infrastructureインストレーションおよびアップグレード・ガイド 21c for Linux
Oracle ASMストレージに関する考慮事項の確認
Oracle Real Application Clusters Real Application Clusters管理およびデプロイメント・ガイド, 21c
動的データベース・サービスによるワークロード管理
Oracle Real Application Clusters管理およびデプロイメント・ガイド12c リリース1 (12.1)
Oracle Databaseデータベース・インストレーション・ガイド, 21c for Linux
avahi-daemon サービスとは何ですか? これを無効にすることはできますか? – Red Hat Customer Portal
仮想化環境での時間管理入門
また、このページを書くにあたり、ChatGptさんに大変助けていただきました。具体的には以下の事項でご支援いただいています。
- オールフラッシュ・ストレージのデータ管理及びアクセス制御の仕様的傾向
- オールフラッシュ・ストレージ主要製品のアクセス制御方法
- ESXi ゲストOSの仮想ディスクを対象としたストレージ・スナップショットのシミュレート
- 投票ディスク格納ディスク・グループの冗長性
- サーバ、クライアントのDB接続役割分担とサーバ・サイドの設定
厚くお礼申し上げます。
コメント