データベースの最適なパフォーマンスのためのプログラムの診断とチューニング

このチュートリアルでは、ADDMレポートおよびAWRレポートを作成、使用して、Oracle Call Interface(OCI)のサンプル・アプリケーションのパフォーマンスとボトルネックを分析する方法について説明します。 レポートを実行しながら、5つのステージでサンプルを分析し、改善します。 効率的なOCIアプリケーションが最終的な結果となります。 アプリケーションは、C言語およびJava言語で記述されています。

約60分

トピック

このチュートリアルでは、以下のトピックについて説明します。

C言語で記述されたOCIアプリケーションの分析

Java言語で記述されたOCIアプリケーションの分析

このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:この操作によって、同時にすべてのスクリーンショットがロードされるため、ご使用のインターネット接続によってはレスポンス時間が遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

このチュートリアルでは、2つのOCIアプリケーションを検証します。1つはC言語、もう1つはJava言語で記述されています。 OCIサンプル・アプリケーションでADDMレポートおよびAWRレポートを生成し、パフォーマンスおよびボトルネックを分析します。 これには段階的なアプローチを使用し、5つのステージでこのアプリケーションを調整します。

サンプル・アプリケーション

サンプル・アプリケーションでは、乱数を使用して、HRサンプル・スキーマのEMPLOYEES表の更新および問合せをおこなうWeb入力をシミュレートします。 おもな関数は以下のとおりです。

5ステージすべてのソース・コードをコンパイルおよびリンクするには、make ユーティリティが使用できます。

データベースでは、3つのプロシージャが使用されます。

C言語のアプリケーションに使用するプロシージャ名は以下のとおりです。

Java言語のアプリケーションに使用するプロシージャ名は以下のとおりです。

OCI/JDBCのインストールと使用

クライアント/サーバー構成のように、サーバーとは別のマシンでクライアントを稼働している場合、Instant Clientをインストールできます。 Instant Clientを使用すると、標準のOracleクライアントをインストールせずに、またはORACLE_HOMEを作成せずにアプリケーションを実行できます。

以下のサイトからInstant Clientファイルをダウンロードできます。 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html

(注:サーバーのデータベースからこのチュートリアルを実行している場合は、必要なファイルはサーバー上にデフォルトで存在するためInstant Clientファイルは不要です。)

コマンドライン・パラメータ(このチュートリアルでは、複数のステージで使用されます)

AWRレポートおよびADDMレポート

Automatic Workload Repository (AWR)は、すべてのOracle Databaseに備わっている組込みリポジトリです。 Oracle Databaseは一定の間隔で、すべての重要な統計情報とワークロード情報のスナップショットを作成し、AWRに格納します。

Automatic Database Diagnostic Monitor (ADDM)によって、Oracle DatabaseはOracle Database自体のパフォーマンスを診断し、検出された問題の解決方法を決定することが可能になります。 各AWRの統計の取得後、ADDMは自動的に実行され、パフォーマンスの診断データは即座に使用可能になります。

レポートを実行するには、このチュートリアルで提供されるreports.sqlスクリプトを使用します。 検証する5ステージの各ステージで、CファイルとJavaファイルが提供されます。

トピック・リストに戻る

このチュートリアルを始める前に以下を確認してください。

1.

Oracle Database 11gがインストールされていること。

2.

ociobe.zipファイルをダウンロードし、作業ディレクトリ(wkdir等)に解凍されていること。

トピック・リストに戻る

この項では、セッション・プールを使用しないセッションを取得し、SQL文でリテラルを使用した影響を検証します。 このステージでは、接続プーリングは使用しません。 セッションごとに新たに接続します。

1.

ターミナル・ウィンドウを開きます。

ディレクトリを/wkdirディレクトリに変更します。 stage1.cファイルのコンテンツを検証します。 コンテンツの表示には、テキスト・エディタが使用できます。

ターミナル・ウィンドウで、次のコマンドを実行します。

sqlplus sys/oracle as sysdba

 

2.

SQL*Plusウィンドウから、eports.sqlスクリプトを実行します。 stage1ファイルにそのスクリプトを渡します。 ワークロード数の増大と検証結果の生成をおこなうために、500回反復するパラメータを追加します。

