44
チューニング編 意外と簡単!? Oracle Database 11g Release 1 - データベース構築から運用まで - 「第 5 章:チューニング編」 (Windows 版) Creation Date: Last Update: Version: 1.1 意外と簡単!?Oracle Database 11g Release 1

意外と簡単!? Oracle Database 11g Release 1 - データ …otndnld.oracle.co.jp/easy/oracle11gr1/windows/pdf/Self...チューニング編 はじめに 「意外と簡単!?」シリーズは、Oracle

  • Upload
    lynhu

  • View
    217

  • Download
    3

Embed Size (px)

Citation preview

チューニング編

意外と簡単!?

Oracle Database 11g Release 1

- データベース構築から運用まで

-

「第 5 章:チューニング編」

(Windows 版)

Creation Date:

Last Update:

Version: 1.1

意外と簡単!?Oracle Database 11g Release 1 1

チューニング編

はじめに

「意外と簡単!?」シリーズは、Oracle Database 11g を使用してこれからシステム構築を

行い、運用していく方向けに作成しており、初心者の方でも容易に構築/運用ができるよう

全編にわたり極力 GUI ツールを利用した説明として構成しております。

システム構築の方法や運用にはさまざまな方法が存在しますが、「意外と簡単!?」シリ

ーズでは特定のハードウェア上で小中規模のシステムを構築/運用することを目的とした

実践的な資料として構成している関係上、個々の機能の説明等は最小限に留めております。

本チューニング編においては多くの機能において Enterprise Edition と有償オプション

が必要となります。詳しくは「Oracle Database ライセンス情報 11g リリース」をご覧く

ださい。

「意外と簡単!?」シリーズが皆様のシステム構築/運用の一助になれば幸いです。

「意外と簡単!?」シリーズの資料構成

「意外と簡単!?」シリーズは、以下の 5 つの資料から構成しております。

1. データベース構築基礎

2. バックアップとリカバリ

3. セキュリティ設定s

4. データベースの運用 - 監視

5. データベースの運用 - チューニング (本書)

「意外と簡単!?」シリーズにおける H/W、S/W

構成

サーバー:DELL PowerEdge 2650

CPU:Xeon 3.06 GHz x 2

メモリー:6GB

オペレーティング・システム:Microsoft Windows 2003 + Service Pack1 RDBMS:Oracle Database 11g Release 1 Enterprise Edition for Windows

意外と簡単!?Oracle Database 11g Release 1 2

チューニング編

チューニングとは

基本的にデータベースのチューニングでは、限られたリソース(たとえば CPU やメモリー、ハード

ディスクなど)をできるだけ有効活用し、ハードウェアの性能を限界まで引き出すといったアプロー

チによって、パフォーマンス目的を達成します。

具体的には、あるリソース(たとえばディスク)に負荷が集中して、ほかのリソース(たとえば CPU)

が遊んでしまっているということがないように調整します。リソースに遊びがない状態になっていても

目標値に到達しない場合には、ハードウェア・スペックを見直す必要がでてくるかもしれません。

チューニングを行う時期は、早ければ早いほど効果が高くなります。そのため、できるだけ早い段

階(設計、開発の段階)からチューニングを意識しておくことは非常に重要といえます。

チューニングのアプローチ チューニングを行う際には、まず始めに具体的な目標値を設定します。目標を立てたらそれに向け

て以下の手順でサイクリックにチューニングを行います。

調査( システム稼動情報の収集 )

解析( ボトルネックの把握 )

適用( ボトルネック解消の手段選択 )

確認( 解決策の効果確認 )

残念ながら、全てのシステムに対して有効なチューニング方法というものはありません。各システム

に毎にボトルネックを発見し(調査・解析)、問題を修正(適用・確認)する、解決したらまた次のボト

ルネックへ、という地道なチューニングサイクルの繰り返しによって、改善をはかることになります。

このため従来よりデータベース管理者は、ボトルネック発見のために適切なタイミングで適切な

情報を集め、分析を行い、問題点を発見し、改善、確認を行うという、高いスキルが要求されるだけ

でなく、時間的負担も少なくない作業を行う必要がありました。

Oracle Database 10g 以降では、データベース管理者はその作業から開放されることになります。

チューニングのアプローチはデータベース自身により自動的に行われ、データベース管理者はア

ラートに反応して Oracle Enterprise Manager (以降 OEM) と呼ばれる管理画面に Web からアクセス

し、簡単な作業(推奨の受け入れ)を行うだけになります。

