エンタープライズ・グリッドを実現するには,何百台とつながるシステムの管理作業をいかに軽くするかが大きな課題となる。Oracle Database 10gは,このような課題を解決する自己診断エンジン,自動チューニング・オプティマイザや自動メモリー管理機能など,データベース自身が自己管理するフレームワークを搭載した。

図1●データベース管理者の作業内容
図1●データベース管理者の作業内容
米Oracleが実施した調査によると,データベース管理者の作業のうち,システム管理業務が大きな割合を占めることが分かる
 これまでのデータベース管理は専門的なスキルが要求されるものと認識されている。データベース管理者(DBA)は,データベースの知識に精通し,日常の業務を遂行しつつ,安定したシステム運用をサポートすることがその役割である。米Oracle独自の調査によるとDBAの作業のうち,日常のシステム管理業務が大きなウエイトを占める(図1[拡大表示])。この中にはパフォーマンスのモニタリングやチューニング,セグメントの断片化の解消を行う領域管理などがあり,いずれもシステムを安定して運用するためには必要不可欠な作業である。しかしながら,IT投資の増大に伴い,これらのシステム管理コストは増加の一途をたどり,企業の利益率を圧迫する要因となっている。今後,こうした管理コストの低減が求められるのは明白であり,Oracleはこの問題を解決する新たな管理フレームワークを搭載したデータベースを提供する。

データベース自身による自己管理

図2●自動化に関するOracle Database 10gの主な新機能
図2●自動化に関するOracle Database 10gの主な新機能
10gではデータベース自身が自己の状態を認識するようになり,その情報を使用することでデータベース管理者の運用作業を自動化できるようになった
 Oracle Database 10gによる自己管理によって,自動化できる範囲は多岐にわたる。代表的な例には図2[拡大表示]のようなものがある。前版であるOracle9i Databaseでは,オンライン・メンテナンスの機能を実装し,システム稼働中においても簡単な操作で,パラメータを動的にチューニングできるようになるなど,システムの停止時間を削減しつつ,管理性の向上に努めた*1。Oracle Database 10gとOracle 9i Databaseとの大きな違いは,データベース自身が自己の状態を認識することにある。データベースが自己の状態に関する情報を収集し分析することで,システム稼働中におけるワークロードの変化に応じた調整や,問題発生時の自動修正などが可能になった。

 Oracle Database 10gは,管理ツールの進化によって自律系の機能を提供するのではなく,データベース本体が自身の負荷状況を診断した上で,必要な処置を行う。管理ツールであるOracle Enterprise Manager 10gはデータベース本体の自律系の機能と連動した単なるモニター機能か管理コンソールとしての機能として位置付けられる。自己管理インフラストラクチャがOracleのコア・データベース・エンジンに統合されることで,通常のサービスを提供すると同時に,リアルタイムに,自己管理の意思決定による効率的なシステム運用を実現できる。

 従来まで,パフォーマンス劣化などが発生した際,DBAが問題のボトルネックを調査した上で適切に対処する必要があった。この調査だけでもノウハウと時間が必要であり,適切な対処も同様に高度なスキルが必要であった。Oracle Database 10gではパラメータの設定は減らし,ポリシーを設定しておくだけで,リポジトリに格納された負荷状況からデータベースの自己診断機能がボトルネックの調査を行い,適切な対処方法を提示するか,データベース自身で自動的にチューニングされるようになる。これにより,DBAの経験が浅くても,高度な管理を行えるようにした。同時に,手作業による管理,とくにルーチンワークの作業を最小限にすることを実現した。

 また,Oracle Database 10gには,データベースからDBAに対して,迅速にイベントを通知するアラート機能が搭載されている。DBAはアラートの通知を受けると同時に,Oracle Enterprise Manager 10gを使って,迅速,かつ適切な対応で問題を解決できる。Oracle Enterprise Manager 10gは,アラート機能と連動しており,アラート状況の詳細情報やその対処方法のガイドがウイザード形式で提供する。

