とにかく大変なデータベースバージョンアップ時の「SQLテスト」。本連載では、この課題を解決するOracle Databaseのオプション機能である「Oracle Real Application Testing(RAT)」と、その一機能である「SQL Performance Analyzer(SPA)」の攻略方法を紹介していきます。今回はSPAを使った新環境側でのテストの手順を解説、加えてチューニングと再テストの方法を扱います。
ハードウェアリプレースのタイミングでOracle Databaseのバージョンアップを予定しているとしましょう。既存のSQL文が移行先で問題を起こさないかどうか、SQL Performance Analyzer(SPA)を利用すれば人手や時間をかけず、事前に検証できます。
SPAのステップは6つに分かれており、前回は、準備段階の3つのステップを説明しました(図1)。本番環境で発行されるSOEスキーマとAPPSスキーマのSQLをSQLチューニング・セット(以下、STS)に格納し、SPAを実行する新環境へインポートするところまでを押さえています。
今回は、図1の4〜6に当たる部分、SPAの実行手順について解説します。以下ではSPA実行に必要な権限(DBMS_SQLPAパッケージのEXECUTE権限)を持つSPAUSERというユーザーで実行します。
STEP 4は「1回目のSQL試行」です。STEP 1で作成したSTSから本番環境の実行計画や性能情報の記録を抽出する工程です。Enterprise Managerを使った実行手順の解説動画をご覧ください(動画1)。
動画ではEnterprise Managerの「ガイド付きワークフロー」機能を使ってSPAを実行しています。まずはSPAのタスクを作成し、STSをひも付けします。その後、「SQL試行の作成」画面で作成方法を指定しました。「SQLチューニング・セットから作成」です(図2)。その後、1回目のSQL試行を作成します。作成方法については次回詳しく説明する予定です。
今回の「SQLチューニング・セットから作成」という設定を選択すると、STS内の実行計画や性能情報をテスト結果として抽出します。
引き続き、Enterprise Managerを使ってSPA実行ステップを進めます。「2回目のSQL試行」の実行です(動画2)。
1回目のSQL試行と同じような操作で、Enterprise Managerから2回目のSQL試行を作成できます。ただし、今回は作成方法として「SQLをローカルで実行」を選択しました(図3)。この設定では、SPAを実行しているデータベースに対してSTS内のSQLを1本1本実行し、実行計画や性能情報を記録していきます。
実際には各SQLをシリアルに2回以上(最大10回)実行します。1回目の実行はバッファにデータを載せるための実行で、性能値を記録しません。2回目以降では性能値を記録し、平均値を結果として扱います。
このステップはSQL本数が多くなるほど時間がかかります。しかし、自動実行のため作業者の工数が増えることはありません。実行時間を短縮しなければならない場合は、SQLを実行せずにパースのみを行い、実行計画の変化だけをチェックするという方法もあります。次回詳しく紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.