意外と簡単!?Oracle Database 11g Release 1 3

チューニング編

Oracle Database 11g でのチューニング

Oracle Database 9i までは、Oracle のパフォーマンスを適切なタイミングで測定して問題点を発

見し、適切な処置を考え、実施する必要がありました。 11g でも従来の方法(Statspack など)によ

るチューニングを行うことは可能ですが、Oracle Database Enterprise Edition とオプションの

Diagnostics Pack、Tuning Pack を使えば これら一連のアプローチは自動化され、効率的にパフォ

ーマンスチューニングを実施できます。

今回ご紹介するチューニング手法は、以下の図のように、自動ワークロード・リポジトリ(AWR)と

Automatic Database Diagnostics Monitor(ADDM)と呼ばれる機能、さらに各種のアドバイザによっ

て実現されます。これらの機能はほぼ全て WEB ブラウザでアクセスする GUI ツールである Oracle

Enterprise Manager (OEM)から使用することが可能です。

本書ではこれらの機能を活用したデータベースのチューニングを紹介しますが、始めに Oracle

Database 10g からの新機能であるこれらの機能の概略について説明します。

自動ワークロード・リポジトリ (AWR)

自動ワークロード・リポジトリ(以降 AWR)では、後述の自動データベース診断機能

(ADDM)などによる問題の検出と自己チューニングを目的として、データベースの状態

やワークロードをスナップショットとして定期的に収集しています。

デフォルトでは、AWR は 1 時間間隔でスナップショットを生成し、8日間保存します。

スナップショットの間隔、保存期間は必要に応じて変更することが可能ですが、通常

はデフォルトのままで特に問題ありません。

意外と簡単!?Oracle Database 11g Release 1 4

チューニング編

POINT: AWR のスナップショット間隔、保存期間を変更するためには Oracle

Database 11g Enterprise Edition と Diagnostic Pack が必要になります。

実習: AWR の収集間隔、保存期間を変更してみよう

1. ホーム画面左上のタブから「サーバー」タブをクリックします。

2. 「統計管理」グループより自動ワークロード・リポジトリをクリックします。

3. 以下のような自動ワークロード・レポジトリのページが表示されます。

ここでは、スナップショットの収集間隔、保存期間共にデフォルトの状態であることが

わかります。 をクリックします。

4. 保存期間、間隔を適切に変更して ボタンをクリックします。この例では収集間隔

を 30 分に変更しています。

意外と簡単!?Oracle Database 11g Release 1 5

チューニング編

5. 以上で変更作業は終了です。これ以降、変更した内容で AWR のスナップショットが

生成・保存されていきます。

Automatic Database Diagnostic Monitor

(ADDM)

自動データベース診断モニター(以降 ADDM)は、Oracle10g 以降より Database に搭

載されている自己診断エンジンです。 ADDM は、前述の AWR により自動的に収集され

たデータを元として定期的に分析を行い、パフォーマンスに関する問題を解決策と共に

提示します。 AWR スナップショットが作成されるたびに ADDM は自動的に分析を行い、

重大な問題がないかを判断していますが、必要に応じて管理者は手動で ADDM を起動

して分析を行うこともできます。

ADDM 分析結果へのもっとも簡単なアクセス方法は、Oracle Enterprise Manager を使

用する方法です。パフォーマンスに関して問題点が発見された場合、のホーム画面で

「パフォーマンス分析」という項目が表示されます。

ADDM パフォーマンス分析では、データベースの全体的なパフォーマンスの問題に対し

て、影響度順にチューニングすべき項目を抽出/表示しています。

各問題点からはパフォーマンス結果の詳細へリンクが提示されています。ADDM によ

意外と簡単!?Oracle Database 11g Release 1 6

チューニング編

って検出されるパフォーマンスに関する問題点はさまざまですが、多くの場合、パフォー

マンス結果ページにて、具体的な解決策も一緒に提示されます。問題を解決するための

推奨として以下のような項目があります。

SQL チューニングなど、より詳細なパフォーマンス分析は後述の各種アドバイザを使

って行います。パフォーマンス結果の詳細では、アドバイザの起動ボタンやチューニング

のためのアドバイスが表示されます。

パフォーマンス・アドバイザ

Oracle Database にはパフォーマンスの改善に役立つ各種のアドバイザが用意されています。

これらのアドバイザはアラート機能に比べて多くのリソースを消費しますが、その分より詳細な分

析を行います。例えば、先述の ADDM の診断結果を元に「なぜこの SQL は CPU を大量に消費し