自動データベース機能を実現するインフラストラクチャ

図3●Oracle Database10gの自己管理機能の仕組み
図3●Oracle Database10gの自己管理機能の仕組み
自己管理機能は主に,(1)データベースに関する情報を収集するAWR,(2)問題を診断し原因を突き止めるADDM,(3)DBAにアラートを通知するだけでなく解決方法も知らせるServer Generated Alerts,(4)システムを最適な状態にアドバイスするアドバイザ・フレームワーク,(5)AWRから得られた情報により定期的に実行すべきタスクを自動的に実施する自動更新タスク・インフラストラクチャ,の5つの要素からなる
 Oracle Database 10gの自己管理インフラストラクチャは,自動ワークロード・リポジトリAWR(Automatic Workload Repository),自己診断エンジンADDM(Automatic Database Diagnostic Monitor),Server Generated Alerts,アドバイザ・フレームワーク,および自動更新タスク・インフラストラクチャ,という5つのコンポーネントからなっている(図3[拡大表示])。

 AWRは自己診断機能の中心であり,データベースの稼働状況に関する情報が格納されたリポジトリである。各コンポーネントはAWRの情報をもとに,Oracleデータベースに関する処理はADDMにより,ストレージの領域拡大やメモリーの追加などハードウエアに関する処理はServer Generated Alertsによって,適切な処理が指示される。ADDMは,AWRの情報を利用して動作する自己診断機能の本体である。ADDMの診断結果とそれらの問題の種類によって,アドバイザ・フレームワークがこれらの問題解決にあたる。


STATSPACKを強化した情報収集リポジトリ

 AWRは,Oracle Database 10gの組み込みリポジトリで,定期的に収集した情報のスナップショットが格納されている(図4[拡大表示])。AWRは,Oracle Database 10gが搭載するすべての自己管理機能の基盤であり,Oracle Database 10g安定稼働のためのデータ・ウエアハウスともいえる。

図4●AWRの仕組み
図4●AWRの仕組み
AWRは,新しいバックグラウンド・プロセスであるMMONによって取得される。MMONは,定期的(30分毎)にSGAの情報を取得し,データベース内の新しい表領域「SYSAUX表領域」に格納する。情報は取得した時間ごとにまとめられ,スナップショットと呼ばれる単位で管理される。また,格納された情報は一定期間保存され,その後自動的に削除される
 AWRは初期インストール後,自動実行でOracleシステムの操作に関するデータを30分ごとに収集し,データベースに格納するように設定される。一定期間(デフォルトでは7日間)データを保持した後,その期間を超えたデータは自動的に破棄される*2。AWRは軽量で,完全な自己管理型として設計されており,管理者による管理はいっさい不要である。

 これまで,Oracleデータベースに関する情報を取得するためには,Oracle8i Database R8.1.6から導入されたSTATSPACKスクリプトを使用することが多かった。STATSPACKは,パフォーマンス・データの収集や分析を行うためのツールである。STATSPACKテーブルに格納されている任意の時点間のスナップショットの差分分析を行い,バッファ・キャッシュやライブラリ・キャッシュ,ディクショナリ・キャッシュのヒット率といった基本的なものから,「TOP 5 WAIT EVENTS」というシステムを遅延させる原因のトップ5など,チューニングにとって非常に役立つデータを取得できる。このツールは非常に有益ではあるが,DBAが必要に応じて実行して初めて,問題を診断するための情報を引き出せる仕組みになっている。

 AWRはその考えをさらに強化し,STATSPACKが取得していたデータに加え,稼働統計やワークロード情報のスナップショットなどOracle Database 10gの実際の使用履歴そのものを自動的に取得し,リポジトリに格納する。また,直接SGA(システム・グローバル領域)からデータを取得するなど,データの取得方法を効率化し,オーバーヘッドを最小化するよう設計されている。