@reports.sql "./stage1 -i 500"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage1_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage1_results_addm.txt - ADDMレポート
  • stage1_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage1_addm.txt - ADDMレポート
  • stage1_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage1_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率:

検証結果2:セッションの接続と切断(注:セッションのプーリングにより、セッションの接続と切断の回数を削減することが可能です。)

検証結果3:ソフト解析(注:文キャッシュによってソフト解析時間を削減できます。)

検証結果4:リテラル使用のためのハード解析(注:バインドによってリテラル数を削減できます。)

検証結果5:データベース処理時間に基づく上位SQL

検証結果6:コミットおよびロールバック


5.

stage1_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage1_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、ステージ1のサンプル・プログラムとステージ2のサンプル・プログラムとの違いを確認します。 ステージ2では、セッション接続プールが有効です。

1.

stage2.cファイルのコンテンツを検証します。 stage1.cファイルとstage2.cファイルとの比較には、tkdiffを使用できます。

別のターミナル・ウィンドウを開き、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff stage1.c stage2.c &

ファイルの違いに注目してください。 stage2.cでは、接続プーリングが有効になっています。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、次のコマンドでreports.sqlスクリプトを実行します。 このスクリプトをstage2ファイルに渡します。 ワークロード数の増大と検証結果の生成をおこなうために、500回反復するパラメータを追加します。

@reports.sql "./stage2 -i 500"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage2_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage2_results_addm.txt - ADDMレポート
  • stage2_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。/wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage2_addm.txt - ADDMレポート
  • stage2_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage2_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:共有プールの不足

検証結果2:CPU使用率

検証結果3:ソフト解析

不適当なサイズの共有プールが原因によるハード解析によって、データベース処理時間がかなり消費されることに注意してください。


5.

stage2_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage2_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、バインドを有効にします。 バインドの使用は、パフォーマンスの向上だけでなく、SQLインジェクションを防いでプログラムの安全性を高めることができます。

1.

stage3.cファイルのコンテンツを検証します。 stage2.cファイルとstage3.cファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff stage2.c stage3.c &

ファイル内の違いに注目してください。 stage3.cでは、バインドが有効になっています。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 stage3ファイルにそのスクリプトを渡します。 ワークロード数の増大と検証結果の生成をおこなうために、500回反復するパラメータを追加します。

@reports.sql "./stage3 -i 500"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage3_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage3_results_addm.txt - ADDMレポート
  • stage3_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage3_addm.txt - ADDMレポート
  • stage3_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage3_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:データベース処理時間に基づく上位SQL

検証結果4:バッファ・ビジー

検証結果5:バッファ・ビジー

検証結果6:例外的な"並行処理"待機イベント


5.

stage3_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage3_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、配列フェッチを検証します。 値が1より大きいサイズの配列を設定することで、トランザクション数を削減します。 トランザクションが多すぎると、パフォーマンスの低下につながります。 配列DMLによって、DMLを単一のトランザクションにグループ化することが可能になります。

1.

stage4.cファイルのコンテンツを検証します。 stage3.cファイルとstage4.cファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff stage3.c stage4.c &

ファイル内の違いに注目してください。 ステージ4では、配列フェッチを使用します。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 stage4.cファイルにそのスクリプトを渡します。 ワークロード数の増大と検証結果の生成をおこなうために、1000回反復するパラメータを追加します。

@reports.sql "./stage4 -i 1000"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage4_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage4_results_addm.txt - ADDMレポート
  • stage4_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage4_addm.txt - ADDMレポート
  • stage4_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage4_addm.txt レポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率:

検証結果2:上位SQLおよびデータベース処理時間

検証結果3:コミットおよびロールバック

検証結果4:バッファ・ビジー

検証結果5:バッファ・ビジー

検証結果6:最高水位標の待機(注:同時DMLを可能にするために表を分割できます。)


5.

stage4_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage4_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、まず、結果セット・キャッシュを有効にし、次に結果を検証します。

1.

stage5.cファイルのコンテンツを検証します。 stage4.cファイルとstage5.cファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff stage4.c stage5.c &