ているのか」などといった特定の領域内での問題を解決するために、これらのアドバイザは最適と

いえます。

アドバイザ 説明

SQL チューニング・アドバイザ SQL 文自体を分析し、パフォーマンスを向上させる

推奨項目を作成します。例えば、SQL 文を変更せずに

パフォーマンスを向上させる SQL プロファイルの設定

などが可能です。

SQL アクセス・アドバイザ SQL の実行を効率化するために、スキーマのチュ

ーニングを行います。例えば、索引やマテリアライズ

ド・ビュー、パーティションの作成を行うことが可能で

す。

メモリー・アドバイザ メモリー・サイズのアドバイスを表示します。合計メ

推奨 パフォーマンス結果の詳細

SQL Tuning SQL チューニング・アドバイザの起動など

DB Configuration メモリーに関するアドバイス(PGA サイズの変更)など

Segment Tuning Segment Advisor を実施すべきオブジェクトの表示な

Application

Analysis

ロック、バインド変数利用の推奨、待ちに対する調査

要求など

Host

Configuration

ディスク構成に関するアドバイスなど

意外と簡単!?Oracle Database 11g Release 1 7

チューニング編

モリー・サイズの設定や、個別の領域のサイズを決定

するのに役立ちます。

セグメント・アドバイザ セグメントの断片化レベルを測定し、縮小すべきオ

ブジェクトがあるかのアドバイスを表示します。また、

セグメントの増加傾向のレポートも行います。

UNDO・アドバイザ UNDO 表領域サイズのアドバイスを行います。

各アドバイザは ADDM 分析結果の詳細画面で起動を促される場合もありますが、任意のタイミ

ングでデータベース管理者により手動実行することも可能です。これから行う実習では、手動で各

アドバイザを起動してチューニングを行うものとします。

アドバイザ・セントラルより各種アドバイザを起動できます。

ポイント: SQLチューニング・アドバイザとSQLアクセス・アドバイザの実行には

Oracle Database 11g Enterprise Edition と Diagnostic Pack, Tuning Pack が必

要です。

実習の準備: SQL スクリプトの実行 この章では、インストール直後などパフォーマンスのさほど悪くない状態のデ

ータベースでも実習を行えるよう、簡単な SQL スクリプトを提供しています。こ

ちらよりファイルをダウンロードし、解凍してファイルをデータベースサーバー

に配置してください。この例では、D ドライブ直下に SQL スクリプトファイルを

配置しています。

実習:SQL スクリプトをジョブとして実行しよう

この実習では、スクリプトを Enterprise Manager の画面より実行する方法をご紹

介します。

POINT:SQL*Plus や SQL*Developer より直接 SQL スクリプトを実行

してもかまいません。スクリプトは SYSTEM ユーザーにて実行するよう

にしてください。

意外と簡単!?Oracle Database 11g Release 1 8

チューニング編

1. SYS ユーザーで OEM にログインし、「ホーム画面」の一番下の「関連リン

ク」より「ジョブ」リンクをクリックします。

2. 「ジョブ・アクティビティ」の画面が開きます。ジョブの作成プルダウンより

「SQL スクリプト」を選択して をクリックします。

3. 「SQL スクリプトの作成:一般」ページが表示されます。ここでは名前に実

行する SQL 名など適当なものを入力しましょう。 ターゲットの

ボタンを押してターゲットページを開きます。

4. 別のウィンドウでターゲットの選択ページが開きます。実習を行いたいデ

意外と簡単!?Oracle Database 11g Release 1 9

チューニング編

ータベースを選択して をクリックします。

5. 「SQL スクリプトの実行:一般」に戻ります。ターゲットにデータベースが追

加されていることを確認し、「パラメータ」タブをクリックします。

6. パラメータタブが表示されます。ここでは実行したい SQL を直接記述する

ことができます。今回は、ファイルから実行しますので、@に続けてサーバ

ー上の SQL スクリプトのフルパスを指定します。続いて「資格証明」タブを

クリックします。

>例:@D:\scripts\sta\sta_start.sql

7. 「資格証明」タブが表示されます。優先資格証明の上書きを選択し、以下

のようにデータベース・ホスト資格証明としてホスト(Windows OS)のユー

ザー名、パスワードとデータベース資格証明として、ユーザー名に

意外と簡単!?Oracle Database 11g Release 1 10

チューニング編

SYSTEM とパスワードに SYSTEM のパスワードを入力します。続いて「ス

ケジュール」タブをクリックします。

