Oracle ASM の日常運用と障害シナリオ
Oracleレベル: 上級所要時間: 10 分~数時間 (リバランスの所要時間による)構築済みの Oracle Restart または RAC における ASM ディスクグループの日常運用と障害時の対応です。容量チェック (usable_file_mb)、リバランスの監視、ディスクの追加/交換/削除、オフラインディスク、新規ディスクグループ、マウント/ディスマウント、ASM 構成のバックアップ、検出文字列を扱います。ASM のインストールは扱いません (インストール: Oracle Restart または RAC のガイド)。エラーコード (例: ORA-15041、ORA-15042) で検索すると該当するシナリオが開きます。各シナリオは 診断 → セーフティネット → 実施 → 検証 → 事後作業 の構成で、データベースはオープンしたままです (ディスマウントを除く)。
構成: Oracle Restart (単一サーバー) または 2~8 ノードの RAC、Grid Infrastructure 19c (23ai/26ai との違いは注記を参照)
シナリオ
- 容量とディスクグループの健全性チェック — 何も変更しません。ディスクグループがいっぱいか、残り容量はどれだけか (冗長性ごとの usable_file_mb の正しい読み方)、オフラインディスク、ディスクの偏り、互換性属性を確認します。容量の問題、アラート、定期チェックで最初に選ぶカードです。
- リバランスを監視する、速くする、遅くする — 実行中のリバランス/再同期の進捗と残り時間 (v$asm_operation、est_minutes)、および POWER の変更。データベースはオープンしたままで、I/O 負荷だけが変わります。
- ディスクグループに新しいディスクを追加する — ディスクグループの空き容量が減った、または拡張が必要な場合です。新しい LUN をすべてのノードで準備し (multipath/udev/ASMLib/AFD)、ADD DISK で追加し、リバランスを監視します。データベースはオープンしたままです。
- ディスクを新しいディスクと交換する (REPLACE DISK) — 障害が発生した (オフラインの) ディスク、または更新対象のディスクを 1 回の操作で新しいディスクに交換します。そのディスクのデータだけがコピーされます (12.1 以降、NORMAL/HIGH)。EXTERNAL では追加と削除を 1 つのコマンドで行います。データベースはオープンしたままです。
- ディスクグループからディスクを削除する — LUN を返却する、またはストレージから外す場合です。DROP DISK でデータを残りのディスクに移動します。リバランスが終わってディスクが FORMER になるまで、ディスクは取り外しません。データベースはオープンしたままです。
- ディスクがオフラインまたは障害 (NORMAL/HIGH 冗長性) — NORMAL/HIGH のディスクグループでディスクが OFFLINE と表示される、またはアラートログに書き込み/読み取りエラーがある場合です。診断、disk_repair_time の猶予時間、パスが直った場合の ONLINE DISK (高速ミラー再同期)、修理が長引く場合の猶予時間の延長を扱います。データベースはオープンしたままです。
- 新しいディスクグループを作成する — データ、FRA、アプリケーション用の新しいディスクグループを作成する場合です。冗長性、AU サイズ、compatible.asm/rdbms 属性、RAC ではすべてのノードでのマウントと Clusterware リソースを扱います。既存のディスクグループには影響しません。
- ディスクグループをマウントまたはディスマウントする — ディスクグループを計画的に停止する (ディスマウント) 場合、または停止中/オープンできないディスクグループをオープンする (マウント) 場合です。すべてのノードで srvctl start/stop diskgroup を使います。ディスマウントでは、ディスクグループを使用しているデータベースがあってはいけません。マウントできない場合はエラーコードに応じて案内します。
- ASM の spfile、パスワードファイル、メタデータのバックアップ — 停止不要です。ASM の spfile、パスワードファイル、ディスクグループ構造 (md_backup)、RAC では GPnP プロファイルを ASM の外にバックアップし、ディスクグループを失っても ASM 構成を再構築できるようにします。構築後と、構造を変更するたびに実行してください。
- ASM ディスク検出文字列 (asm_diskstring) を変更する — ASM がディスクを探すパスのパターンを変更する場合です (例: multipath への移行、新しい udev ディレクトリ、ASMLib/AFD)。まず kfod で試し、その後 asmcmd dsset を実行します。既存のすべてのディスク (OCR/投票ディスクを含む) が新しい文字列でも検出される必要があります。
開始前の確認
- root でアクセスでき、grid ユーザーのログインシェルを使えること。grid のプロファイルで ORACLE_HOME=… と ORACLE_SID (+ASM…N…) が設定されること。SQL のステップは sqlplus / as sysasm で実行します。
- ストレージチームが新しい LUN を…すべてのノードに…提供済みで、サイズが既存ディスクと同じであること。WWID (または VM ディスクのシリアル番号) が手元にあり、ディスクが空であること (ファイルシステム、LVM、古い ASM ヘッダーがない)。
- ディスクグループ内のデータベースの最新の RMAN バックアップがあること。操作は I/O 負荷を生むため、負荷の低い時間帯を選んであること。
- … で他のリバランスが実行中でないこと (大きな操作を 2 つ同時に開始しないでください)。
ガイドのフェーズ
- 容量と健全性のチェック — ディスクグループの使用状況を表示する · ディスクのバランスと状態を確認する · 互換性と修復の属性を表示する · ディスクグループごとの使用量と実行中の操作
- リバランスの監視とパワー設定 — 実行中の操作とパワー設定を表示する · リバランスのパワーを変更する · リバランスの完了まで監視する
- ディスク追加: 診断 — … ディスクグループの状態を表示する
- 新しいディスクの準備 — 新しい LUN をスキャンして識別する… (…)… · 新しい LUN をスキャンして識別する… (…)… · multipath のエイリアスを定義する · 新しいディスクを udev ルールに追加する · ディスクにパーティションを作成し、ASMLib ラベルを書き込む… (ノード 1 のみ)… · 他のノードでラベルを読み取る (…) …
- ディスク追加: 実施 — ディスクを … ディスクグループに追加する · リバランスの完了まで監視する
- ディスク追加: 検証 — 新しいディスクがメンバーになったことを確認する · 事後作業
- ディスク交換: 診断 — … ディスクグループの状態を表示する · 交換するディスクの状態を表示する
- 新しいディスクの準備 — 新しい LUN をスキャンして識別する… (…)… · 新しい LUN をスキャンして識別する… (…)… · multipath のエイリアスを定義する · 新しいディスクを udev ルールに追加する · ディスクにパーティションを作成し、ASMLib ラベルを書き込む… (ノード 1 のみ)… · 他のノードでラベルを読み取る (…) …
- ディスク交換: 実施 — 古いディスクがまだ ONLINE ならオフラインにする · ディスクを新しいディスクと交換する · 新しいディスクを追加し、古いディスクを削除する (EXTERNAL) · リバランスの完了まで監視する
- ディスク交換: 検証と事後作業 — 交換を確認する · 古いディスクのヘッダーを確認する
- ディスク削除: 診断 — … ディスクグループの状態を表示する · 削除後に容量は足りるか
- ディスク削除: 実施 — ディスクを … から削除する · リバランスの完了まで監視する
- ディスク削除: 検証と OS からの削除 — 削除したディスクが FORMER になったことを確認する · ディスクを OS から削除する
- 障害ディスク: 診断 — オフラインのディスクと残り時間を表示する · OS でディスクのパスを確認する… (…)… · OS でディスクのパスを確認する · ASM のアラートログでディスクのイベントを探す
- 障害ディスク: ディスクを復帰させる (ONLINE) — ディスクをオンラインにする · 再同期の完了まで監視する · ディスクがオンラインになったことを確認する
- 障害ディスク: 削除までのタイマーを延長する — オフラインのディスクに新しいタイマーを設定する · 修理の後
- 新規ディスクグループ: 診断 — 既存のディスクグループと候補ディスクを表示する
- 新しいディスクの準備 — 新しい LUN をスキャンして識別する… (…)… · 新しい LUN をスキャンして識別する… (…)… · multipath のエイリアスを定義する · 新しいディスクを udev ルールに追加する · ディスクにパーティションを作成し、ASMLib ラベルを書き込む… (ノード 1 のみ)… · 他のノードでラベルを読み取る (…) …
- 新規ディスクグループ: 作成 — … ディスクグループを作成する · すべてのノードでディスクグループをマウントする · ディスクグループのリソースを確認する
- 新規ディスクグループ: 事後作業 — ディスクグループを使用開始する
- マウント / ディスマウント: 診断 — ディスクグループの状態と使用者を表示する · Clusterware リソースを表示する
- ASM の spfile、パスワードファイル、メタデータのバックアップ — ASM の spfile とパスワードファイルの場所を表示する · バックアップディレクトリを作成する · バックアップを取得する · バックアップをサーバー外にコピーする
- 検出文字列: 診断 — 現在の文字列とメンバーディスクのパスを表示する · 新しい文字列ですべてのメンバーディスクが検出されることを確認する
- 検出文字列: 実施と検証 — 検出文字列を変更する · すべての ASM インスタンスで確認する