連載
» 2006年04月14日 00時00分 公開

ORACLE MASTER Bronze DBA講座(12):Oracleデータベースの自己診断と最適化

Oracleデータベースエンジニアとしての実力を証明するORACLE MASTER資格。その入り口であるBronze資格の取得は難しくない。本連載と、同時掲載中の連載「Bronze SQL基礎I 講座」で合格を目指そう!(参考記事:「Oracle 10g対応のORACLE MASTERとは?」)

[有限会社 G.F.インフィニティ (Project - ∞)]

 前回「Oracleのデータを復元する」で、Oracleデータベースのバックアップ/リカバリについて学びました。最終回の今回は、データベースの監視とアドバイザの使用を紹介します。

理解しておきたいこと

1.確認しておきたい内容

  • Oracleの自己診断アーキテクチャ
  • アドバイザを使用したデータベースパフォーマンスの最適化

2.自動ワークロードリポジトリ

 Oracle Database 10gでは、自動ワークロードリポジトリ(AWR)を使用して、データベースの状況を定期的に保存(スナップショット)しています。この内容を利用してデータベースを監視し、今回紹介するサーバ生成アラートを出力したり、各種アドバイザを使用してデータベース調整のアドバイスを入手したりすることができます。

 自動ワークロードリポジトリでは、デフォルトで60分に一度スナップショットが取得され、7日間保存されます。設定変更は、Database Controlの「管理」タブ→「ワークロード」リージョンの「自動ワークロードリポジトリ」から行います。

3.各種アドバイザ

 Database Controlの「ホーム」ページのホストCPUやアラート表、「パフォーマンス」タブなどを使用して、現在のデータベース状況を確認することができます。データベース全体のアドバイザであるAutomatic Database Diagnostic Monitor(ADDM)が使用できるのであれば、自動ワークロードリポジトリにスナップショットが作成されるタイミングでADDMが起動され、Oracleサーバ全体の問題点と問題解決の推奨事項を生成してくれます。

 そのほかの各種アドバイザはADDMから起動するように推奨されることもありますが、手動で起動することもできます。Oracle Database 10gで扱っているアドバイザには次のものがあります。

SQLチューニングアドバイザ SQL文を分析して、パフォーマンス向上のための推奨事項を提供
SQLアクセスアドバイザ SQLワークロードを基に、索引とマテリアライズドビューを作成するための推奨事項を提供
メモリアドバイザ 自動共有メモリ管理の設定や、共有プール、データベースバッファキャッシュのアドバイザを提供
MTTRアドバイザ 平均リカバリ時間(Mean Time To Repair)を表示し、平均リカバリ時間の変更(FAST_START_MTTR_TARGET初期化パラメータ)を行う
セグメントアドバイザ セグメントの断片化を検出し、縮小可能なセグメントを決定するのに役立つ
UNDOアドバイザ UNDO保存期間の最低値や必要なUNDO表領域のサイズの見積もりを提供

 各アドバイザには、Database Controlのいずれかのタブの「関連リンク」リージョンの「セントラルアドバイザ」からアクセスできます(図1)。

図1 アドバイザへのアクセス(クリックで全体を表示します) 図1 アドバイザへのアクセス(クリックで全体を表示します)

問題

問題1

Oracle Enterprise Manager Database Controlにて自動共有メモリ管理機能を有効化するためには、どのページを使用しますか。

a.メモリアドバイザ
b.SQLチューニングアドバイザ
c.SQLアクセスアドバイザ
d.自動ワークロードリポジトリ
e.メトリックの管理
f.セグメントアドバイザ

正解:a

解説

 自動共有メモリ管理機能ですから、メモリを管理しているページを使用します。Database Controlの「管理」タブ→「インスタンス」リージョンの「メモリーパラメータ」ページから構成できますが、もう1つの方法として「セントラルアドバイザ」ページの「メモリーアドバイザ」ページを使用することがあります(正解a)。

 どちらの方法でも同じページが表示されます。自動共有メモリ管理機能に関しては、本連載第5回「Oracleインスタンスを管理する」を参考にしてください。

 選択肢d選択肢eはアドバイザとは関連のないものですが、不正解の選択肢も含め、どのアドバイザがどのような機能を持っているかを確認しておきましょう。