8. 「スケジュール」タブでは、ジョブのスケジュールを設定することができます。

この例では即時実行としてすぐにジョブを発行しますので、そのままの状

態で をクリックします。

9. 以下のようなメッセージが表示されジョブが正常に発行されたことを確認

します。

10. しばらく待ってから をクリックし、ジョブのステータス列が「成功」

に変わっていることを確認します。ジョブを選択した状態で

をクリックします。

意外と簡単!?Oracle Database 11g Release 1 11

チューニング編

11. ジョブの実行結果が表示されます。詳細列の をクリックし、更

に「完全な出力を表示...」をクリックして結果を確認してみましょう。

実習:実行済みのジョブから別の SQL スクリプトを実行しよう

この先の実習では複数の SQL スクリプトを実行しますので、実行済みのジョブか

ら簡単に新規ジョブを設定する方法についてもご紹介します。

1. 「ジョブ・アクティビティ」のページにて、実行済みのジョブを選

択した状態で をクリックします。

意外と簡単!?Oracle Database 11g Release 1 12

チューニング編

2. 「SQL スクリプトジョブの作成」画面が開きます。名前に新しいジ

ョブの名前を入力します。「パラメータ」タブをクリックします。

3. SQL スクリプトの内容を実行させたいファイル名に変更します。

4. その他、スケジュール等変更する必要がなければ をクリックし

ます。ジョブ実行の確認方法は一つ前の実習と同様です。

以上で、SQL スクリプトの実行の実習は以上です。

意外と簡単!?Oracle Database 11g Release 1 13

チューニング編

SQL チューニング・アドバイザ SQL チューニング・アドバイザは、特定の SQL を分析し、具体的な推奨事項(SQL

文の再構築や SQL プロファイルの作成、索引の作成、統計情報のリフレッシュな

ど)を提示します。

SQL プロファイルとは?

SQL プロファイルは、オプティマイザが 適な実行計画を作成するための、その

文固有の追加の SQL 統計です。 SQL プロファイルを実装すれば、SQL 文を書き

換えることなくパフォーマンスを向上させることが可能となります。

実習:SQL チューニング・アドバイザを使ってみよう

準備

「実習の準備: SQL スクリプトの実行」の手順にて、DB サーバに配置した以下のスクリ

プトを順番に SYSTEM ユーザーにて実行します。

- sta_start.sql ・・・デモの準備を行うスクリプト

- sta_tunesql.sql ・・・十数分間、チューニング対象となる SQL 文が流れ続けます。

ポイント: SQL チューニング・アドバイザでは SH スキーマにあるサンプルを利

用します。データベース作成時にサンプル・スキーマにチェックを入れて作成

するか、後で手動インストールする必要があります。詳しくは「Oracle Database

サンプル・スキーマ 11g リリース 1(11.1)」のマニュアルをご覧ください。

1. SYS ユーザーで OEM にログインし、「パフォーマンス」タブをクリックします。この

画面ではデータベースサーバーの現在の処理負荷を確認できます。

意外と簡単!?Oracle Database 11g Release 1 14

チューニング編

ポイント:OEM へのログイン方法については「意外と簡単!? Oracle

Database 11g データベース構築基礎編」を参照ください。また、「パフォ

ーマンス」タブをクリックするには Oracle Database Enterprise Edition と

Diagnostic Pack が必要です。

2. 「平均アクティブ・セッション」に注目します。sta_tunesql.sql の実行を開始してから

数分すると、図のように負荷状況がグラフに表れてきます。グラフは色分けされ

ており、左側に判例をみると何の処理の負荷が高いのかが一目でわかるように

なっています。更に詳細を見るために、右下の「トップ・アクティビティ」リンクをク

リックします。

3. 「トップ・アクティビティ」の画面が表示されます。四角で選択された期間内で負荷

の高い SQL 文が上位 SQL として左側に表示されます。この例では、上位 SQL

として先ほど実行したサンプル sta_tunesql.sql によって発行されている SELECT

文が表示されています。上位 SQL から SQL ID のリンクをクリックします。

意外と簡単!?Oracle Database 11g Release 1 15

チューニング編

4. 「SQL の詳細」の画面が表示されます。ここでは SQL 文や実行プラン、統計、チ

ューニング情報を見ることができます。

ボタンをクリックして SQL

チューニング・アドバイザを起動します。

SQL のアクティビティ:

SQL 統計:

意外と簡単!?Oracle Database 11g Release 1 16

チューニング編

5. SQL チューニング・アドバイザが起動し、「スケジュール・アドバイザ」の画面が表

