SPA実行準備編──本番環境で流れるSQLを丸ごと取り出して「STS」を作成する:【12c対応】とにかく苦労しない「RAT」簡単攻略テクニック(3)(2/3 ページ)
とにかく大変なデータベースバージョンアップ時の「SQLテスト」。本連載では、この課題を解決するOracle Databaseのオプション機能である「Oracle Real Application Testing(RAT)」と、その一機能である「SQL Performance Analyzer(SPA)」の攻略方法を紹介していきます。今回はSPAの準備段階で重要なステップとなる「SQLチューニング・セットを作成してテスト環境へ持っていく」までの手順を解説します。
STEP 2:データセットの準備
続いて、SPA実行環境へのデータセットの準備を行います。ハードウェアリプレースとOracle Databaseのバージョンアップを想定した今回の例では、本番移行と切り替え作業前のテストのために新環境へデータを移行する工程となります。
なおSPAは、オプティマイザ統計とスキーマ構造情報のみをインポートするだけでもテストはできます。例えば、テスト環境へ本番データを持ち込めないシーンや、クラウド環境などでSPAを実行したいシーンに有効です。ただしデータセットがなければ、得られるテスト結果は少なくなります。これについては別の回でも解説予定ですが、SPA実行環境のSQL性能として、バッファー読み取り量や経過時間などの値が必要な場合は、必ずデータセットが必要になります(表1)。
SPAのテストを開始してSQLを実行するとしても、データ自体がなければ経過時間などの値が得られないことにも注意してください。その一方で、その他のコストや実行計画はパースの段階で得られます。これらはデータセットがないとしても、オプティマイザ統計やオブジェクトの定義情報があれば確認できます。
オプティマイザ統計のリストアでSPAを使うときの注意事項
データセットなしでSPAを実行したい場合には、もう1つ注意してほしいことあります。それは「リストアするオプティマイザ統計は、リストア先と同じバージョンでの取得が必要」ということです。
オプティマイザ統計を取得した環境(本番環境)のバージョンと、リストア先(SPA実行環境)のバージョンが同じならば問題はありません(図6の1)。しかしそれぞれのバージョンが異なる場合には、オプティマイザが適切な統計を使用できず、本来選択される実行計画が適切に再現されません(図6の2)。このパターンでSPAを実行する場合には、非互換SQLのチェックしか行えません。
この回避策としては、「統計取得用の環境をSPA実行環境と同バージョンで準備し、データ移行の後でオプティマイザ統計を取得し、それをSPA実行環境へリストアする手段」があります。こうすることで、実行計画の変更も含めてSPAでチェックが可能になります(図6の3)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- オラクルが考えるDBインフラのクラウド化「DBaaS」とは? 実現方法と支援環境を聞く
「DBaaS(ディービーアース、Database as a Service)」実現に向けて、オラクルはどのような移行プロセスを考えているのだろうか。段階的移行の三つのステップとそれを支援する環境をどこまで用意しているのかを、米オラクルの担当者に取材した。 - アシスト、Oracle Database 12cとクラウドへの早期移行を支援する「12c R2×Oracle Cloudスタートアップキャンペーン」を実施
アシストがOracle Database 12cとOracle Cloudへの移行促進キャンペーンを実施。期間限定で環境構築や基礎機能のレクチャーなどをセットにした移行支援ソリューションを特価で提供する。実施は2017年4月30日まで。 - オラクル、「Oracle Database 12c R2」のOracle Cloud at Customer/オンプレミス向け提供を開始
データベース管理システムの最新版「Oracle Database 12c Release 2」で全ての提供形態が整った。先行提供していたパブリッククラウド向けに続き、新たにOracle Cloud at Customer向けとオンプレミス向け提供を開始した。 - オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
米オラクルのラリー・エリソンCTOが、同社の年次イベントで今後のクラウド事業の行方を確約する「Oracle Cloud、6つの設計目標」を掲げました。同時に発表された基幹製品「Oracle Database 12c」の次期バージョンのポイントと共に、そこにどんな狙いがあるかを振り返ります。