問題2

次の資料を確認してください。

(クリックで全体を表示します) (クリックで全体を表示します)

フラッシュバック機能にてフラッシュバックできることが保証されている時間はどこで確認できますか。

a.UNDO保存の低しきい値
b.可能な最適のUNDO保存
c.新規UNDO保存の必要な表領域サイズ
d.拡張可能UNDO表領域の最大サイズ

正解:a

解説

 フラッシュバック問い合わせ、フラッシュバックバージョン問い合わせ、トランザクション履歴フラッシュバックは、すべてUNDOデータを使用してフラッシュバックされます。UNDOアドバイザページで表示される「UNDO保存の低しきい値」に表示されている期間はUNDOデータが保存されていますので、フラッシュバックが可能です(正解a)。しかし、UNDO表領域サイズが不足すると上書きされてしまうので、厳密には保証されているとはいえません。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢b:現在のUNDO表領域から導き出したUNDO保存可能期間です。しかし、トランザクション中のUNDOデータは絶対に上書きされないので、実際のトランザクションの動作によっては、必ず保証されるとはいえません。

選択肢c:指定したUNDO保存期間を保証するために必要とされるUNDO表領域サイズです。

選択肢d:UNDO表領域のデータファイルの自動拡張が有効になっている場合、最大どこまで拡張できるかというサイズです(最大ファイルサイズ)。

問題3

UNDOアドバイザページを使用して推奨される要素を3つ選択しなさい。

a.UNDOデータの保存に必要な表領域サイズ
b.拡張可能なUNDO表領域の最大サイズ
c.UNDO表領域を作成するタイミング
d.現在のUNDO表領域にて可能な保持期間
e.UNDOアドバイザを実行する頻度
f.UNDO表領域の最適化を行うタイミング
g.自動チューニングされたUNDO保存を使用するタイミング

正解:a、b、d

解説

 問題2の資料を確認すれば簡単な問題ですが、同時に出題されるとは限りませんね。UNDOアドバイザページに表示される要素は覚えておきましょう。正解となる選択肢はページに表示されているとおりです。見直しておいてください。

 表領域を作成するタイミング(選択肢c)、アドバイザを実行するタイミング(選択肢e)、UNDO保存を使用するタイミング(選択肢g)はアドバイスされません。選択肢fのUNDO表領域の最適化はOracleサーバが自動で行います。

問題4

セグメントアドバイザによって取得できる推奨情報を選択しなさい。

a.個々のスキーマオブジェクトのエクステントにおいて、縮小できるエクステントをアドバイスする
b.表領域内のセグメントを分析することで、スキーマオブジェクトにおける縮小できるセグメントをアドバイスする
c.個々のスキーマオブジェクト、または表領域内のセグメントにおいて、縮小できるセグメントをアドバイスする
d.表領域内のセグメントを分析することで、データベース全体で縮小できるセグメントをアドバイスする

正解:c

解説

 前回、宿題とした問題です。セグメントアドバイザを使用すれば、縮小可能なセグメントを教えてくれます。

 DELETE文やUPDATE文などによって、使用されている領域内には非連続の空き領域ができます。縮小とは、この領域を固める(圧縮)ことで連続した空き領域とし、解放する機能です。セグメントアドバイザは、縮小が可能なセグメントを表領域またはスキーマオブジェクト(個々のセグメント)ごとに分析することができます(図2)。

図2 セグメントアドバイザ(クリックで全体を表示します) 図2 セグメントアドバイザ(クリックで全体を表示します)

 エクステント単位(選択肢a)、データベース全体(選択肢d)というレベルはありません。すべての表領域を選択した分析はデータベース全体のものといえなくもありませんが、ページ内に用意されている単位で覚えておきましょう。

 選択肢bは間違ってはいませんが、アドバイザは表領域単位だけでなくスキーマオブジェクト単位でも実行できるので、正解cが適切であるといえます。

問題5

SQLチューニングアドバイザによって現在実行中の問い合わせをチューニングする場合に使用する入力ソースを選択しなさい。