示されます。アドバイザ起動のスケジュールの設定などか可能です。スケジュー

ルが「即時」になっていることを確認し、 ボタンをクリックします。

6. 分析中の画面が表示されます。分析にはしばらく時間がかかります。

意外と簡単!?Oracle Database 11g Release 1 17

チューニング編

7. しばらく経ちますと、分析結果として「SQL ID の推奨」画面が表示されます。今回

の例では推奨として SQL プロファイルの実装が表示されています。

このSQLプロファイルを実装した場合、実行計画がどのように変わるのかを確認

してみましょう。「実行計画の比較」列の ボタンをクリックします。

8. 「実行計画の比較」画面が表示されます。上が元の実行計画、下が新しく SQL プ

ロファイルを作った場合の実行計画です。アクセス方法が、フルスキャンからイ

ンデックススキャンへ変わり、コストが低くなることがわかります。左上の「SQL ID

の推奨:XXXXXXXX」リンクをクリックして戻ります。

意外と簡単!?Oracle Database 11g Release 1 18

チューニング編

9. ボタンをクリックします。

10. 「確認」画面が表示されますので、そのまま をクリックします。

11. 以下のメッセージが表示され、SQL プロファイルの作成が完了します。

12. SQL プロファイル実装によるパフォーマンスの変化を確認しましょう。ここでは効

果をわかりやすく確認するために、共有プールをフラッシュしてから同じスクリプ

トを実行します。

13. SQL ワークシートまたは、SQL*Plus から以下の SQL を実行します。

ALTER SYSTEM FLUSH SHARED_POOL;

意外と簡単!?Oracle Database 11g Release 1 19

チューニング編

14. 前回と同じ手順で sta_tunesql.sql を再度実行します。この処理には 10 数分の間

がかかりますので、その間に「データベース・インスタンス: XXX」をクリックし、ホ

ーム画面に戻り「パフォーマンス」タブをクリックします。数分待ってから「平均ア

クティブ・セッション」グラフを見ると、SQL プロファイル実装後の処理では、前回

に比べてパフォーマンスが向上していることを確認できます。更に詳細を見るた

めに右下の「トップ・アクティビティ」リンクをクリックします。

15. 今回実行した期間に四角カーソルをあわせ、先ほどチューニングを施した SQL

の SQL ID をクリックします。

16. SQL の詳細ページが開きます。「統計」タブをクリックして内容を確認しましょう。

チューニング前と比べると、SQL プロファイルが使われ、実行統計の値が良くな

っていることがわかります。効果測定には、「1 実行あたりの経過時間(秒)」に着

目すると良いでしょう。

チューニング後の統計:

意外と簡単!?Oracle Database 11g Release 1 20

チューニング編

チューニング前の統計:

実習環境のクリーンアップ

チューニングのためのプロシージャが終了していることを確認し、「実習の準備: SQL ス

クリプトの実行」の手順にて、DB サーバに配置した以下のスクリプトを SYSTEM ユーザ

ーにて実行します。

意外と簡単!?Oracle Database 11g Release 1 21

チューニング編

- sta_end.sql ・・・環境のクリーンアップ

以上で SQL チューニング・アドバイザの実習は終了です。

自動 SQL チューニング 自動 SQL チューニングは、前述の SQL チューニング作業を自動化する 11g の新

機能です。自動 SQL チューニングを有効にしておくと、負荷の高い SQL を選び出

し、自動的にチューニングを行うようになります。 実習: 自動 SQL チューニングを構成しよう

6. ホーム画面左上のタブから「サーバー」タブをクリックし「Oracle Scheduler」グループより「自動化メンテナンス・タスク」をクリックします。

7. 「自動化メンテナンス・タスク」のページが表示されます。 をクリッ

クします。

8. 「自動化メンテナンス・タスク構成」ページが表示されます。タスク設定のラ

ジオボタンにてタスクの有効/無効を切り替えられます。この例では全てのタス

クが有効となっていることがわかります。この画面では必要に応じてタスクを

無効としたり、実行する日時を変更できます。自動 SQL チューニングの横の

意外と簡単!?Oracle Database 11g Release 1 22

チューニング編

をクリックします。

9. 「自動 SQL チューニング設定」のページが開きます。SQL プロファイルの自

動実装のラジオボタンで「はい」を選択し、 をクリックします。

POINT: SQLプロファイル自動実装では 3倍以上の効果が見込める場合

に実装されます。