ファイル内の違いに注目してください。 ステージ5では、結果セット・キャッシュを使用します。

tkdiffユーティリティを終了します。

 

2.

サーバーで結果セット・キャッシュを有効にします。 以下のパラメータを含むresultcache.oraファイルがすでに作成されています。

CLIENT_RESULT_CACHE_SIZE=10M 

SQL*Plusウィンドウから次のコマンドを発行して、データベースを停止します。

shutdown immediate
次に、以下のコマンドを発行して、データベースを起動します。
startup pfile=app/oracle/product/11.1.0/db_1/dbs/resultcache.ora

 

3.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 stage1ファイルにそのスクリプトを渡します。 ワークロード数の増大と検証結果の生成をおこなうために、2000回反復するパラメータを追加します。

@reports.sql "./stage5 -i 2000"

レポートの実行中に、完了したパーセンテージが表示されます。

 

4.

レポート名の入力を指示されたら、以下を入力します。

stage5_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage5_results_addm.txt - ADDMレポート
  • stage5_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage5_addm.txt - ADDMレポート
  • stage5_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

5.

/wkdir/stage5_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。 このステージにおいては、アプリケーションは十分に調整されています。そのため、ここで見られる問題は、サーバーおよびOSの処理が原因である場合があります。

検証結果1:CPU使用率(注:クライアントとサーバーを同一のマシンで稼働していると、CPU使用率は非常に高くなります。)

検証結果2:データベース処理時間に基づく上位SQL

検証結果3:バッファ・ビジー(同時に同一の行にヒットしていることが原因)

検証結果4:バッファ・ビジー

検証結果5:コミットおよびロールバック

検証結果6:バッファ・キャッシュ・ラッチ


6.

stage5_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage5_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

チュートリアルのこの項では、以下の方法について学習しました。

非最適化での設定および確認
接続プールの有効化による最適化
バインドの有効化による最適化
配列フェッチの使用による最適化
結果セット・キャッシュによる最適化

トピック・リストに戻る

この項では、ADDMレポートおよびAWRレポートを使用して、ステージ1の基本パフォーマンスを検証します。

1.

ターミナル・ウィンドウを開きます。

ディレクトリを/wkdirディレクトリに変更します。 stage1.javaファイルのコンテンツを検証します。 コンテンツの表示には、テキスト・エディタが使用できます。

ターミナル・ウィンドウで、次のコマンドを実行します。

sqlplus sys/oracle as sysdba

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 stage1ファイルにそのスクリプトを渡します。

@reports.sql "ant Stage1"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage1_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage1_results_addm.txt - ADDMレポート
  • stage1_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • Stage1_java_addm.txt - ADDMレポート
  • Stage1_java_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage1_java_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:リテラル使用のためのハード解析

検証結果4:"スケジューラ"待機クラス

検証結果5:ソフト解析

検証結果6:セッションの接続と切断

検証結果7:I/Oスループット


5.

stage1_java_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage1_java_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、ステージ1のサンプル・プログラムとステージ2のサンプル・プログラムとの違いを確認します。 ステージ2では、暗黙的接続キャッシュを有効にします。

1.

Stage2.javaファイルのコンテンツを検証します。 Stage1.javaファイルとStage2.javaファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff Stage1.java Stage2.java &

ファイル内の違いに注目してください。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 Stage2ファイルにそのスクリプトを渡します。

@reports.sql "ant Stage2"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage2_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage2_results_addm.txt - ADDMレポート
  • stage2_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • stage2_java_addm.txt - ADDMレポート
  • stage2_java_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage2_java_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:リテラル使用のためのハード解析

検証結果4:ソフト解析


5.

stage2_java_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、/wkdir/stage2_java_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、バインドを有効にします。 バインドの使用は、パフォーマンスの向上だけでなく、SQLインジェクションを防いでプログラムの安全性を高めることができます。

1.

Stage3.javaファイルのコンテンツを検証します。 Stage2.javaファイルとStage3.javaファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff Stage2.java Stage3.java &

ファイル内の違いに注目してください。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 Stage3ファイルにそのスクリプトを渡します。