a.上位SQL
b.SQLチューニングセット
c.スナップショット
d.保存スナップショット

正解:a

解説

 SQLチューニングアドバイザはSQL文を分析し、パフォーマンス向上のための推奨事項を提供します。作成の基となる情報として、次の4種類があります(図3)。

図3 SQLチューニングアドバイザ(クリックで全体を表示します) 図3 SQLチューニングアドバイザ(クリックで全体を表示します)
  • 上位SQL:現在のデータベースに対して実行されたSQL文を選択できます。選択したパラメータの順でソートされているため、実行したSQL文が分かっている場合に使用できます。
  • SQLチューニングセット:独自に作成したSQLチューニングセットを選択し、その中のSQL文に対してアドバイザを実行します。
  • スナップショット:AWRに格納されているスナップショットからSQLチューニングセットを作成できます。
  • ベースライン:AWRに格納されている保存スナップショットからSQLチューニングセットを作成できます。

 この問題では「現在実行中」とあるため、「上位SQL」を使用するのが望ましいといえるでしょう(正解a)。

4.サーバ生成アラート

 Oracle Database 10gでは、表領域使用率などの統計情報を「メトリック」として測定しています。各メトリックは、「サーバ生成アラート」という特定のメトリックがしきい値を超えたら警告を出すように構成できます。しきい値には「警告しきい値」と「クリティカルしきい値」があり、デフォルトで次のアラートが有効になっています。

  • 表領域使用率(警告しきい値85%、クリティカルしきい値97%)
  • スナップショットが古すぎます
  • リカバリ領域空き領域
  • 再開可能セッションの保留

 メトリックの管理は、Database Controlのいずれかのタブで「関連リンク」リージョンの「メトリックの管理」ページから行うことができます(図4)。

図4 メトリックの管理(クリックで全体を表示します) 図4 メトリックの管理(クリックで全体を表示します)

 しきい値の編集ができないメトリックもあります。「スナップショットが古すぎます」や「リカバリ領域空き領域」は、イベントが発生したらアラートが生成されるようになっています。

5.通知ルール

 Database Controlでは、各種イベントが発生したとき、管理者のメールアドレスに情報を送信するなどの通知ルールを構成できます。各Database Control管理者ごとに優先接続情報がありますので、接続と通知用のルールを構成することができます。

問題

問題1

フラッシュリカバリ領域の空き領域が10%を下回ったら調整を行うことを検討しています。どのような構成にしたらよいでしょうか。

a.自動ワークロードリポジトリに問い合わせを行う
b.優先接続情報を使用して、管理者を構成する
c.しきい値を設定し、管理者に通知させる
d.ADDMに問い合わせを行う

正解:b

解説

 問題定義があいまいで、ちょっと難しい問題です。フラッシュリカバリ領域に対するサーバ生成アラートは、メトリックを使用したしきい値ベースではありません。そのため、選択肢cは使用できません。ADDMは起動の際に必要な分析が行われ、結果として推奨事項を表示しますので、フラッシュリカバリ領域が不足すれば自動的に分析結果に表示されることになります。

 選択肢aのように自動ワークロードリポジトリ(AWR)のスナップショット結果を確認するのは重要ですが、毎回手動で行うのも大変です。この選択肢aや選択肢dのように手動で行うより、正解bのように自動的に管理者を構成し、自動通知させるのが望ましいと考えられます。

まとめ

 次の内容をチェックしておきましょう。

  • 各種アドバイザによって行える内容
  • サーバ生成アラートの特徴と管理者への通知方法

最後に

 以上で、Bronze DBA10gの試験に必要な知識の紹介は終了です。かなり広い範囲でしたが、今後Oracle Master Silver Oracle Database 10gなどの資格にチャレンジするうえでも、Bronze DBA10gの知識は重要です。今後のためにも正しく理解しておきましょう。

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、Bronze SQL 基礎 IをはじめOracle関連の資格をテーマとして取り上げています。Bronze DBA 10gも近日中に追加予定です。「無料お試し版」もありますので、記事と併せてご覧ください。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。