10. 以下のようなメッセージが表示され、自動 SQL チューニングの構成は完了し

ます。

実習: 自動 SQL チューニングの結果を確認しよう

1. ホーム画面左上のタブから「サーバー」タブをクリックし「Oracle Scheduler」グループより「自動化メンテナンス・タスク」をクリックし

ます。

意外と簡単!?Oracle Database 11g Release 1 23

チューニング編

2. 「自動化メンテナンス・タスク」のページが表示されます。自動 SQL チ

ューニングのリンクをクリックします。

3. 「自動 SQL チューニング結果のサマリー」ページが表示されます。ここ

では、自動 SQL チューニングの実行結果を確認できます。時間間隔プル

ダウンにて時間を絞り込むことも可能です。生成された推奨事項を確認す

るために をクリックします。

意外と簡単!?Oracle Database 11g Release 1 24

チューニング編

4. 「自動 SQL チューニング結果の詳細」ページが表示されます。SQL プロファイル

列の は、既に自動的に SQL プロファイルが実装されたことを表しています。

更に詳細を確認するには SQL ID 列のリンクをクリックします。

意外と簡単!?Oracle Database 11g Release 1 25

チューニング編

5. 「SQL ID」の推奨ページが表示され、詳細な推奨内容を確認します。推奨を選

択し、 をクリックすると推奨項目を実装することが可能です。

自動 SQL チューニングを有効にしておくと、時間的にも負荷の高い SQL のモニ

タリング、チューニングなどのプロセスから管理者を開放できます。

SQL アクセス・アドバイザ SQL アクセス・アドバイザは、索引、マテリアライズド・ビュー、パーティション表の作成

など SQL 問合せを最適化するための適切なアクセス構造の定義をアドバイスします。

SQL の実行を効率化するだけではなく、設計時にも役に立つ機能です。 SQL アクセス・

アドバイザでは推奨事項を生成するための材料(これをワークロードと言います)を最初

に指定し、分析を行います。

実習:SQL アクセス・アドバイザを使ってみよう

準備

「実習の準備: SQL スクリプトの実行」の手順にて、DB サーバに配置した以下のス

クリプトを SYSTEM ユーザーにて実行します。

- saa.sql – 分析対象の SQL 文を共有プールにキャッシュ

意外と簡単!?Oracle Database 11g Release 1 26

チューニング編

1. SYS ユーザーで OEM にログインし、ホーム画面下方の関連リンクより「アドバイザ・

セントラル」をクリックします。

2. アドバイザ・セントラルの画面が開きます。「SQL アドバイザ」をクリックします。

3. 「SQL アドバイザ」が開きます。「SQL アクセス・アドバイザ」をクリックします。

4. 「SQL アクセス・アドバイザ: 初期オプション」画面が開きます。このページではデフ

ォルトのまま をクリックします。

5. 分析の対象とするワークロードを選択します。以下の図のように「現在と

意外と簡単!?Oracle Database 11g Release 1 27

チューニング編

近の SQL アクティビティ」を選択し、フィルタオプションのユーザー欄に SH

と入力して をクリックします。

POINT:ワークロードとは、アドバイザが推奨事項を生成するための材料となるもの

です。今回はキャッシュしたSQL文をワークロードとするため「現在と最近の SQLア

クティビティ」を選択しました。SQL チューニングセットを指定したり、表を選択するこ

とにより、その表の統計情報から簡単な分析を行うことも可能です。

6. 「SQL アクセス・アドバイザ:推奨オプション」画面です。ここでは、推奨

するアクセス構造に索引とマテリアライズド・ビューを選んだ状態で

を ク リ ッ ク し ま す 。

意外と簡単!?Oracle Database 11g Release 1 28

チューニング編

7. 実行スケジュールの設定をします。今回は即時実行なのでデフォルトのまま

をクリックします。

8. 「SQL アクセス・アドバイザ:確認」画面です。設定を確認して を

クリックします。

意外と簡単!?Oracle Database 11g Release 1 29

チューニング編

9. 以下のメッセージが表示されます。

10. しばらく待ってからアドバイザ・セントラル画面をリフレッシュすると、先

ほど発行したジョブが結果に表示されます。選択して をクリッ

クします。

11. 「タスクの結果」画面が表示されます。まずはサマリーにて全体的な結果を確認し、

画面中央部の「推奨」タブをクリックします。

意外と簡単!?Oracle Database 11g Release 1 30

チューニング編

12. 推奨タブでは、複数の推奨内容が提示されています。コスト改善効果の順に提示さ