@reports.sql "ant Stage3"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage3_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage3_results_addm.txt - ADDMレポート
  • stage3_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • Stage3_java_addm.txt - ADDMレポート
  • Stage3_java_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage3_java_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:上位SQL文

検証結果4:共有プール・ラッチ


5.

stage3_java_awr.htmlレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、wkdir/stage3_java_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

この項では、配列フェッチを検証します。 値が1より大きいサイズの配列を設定することで、トランザクション数を削減します。 トランザクションが多すぎると、パフォーマンスの低下につながります。 配列DMLによって、DMLを単一のトランザクションにグループ化することが可能になります。

1.

Stage4.javaファイルのコンテンツを検証します。 Stage3.javaファイルとStage4.javaファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff Stage3.java Stage4.java &

ファイル内の違いに注目してください。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 Stage4ファイルにそのスクリプトを渡します。

@reports.sql "ant Stage4"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage4_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage4_results_addm.txt - ADDMレポート
  • stage4_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • Stage4_java_addm.txt - ADDMレポート
  • Stage4_java_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage4_java_addm.txtレポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:データベース処理時間に基づく上位SQL

検証結果4:例外的な"その他"待機イベント

検証結果5:共有プール・ラッチ

検証結果6:バッファ・ビジー


5.

Stage4_java_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、wkdir/stage4_java_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

このセクションでは、まず、結果セット・キャッシュを有効にし、次に結果を検証します。

1.

Stage5.javaファイルのコンテンツを検証します。 Stage4.javaファイルとStage5.javaファイルとの比較には、tkdiffを使用できます。

ターミナル・ウィンドウから、/wkdirディレクトリに切り替えます。 次のコマンドを実行します。

tkdiff Stage4.java Stage5.java &

ファイル内の違いに注目してください。

tkdiffユーティリティを終了します。

 

2.

SQL*Plusウィンドウから、reports.sqlスクリプトを実行します。 Stage5ファイルにそのスクリプトを渡します。

@reports.sql "ant Stage5"

レポートの実行中に、完了したパーセンテージが表示されます。

 

3.

レポート名の入力を指示されたら、以下を入力します。

stage5_results

この入力により、2つのレポートが生成され、現行のディレクトリに保存されます。

  • stage5_results_addm.txt - ADDMレポート
  • stage5_results_awr.html - AWRレポート

生成された最新のファイルを表示するには、以下の文を実行します。

host ls -lt|head

生成されたサンプルの結果は、各ステージで提供されます。 /wkdirディレクトリで、そのサンプルの結果ファイル名を確認できます。

  • Stage5_java_addm.txt - ADDMレポート
  • Stage5_java_awr.html - AWRレポート

注:ここに示したサンプルの結果は、実際の結果とは違う場合があります。それは、使用環境の違いによるものです。 このチュートリアルでは、一貫性を保つために、生成したサンプル結果を検証しますが、ご自身が実行して生成したレポートを検証することもできます。

 

4.

/wkdir/stage5_java_addm.txt レポートのコンテンツを検証します。

検証結果の概要に注目してください。

レポートをスクロールして、検証結果と提案事項の詳細をそれぞれ確認します。

検証結果1:CPU使用率

検証結果2:コミットおよびロールバック

検証結果3:データベース処理時間に基づく上位SQL

検証結果4:バッファ・ビジー

検証結果5:例外的な"その他"待機イベント

検証結果6:例外的な"アプリケーション"待機イベント

検証結果7:共有プール・ラッチ


5.

Stage5_java_awr.htmレポートのコンテンツを検証します。

ブラウザを開きます。 「File」のメニュー項目から、「Open File」オプションを選択し、wkdir/stage5_java_awr.htmlファイルを検索します。 「Open」をクリックします。 レポートを確認します。

レポート内をスクロールし、コンテンツを検証します。

 

トピック・リストに戻る

このチュートリアルで学習した内容は、次のとおりです。

非最適化でのセットアップおよび確認
接続プールの有効化による最適化
バインドの有効化による最適化
配列フェッチの使用による最適化
結果セット・キャッシュによる最適化

トピック・リストに戻る

このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。