Oracleデータベースは健全に運用されていれば、初期導入時と同様に問題なく稼働しているはずです。しかし、日々大量のデータの保存・削除などを繰り返していれば、何らかの負荷がかかってくるものです。データベースが正しく設計・設定され運用されていても、問題があればOracleは何らかのサインを送ってくるはずです。障害が発生する前にそれを察知することが重要です。「レスポンスが悪い」などの苦情は特に注意すべき問題です。
Oracleのシステムを考えていくうえで、システムの構成要素を基に要素単位で考えることは非常に有効です。しかし、Oracleのアーキテクチャは複雑ですべてを詳細に理解するのは大変です。そこで問題解決に役立つようOracleアーキテクチャを大まかに分類してみました。前述したログの監視は、本連載で扱う障害対策とは別に、日々の運用で活用する内容なので0番目の分類としました。
第0ステップ | ログの確認 | 日常業務 |
---|---|---|
第1ステップ | CPU/メモリの監視 | 問題の切り分け および 障害対策業務 |
第2ステップ | SQL処理にかかわる確認 | |
第3ステップ | SGAの調整 | |
第4ステップ | システム設定項目の確認 | |
第5ステップ | 領域の確認 | |
第6ステップ | ディスクの確認 | |
表2 問題解決に有効な6ステップ |
Oracleのパフォーマンス障害に直面したら、この6つのステップに分類した内容の順に確認を行うことで、効率的に問題解決に近づくことができます。今後は上記のステップに沿って解説していきます。
Oracle障害克服の第1ステップはCPU/メモリの監視です。つまりOSマシンが正常に稼働している状態であるかを確認します。Oracleシステム本体だけでなく、OSやメモリチューニングもサーバ稼働には重要な要素となのです。今回はWindows系OSとUNIX系OSでCPU/メモリの監視を行う作業を説明します。
Windows系のOSでは、リアルタイムで継続的に情報を取得するためにはツールや作り込みが必要ですが、ここではOS付属のツールを使った例を紹介します。UNIX系のOSはCPU/メモリ情報を取得するコマンドが用意されています。
Windows系OS
【スタートメニュー】から【ファイル名を指定して実行】を選択し、ダイアログから「TASKMGR」と入力して【OK】とすると「Windows タスク マネージャ」が起動します。
【プロセス】タブで「oracle.exe」や「TNSLSNR.EXE」といったOracle関連アプリケーションについて、プロセスごとのCPU時間やメモリ使用時間を確認できます。【パフォーマンス】タブで履歴を確認することもできます。
UNIX系OS(Linux、Solarisなど)
unix# ps -ef | grep ora
CPU/メモリの診断
上記の確認で、CPUの負荷やメモリの消費量について考える必要があります。あるタイミングで極端にCPUの使用率が上昇するようであれば、何らかのユーザー処理(SQL文など)で負荷の高い処理が行われていると考えられます。このような原因に対する対処法は、次回に解説する「第2ステップSQL処理にかかわる確認」で詳しく解説します。
また、SYSTEM CPUの使用率が高く、かつメモリも空き領域がなくなってしまっている場合、単純にOracleデータベースサーバ設計時の設定上の問題ですので、「第4ステップ設定項目の確認」で解説する内容を基に確認する必要があります。また、スワッピングやページングが発生している可能性も考えられます。「第6ステップ ディスクの確認」の項目で解説する内容を基に、ディスクI/Oなどを疑ってみることが必要です。まずはハードウェアの状況確認が大切であることを考慮に入れておいてください。
今回はOracle障害克服の概要と最初に行うべき作業としてステップ0とステップ1を解説しました。次回からは第2ステップ以降の内容について、問題切り分けとその対処法を紹介していきます。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.