れていますので、上かからみていきましょう。ID 列の1をクリックします。

13. 推奨の詳細が表示されます。ここではいくつかの推奨と共にマテリアライズド・ビュ

ーの作成が推奨されていることがわかります。テキストエリアになっているところは

変更可能です。今回は、Create Materialized View 行のスキーマ列を SH に変更し、

「OK」をクリックします。

意外と簡単!?Oracle Database 11g Release 1 31

チューニング編

14. 推奨のページに戻ります。「スケジュール実装」ボタンをクリックします。

15. 実装のためのスケジュールを指定する画面です。今回は即時で実行しますのでデ

フォルトの状態で をクリックします。

意外と簡単!?Oracle Database 11g Release 1 32

チューニング編

16. 以下のメッセージが表示され、タスクが正常に発行されます。右上の「データベー

ス」のタブをクリックします。

17. 作成されたマテリアライズド・ビューを確認してみます。「スキーマ」タブを選択し、

「マテリアライズド・ビュー」をクリックします。

18. 「マテリアライズド・ビュー」画面が表示されます。スキーマに「SH」と入力し

をクリックすると、SH スキーマのマテリアライズド・ビューの一覧が表示されます。

SQL アクセス・アドバイザで作成したマテリアライズド・ビューが存在することを確認

しましょう。

意外と簡単!?Oracle Database 11g Release 1 33

チューニング編

以上で SQL アクセス・アドバイザの実習は終了です。

メモリー・アドバイザ 物理メモリーの割当てはOracle Databaseのパフォーマンスに大きな影響を及ぼします。

メモリーが不足していてパフォーマンスが悪化するような場合には、ADDM によってメモ

リー割当て増加の推奨が発行されます。 Oracle Database のメモリー領域には、以下の

ように SGA 領域と PGA 領域があります。

メモリー領域名 説明

SGA 領域

(システム・グローバル領域)

インスタンス起動時に割り当てられる Oracle インス

タンスの共有メモリー領域です。共有プール

やデータベース・バッファ・キャッシュなどから構成さ

れます。

PGA 領域

(プログラム・グローバル領域)

サーバー・プロセス起動時に割り当てられるメモリ

ー領域です。非共有メモリー領域で、ソートやカーソ

ル、セッション情報の保持のために使用されます

メモリー領域のチューニング

Oracle Database 11g から自動メモリー管理機能として、SGA と PGA を合わせたサイズ

を指定します。自動メモリー管理を有効にしていればインスタンスの合計サイズを指定

する他にチューニングは基本的に必要ありません。メモリー・アドバイザを使うと、実際

の負荷状況などから、Oracle インスタンスに割り当てるメモリーの最適値を設定できま

す。

POINT:メモリー・アドバイザによるメモリー割当ての実習については

第 4 章を参照してください。

意外と簡単!?Oracle Database 11g Release 1 34

チューニング編

セグメント・アドバイザ 更新および削除操作の繰返しによって、領域は断片化し、セグメントに多数の空き領域

ができます。オブジェクトに断片化された空き領域があると、データベースのパフ

ォーマンスに影響を与える場合があります。

セグメント・アドバイザは、これら領域の断片化のレベルに基づいて再利用が可能な領

域があるかどうかのアドバイスを行います。

POINT:セグメント・アドバイザは、自動セグメント領域管理(ASSM)を備えた

ローカル管理表領域のセグメントに対してのみ使用できます。

今回は実習のため手動でセグメント・アドバイザを実行しますが、通常は自動セグメン

ト・アドバイザとして定期的に自動実行されています。管理者はホーム画面、領域サマリ

ー内のセグメント・アドバイザ推奨のリンクより、縮小可能なセグメントを確認します。

実習:セグメント・アドバイザを使ってみよう

準備

「実習の準備: SQL スクリプトの実行」の手順にて、DB サーバに配置した以下のスクリ

プトを SYSTEM ユーザーにて実行します。

- setup_seg.sql – HR スキーマに断片化した表「EMPLOYEE1」を作成

1. SYS ユーザーで OEM にログインし「管理」画面へ移動後、「表」をクリックします。

意外と簡単!?Oracle Database 11g Release 1 35

チューニング編

2. 表の検索画面が表示されます。スキーマに「HR」と入力し ボタンをクリックしま

す。HR スキーマの表の一覧が表示されます。表:EMPLOYEES1 をチェックし、

ボタンをクリックします。

3. 「表の編集」画面が表示されます。EMPLOYEES1 表のセグメントの状態を確認する

ために中央の「セグメント」タブをクリックします。

意外と簡単!?Oracle Database 11g Release 1 36

チューニング編

4. 「セグメント」が表示されます。「使用されている領域」、「割り当てられた領域」のサイ

ズを記憶しておいてください。左上の「データベース・インスタンス: XXX」をクリックし

ます。

5. ホーム画面左上のタブから「サーバー」タブを開き、「表領域」をクリックし

ます。

6. 「表領域」画面が表示されます。表領域の中から「USERS」を選択し、アクション・プ

ルダウンより「セグメント・アドバイザの実行」を選び ボタンをクリックします。

意外と簡単!?Oracle Database 11g Release 1 37

チューニング編

7. 「セグメント・アドバイザ:表領域」画面が表示されます。「拡張オプションの表示」の

リンクをクリックします。分析の時間制限が無制限となっていることを確認し ボタ

ンをクリックします。

8. 「セグメント・アドバイザ:スケジュール」画面が表示されます。この例では即時実行

しますので、デフォルトのままで ボタンをクリックします。

意外と簡単!?Oracle Database 11g Release 1 38

チューニング編

9. 「セグメント・アドバイザ:確認」画面が表示されます。内容を確認して、 ボタンを

クリックします。

10. 以下のようなメッセージが表示され、タスクが正常に作成されたことが確認できま

す。 発行直後タスクのステータスは「RUNNING」となっていますが、しばらくして

をクリックすると、「COMPLETED」に変わります。右上のデータベ

ースタブをクリックしてホーム画面へ戻ります。

意外と簡単!?Oracle Database 11g Release 1 39

チューニング編

11. ホーム画面が表示されます。「領域サマリー」の「セグメント・アドバイザ推奨」の右

側のリンクをクリックします。

12. 「セグメント・アドバイザ推奨」の画面が表示されます。 ボタンを

クリックします。

13. 「表領域の推奨事項の詳細: USERS」の画面が表示されます。 ボタンをクリック

します。

意外と簡単!?Oracle Database 11g Release 1 40

チューニング編

14. 「セグメントの縮小:オプション」が表示されます。 ボタンを押すと実行される

SQL 文が表示されます。SQL 文の確認後、 ボタンをクリックします。

ポイント: 「SQL 表示」で表示される alter table XXX shrink space は 10g で新

機能となったセグメント縮小のためのコマンドです。

15. 「セグメントの縮小: スケジュール」画面が表示されます。適当なジョブ名を設定し、

開始が即時になっていることを確認して ボタンをクリックします。

意外と簡単!?Oracle Database 11g Release 1 41

チューニング編

16. 「確認」画面が表示され、ジョブが正常に発行されたことが確認できます。しばらく待

ち、 ボタンをクリックします。実行中のジョブがなくなっていることを確認して

ください。これでセグメント縮小が完了しました。左上の「データベース・インスタンス:

XXX」をクリックします。

17. 「管理」画面が表示されます。先ほどと同様の手順で EMPLOYEES1 表のセグメント

情報を表示させます。

18. 「セグメント」が表示されます。「使用されている領域」、「割り当てられた領域」のサイ

ズをセグメント・アドバイザ前に確認した値と比較してください。縮小したセグメントを

確認できます。

縮小後:

意外と簡単!?Oracle Database 11g Release 1 42

チューニング編

縮小前:

以上でセグメント・アドバイザの実習は終了です。

意外と簡単!?Oracle Database 11g Release 1 43

チューニング編

おわりに

第五章では「チューニング編」として、データベースのチューニング・タスクを Enterprise

Manager を使って実行する方法を実習しました。

データベースのチューニングについての更に詳しい内容は、以下のマニュアルを参照して

ください。

Oracle Database 2 日でパフォーマンス・チューニング・ガイド

Oracle Database パフォーマンス・チューニング・ガイド 11g リリース 1(11.1)

マニュアルは製品メディアパックに含まれるほか、以下の URL よりダウ

ンロード可能です。 http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/in

dex.htm

日本オラクル株式会社

Copyright © 2009 Oracle Corporation Japan. All Rights Reserved.

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあり

ます。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に

関連したいかなる損害についても責任を負いかねます。

Oracle は米国 Oracle Corporation の登録商標です。文中に参照されている各製品名及びサー

ビス名は米国 Oracle Corporation の商標または登録商標です。その他の製品名及びサービス名

はそれぞれの所有者の商標または登録商標の可能性があります。

意外と簡単!?Oracle Database 11g Release 1 44