ヘッダーをスキップ
Oracle Database Real Application Testingユーザーズ・ガイド
11gリリース1(11.1)
B51856-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

12 データベースのアップグレードのテスト

この章では、データベースのアップグレードにSQLパフォーマンス・アナライザを使用する方法について説明します。 その他の場合のSQLパフォーマンス・アナライザの使用については、「SQLパフォーマンス・アナライザ」を参照してください。

SQLパフォーマンス・アナライザでは、Oracle9i以上のリリースからOracle Database 10gリリース2以上のリリースへのデータベースのアップグレードのテストがサポートされています。 Oracle Database 10gリリース1以前のリリースからのデータベースのアップグレードをテストする方法は、Oracle Database 10gリリース2以上のリリースからのデータベースのアップグレードをテストする方法とは少し異なります。この章では、両方の方法について説明します。

内容は次のとおりです。

Oracle Database 10gリリース1以前のリリースからのアップグレード

図12-1に示すように、SQLパフォーマンス・アナライザでは、アップグレードしたデータベースでデータベース・リンクを介してリモートにSQLチューニング・セットを実行することによって、Oracle9iおよびOracle Database 10gリリース1からOracle Database 10gリリース2以上のリリースへのデータベースのアップグレードのテストがサポートされています。 SQLパフォーマンス・アナライザではSQLチューニング・セットに格納されているSQL文のセットのみが入力ソースとして受け入れられ、Oracle9iではSQLチューニング・セットがサポートされていないため、Oracle9iからアップグレードする場合は、SQLチューニング・セットをSQLパフォーマンス・アナライザの入力ソースとして使用できるように作成する必要があります。

図12-1 Oracle9iからOracle Database 10gリリース2にデータベースをアップグレードする場合のSQLパフォーマンス・アナライザのワークフロー

図12-1の説明が続きます。
「図12-1 Oracle9iからOracle Database 10gリリース2にデータベースをアップグレードする場合のSQLパフォーマンス・アナライザのワークフロー」の説明

アップグレード元となる本番システムでは、Oracle9iまたはOracle Database 10gリリース1が実行されている必要があります。アップグレード先となるテスト・システムでは、Oracle Database 10gリリース2以上のリリースが実行されている必要があります。 データベースのバージョンは、リリース10.2.0.2以上にできます。 Oracle Database 10gリリース10.2.0.2、10.2.0.3または10.2.0.4にアップグレードする場合は、手順を進める前に、個別パッチをインストールする必要もあります。

本番システムとテスト・システムの両方のパフォーマンスが互いに比較されるため、SQLパフォーマンス・アナライザによって行われた分析が正確であることを保証するには、本番システムで検出されたデータの正確なコピーがテスト・システムに含まれている必要があります。 また、両方のシステムのハードウェア構成は可能なかぎり同じにする必要があります。

次に、Oracle Database 11gリリース1以上が実行されている別のSQLパフォーマンス・アナライザのシステムを設定する必要があります。 データベースのバージョンは、リリース11.1.0.7以上である必要があります。 このシステムを使用して、SQLチューニング・セットを作成し、SQLパフォーマンス・アナライザを実行します。 このシステムでは、本番システムのSQLトレース・ファイルに格納されている統計を使用してSQLチューニング・セットが作成されるため、本番データおよびスキーマを使用できる必要はありません。 SQLパフォーマンス・アナライザのタスクがテスト・システム上でリモートに実行され、指定したデータベース・リンクを介してSQL試行に対する実行計画および実行統計が生成されます。 データベース・リンクは、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続するパブリック・データベース・リンクである必要があります。 また、テスト・システム上のユーザーのスキーマから既存のPLAN_TABLEを削除する必要もあります。

前述のとおりアップグレード環境を構成したら、Oracle9iまたはOracle Database 10gリリース1から以降のリリースへのデータベースのアップグレードでSQLパフォーマンス・アナライザを使用するために、次に説明する手順を実行します。

  1. 本番システムでSQLトレース機能を有効にします。詳細は、「本番システムでのSQLトレース機能の有効化」を参照してください。

    本番システムへのパフォーマンスの影響を最小限に抑えながら、SQL文の典型的なセットを完全に取得する場合は、必要な期間セッションのサブセットに対してのみSQLトレースを有効にして、すべての重要なSQL文を1回以上取得することを検討してください。

  2. 本番システムでマッピング表を作成します。詳細は、「マッピング表の作成」を参照してください。

    このマッピング表は、SQLトレース・ファイルのユーザーおよびオブジェクトの識別子番号を、同等の文字列に変換するために使用します。

  3. SQLトレース・ファイルおよびマッピング表を本番システムからSQLパフォーマンス・アナライザのシステムに移動します。詳細は、「マッピング表の作成」を参照してください。

  4. SQLパフォーマンス・アナライザのシステムで、SQLトレース・ファイルを使用してSQLチューニング・セットを作成します。詳細は、「SQLチューニング・セットの作成」を参照してください。

    SQLチューニング・セットには、SQLトレース・ファイルで取得されたSQL文がそれらのSQL文に関連する実行コンテキストおよび実行統計とともに含まれます。

  5. SQLパフォーマンス・アナライザのシステムで、SQLパフォーマンス・アナライザを使用してアップグレード前のSQL試行とアップグレード後のSQL試行を作成します。

    1. 新しいSQLパフォーマンス・アナライザのタスクを作成して、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。詳細は、「Oracle 10gリリース1以前のリリース用のアップグレード前のSQL試行の作成」を参照してください。

    2. テスト・システムで、データベース・リンクを介してSQL文をリモートでテスト実行し、アップグレード後のSQL試行を作成します。詳細は、「Oracle 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成」を参照してください。

  6. SQLパフォーマンスを比較し、パフォーマンスが低下したSQLを修正します。

    SQLパフォーマンス・アナライザでは、アップグレード前のSQL試行時にSQLチューニング・セットから読み取ったSQL文のパフォーマンスと、アップグレード後のSQL試行時にリモートのテスト実行によって取得したSQL文のパフォーマンスが比較されます。 SQL文の実行計画またはパフォーマンスの変更内容を確認するためのレポートが生成されます。

    パフォーマンスが低下したSQL文がレポートに示された場合は、パフォーマンスが低下したSQL文を修正するためにさらに変更を行うことができます。 その後、SQLチューニング・セットの実行およびそのパフォーマンスと以前の実行のパフォーマンスとの比較を繰り返して、行った修正または追加の変更をテストできます。満足できる分析結果になるまで、これらの手順を繰り返します。

本番システムでのSQLトレース機能の有効化

Oracle9iでは、SQLトレース機能を使用して個々のSQL文のパフォーマンス・データが収集されます。 SQLトレースによって生成された情報は、SQLトレース・ファイルに格納されます。 SQLパフォーマンス・アナライザでは、これらのファイルに格納されている次の情報が使用されます。

  • 解析が行われたSQLテキストおよびユーザー名

  • 各実行のバインド値

  • CPU時間および経過時間

  • 物理読取りおよび論理読取り

  • 処理された行数

  • 各SQL文の実行計画(SQL文のカーソルがクローズしている場合にのみ取得される)

インスタンスに対してSQLトレースを有効にすることは可能ですが、セッションのサブセットに対してSQLトレースを有効にすることをお薦めします。 インスタンスに対してSQLトレース機能を有効にすると、そのインスタンスで実行されたすべてのSQL文のパフォーマンス統計がSQLトレース・ファイルに格納されます。 このようにSQLトレースを使用すると、パフォーマンスが重大な影響を受けたり、システムのオーバーヘッドの増加、過度なCPU使用率、ディスク領域の不足などが発生する可能性があります。 トレース・レベルを4に設定して、実行計画とともにバインド値を取得する必要があります。

Oracle Database 10gリリース1が実行されている本番システムで、DBMS_MONITOR.SESSION_TRACE_ENABLEプロシージャを使用して、SQLトレースを別のセッションで透過的に有効にします。 bindsプロシージャ・パラメータをTRUEに設定して(デフォルト値はFALSE)、バインドを明示的に有効にする必要もあります。

SQLトレースを有効にしたら、SQLパフォーマンス・アナライザで使用するSQL文の典型的なセットの統計が含まれているSQLトレース・ファイルを特定します。 その後、SQLトレース・ファイルをSQLパフォーマンス・アナライザのシステムにコピーします。 SQLワークロードをSQLトレース・ファイルに取得したら、本番システムでSQL試行を無効にします。


参照:

  • SQLトレースを使用する場合の追加の考慮事項(SQLトレース・ファイルを管理する初期化パラメータの設定など)については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

  • DBMS_MONITORパッケージについては、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。


マッピング表の作成

SQLトレース・ファイルに格納されているユーザーおよびオブジェクトの識別子番号を個別の名前に変換するには、それぞれのマッピングを指定する表を用意する必要があります。 SQLパフォーマンス・アナライザのシステムでは、トレース・ファイルがSQLチューニング・セットに変換されるときにこのマッピング表が読み取られます。

マッピング表を作成するには、本番データベースで次のSQL文を実行します。

create table mapping as
    select object_id id, owner, substr(object_name, 1, 30) name from dba_objects
    where object_type NOT IN ('CONSUMER GROUP', 'EVALUATION CONTEXT', 'FUNCTION',
                              'INDEXTYPE', 'JAVA CLASS', 'JAVA DATA',
                              'JAVA RESOURCE', 'LIBRARY', 'LOB', 'OPERATOR',
                              'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'QUEUE',
                              'RESOURCE PLAN', 'SYNONYM', 'TRIGGER', 'TYPE',
                              'TYPE BODY')
    union all
    select user_id id, username owner, null name from dba_users;

マッピング表が作成されたら、データ・ポンプを使用してSQLパフォーマンス・アナライザのシステムに転送できます。


参照:

データ・ポンプの使用については、『Oracle Databaseユーティリティ』を参照してください。

SQLチューニング・セットの作成

SQLパフォーマンス・アナライザのシステムにSQLトレース・ファイルおよびマッピング表が移動されたら、DBMS_SQLTUNEパッケージを使用してSQLチューニング・セットを作成できます。

SQLチューニング・セットを作成するには、次の手順を実行します。

  1. SQLパフォーマンス・アナライザのシステム上のディレクトリにSQLトレース・ファイルをコピーします。

  2. このディレクトリのディレクトリ・オブジェクトを作成します。

  3. DBMS_SQLTUNE.SELECT_SQL_TRACEファンクションを使用して、SQLトレース・ファイルからSQL文を読み取ります。

    各SQL文に対して、単一実行の情報のみが収集されます。 各SQL文の実行頻度は取得されません。 そのため、Oracle Database 10gリリース1以前のリリースが実行されている本番システムの比較分析を実行する場合は、SQLパフォーマンス・アナライザ・レポートのワークロード・レベルの統計を無視して、実行レベルでのパフォーマンスの変更のみを評価する必要があります。

    次の例では、sql_trace_prodディレクトリ・オブジェクトに格納されているSQLトレース・ファイルのコンテンツを読み取ってSQLチューニング・セットにロードします。

    DECLARE
      cur sys_refcursor;
    BEGIN
      DBMS_SQLTUNE.CREATE_SQLSET('my_sts_9i');
      OPEN cur FOR
        SELECT VALUE (P)
        FROM table(DBMS_SQLTUNE.SELECT_SQL_TRACE('sql_trace_prod', '%ora%')) P;
      DBMS_SQLTUNE.LOAD_SQLSET('my_sts_9i', cur);
      CLOSE cur;
    END;
    /
    

SELECT_SQL_TRACEファンクションの構文は、次のとおりです。

  DBMS_SQLTUNE.SELECT_SQL_TRACE (
    directory              IN VARCHAR2,
    file_name              IN VARCHAR2 := NULL,
    mapping_table_name     IN VARCHAR2 := 'mapping',
    mapping_table_owner    IN VARCHAR2 := NULL,
    select_mode            IN POSITIVE := SINGLE_EXECUTION,
    options                IN BINARY_INTEGER := LIMITED_COMMAND_TYPE,
    pattern_start          IN VARCHAR2 := NULL,
    parttern_end           IN VARCHAR2 := NULL,
    result_limit           IN POSITIVE := NULL)
  RETURN sys.sqlset PIPELINED;

表12-1に、SELECT_SQL_TRACEファンクションで使用できるパラメータを示します。

表12-1 DBMS_SQLTUNE.SELECT_SQL_TRACEファンクションのパラメータ

パラメータ 説明

directory

SQLトレース・ファイルが格納されるディレクトリを指すディレクトリ・オブジェクトを指定します。

file_name

処理するSQLトレース・ファイルの名前のすべてまたは一部を指定します。 指定しなかった場合、特定のディレクトリにある現在または最近のトレース・ファイルが使用されます。 トレース・ファイル名の照合には、%ワイルドカードを使用できます。

mapping_table_name

マッピング表の名前を指定します。 マッピング表のデフォルトの名前はmappingです。 マッピング表の名前は、大/小文字が区別されないことに注意してください。

mapping_table_owner

マッピング表が存在するスキーマを指定します。 NULLに設定すると、現在のスキーマが使用されます。

select_mode

トレース・ファイルからSQL文を選択するためのモードを指定します。 デフォルト値はSINGLE_EXECUTIONです。 このモードでは、SQL文ごとに1回の実行の統計のみがSQLチューニング・セットにロードされます。 統計は、SQLチューニング・セットの他のデータソースのテーブル・ファンクションの場合と同様に累積されません。

options

操作のオプションを指定します。 デフォルト値はLIMITED_COMMAND_TYPEで、SQLトレース・ファイルから戻されるのは、SQLパフォーマンス・アナライザにとって意味のあるSQLタイプ(SELECTINSERTUPDATEDELETEなど)のみです。

pattern_start

対象とするトレース・ファイル・セクションの開始区切りパターンを指定します。 このパラメータは、現在使用されていません。

pattern_end

処理するトレース・ファイル・セクションの終了区切りパターンを指定します。 このパラメータは、現在使用されていません。

result_limit

(除外された)ソースの上位SQLを指定します。 デフォルト値はMAXSB4です。



参照:

DBMS_SQLTUNEパッケージについては、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

Oracle 10gリリース1以前のリリース用のアップグレード前のSQLの作成

SQLチューニング・セットが作成されたら、SQLパフォーマンス・アナライザを使用して、SQLチューニング・セット内の実行計画および実行時の統計からアップグレード前のSQL試行を作成できます。

次の項で説明するように、アップグレード前のSQL試行はOracle Enterprise ManagerまたはAPIを使用して作成できます。

Enterprise Managerを使用した、Oracle 10gリリース1以前のリリース用のアップグレード前のSQL試行の作成

SQLチューニング・セットが作成されたら、SQLパフォーマンス・アナライザのシステムでSQLパフォーマンス・アナライザを実行して、アップグレード前のSQL試行を作成できます。

Enterprise Managerを使用してアップグレード前のSQL試行を作成するには、次の手順を実行します。

  1. 「データベース」ホームページで、「アドバイザ・セントラル」をクリックします。

    「アドバイザ・セントラル」ページが表示されます。

  2. 「SQLパフォーマンス・アナライザ」をクリックします。

    「SQLパフォーマンス・アナライザ」ページが表示されます。

  3. 「ガイド付きワークフロー」をクリックします。

    「ガイド付きワークフロー」ページが表示されます。

  4. 次の手順に従って、SQLチューニング・セットを入力ソースとして使用してSQLパフォーマンス・アナライザのタスクを作成します。

    1. 「ガイド付きワークフロー」ページで、手順1の「SQLチューニング・セットに基づくSQLパフォーマンス・アナライザのタスクの作成」の「実行」アイコンをクリックします。

      「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。

    2. 「名前」フィールドに、タスクの名前を入力します。

    3. 「説明」フィールドに、オプションでタスクの説明を入力します。

    4. 「SQLチューニング・セット」の下の「名前」フィールドに、作成されたSQLチューニング・セットの名前を入力します。

    5. 「作成」をクリックします。

      「ガイド付きワークフロー」ページが表示されます。

  5. 次の手順に従って、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。

    1. 「ガイド付きワークフロー」ページで、「初期環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。

      「SQL試行の作成」ページが表示されます。

    2. 「SQL試行名」フィールドに、SQL試行の名前を入力します。

    3. 「SQL試行の説明」フィールドに、SQL試行の説明を入力します。

    4. 「作成方法」リストで、「SQLチューニング・セットから作成」を選択します。

    5. テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。

    6. 「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

    7. 「発行」をクリックします。

      実行が開始されると、「ガイド付きワークフロー」ページが表示されます。

      実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。 実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。

APIを使用した、Oracle 10gリリース1以前のリリース用のアップグレード前のSQL試行の作成

SQLパフォーマンス・アナライザのシステムでSQLパフォーマンス・アナライザのタスクを作成したら、APIを使用して、SQLチューニング・セット内の実行計画および実行時の統計からアップグレード前のSQL試行を作成できます。 これを行うには、次のパラメータを使用して、EXECUTE_ANALYSIS_TASKプロシージャをコールします。

  • task_nameパラメータを、実行するSQLパフォーマンス・アナライザのタスクの名前に設定します。

  • execution_typeパラメータをCONVERT SQLSETに設定し、SQLチューニング・セット内の統計を試行実行として処理するようにSQLパフォーマンス・アナライザに指示します。

  • execution_nameパラメータを使用して、実行を識別するための名前を指定します。 指定しなかった場合、SQLパフォーマンス・アナライザによってタスク実行の名前が自動的に生成されます。

次の例では、my_spa_taskというSQLパフォーマンス・アナライザのタスクを試行実行として実行します。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', -
       execution_type => 'CONVERT SQLSET', -
       execution_name => 'my_trial_9i');

参照:


Oracle Database 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成

変更前のSQL試行が作成されたら、テスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード後のSQL試行を作成する必要があります。 SQLパフォーマンス・アナライザでは、SQLパフォーマンス・アナライザのシステムがテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がリモートでテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、テスト・システムに接続している必要があります。

次の項で説明するように、アップグレード後のSQL試行はOracle Enterprise ManagerまたはAPIのいずれかを使用して作成できます。

Enterprise Managerを使用した、Oracle Database 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成

Enterprise Managerを使用してアップグレード後のSQL試行を作成するには、次の手順を実行します。

  1. 「ガイド付きワークフロー」ページで、「変更された環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。

    「SQL試行の作成」ページが表示されます。

  2. 「SQL試行名」フィールドに、SQL試行の名前を入力します。

  3. 「SQL試行の説明」フィールドに、SQL試行の説明を入力します。

  4. 「作成方法」リストで、「SQLをリモートで実行」を選択します。

  5. 「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。

  6. 「データベース・リンク」フィールドに、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。

    あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。

  7. テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。

  8. 「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  9. 「発行」をクリックします。

    実行が開始されると、「ガイド付きワークフロー」ページが表示されます。

    実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。 実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。

APIを使用した、Oracle Database 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成

APIを使用してアップグレード後のSQL試行を作成するには、EXECUTE_ANALYSIS_TASKプロシージャをコールすることによって、SQLパフォーマンス・アナライザのシステムを使用して実行計画またはテスト実行を行います。 DATABASE_LINKタスク・パラメータをDBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名に設定します。

EXPLAIN PLANの使用を選択すると、実行計画のみが生成されます。 その後の比較では、パフォーマンスの変更に関して結論を出さずに、変更済みの計画のリストを生成することのみが可能になります。 TEST EXECUTEの使用を選択すると、SQLワークロードは完了するまで実行されます。 この場合、テスト・システムで生成される統計および実行計画を使用してアップグレード後のSQL試行が効果的に作成されます。 ソースでSQL実行計画およびパフォーマンス・データを取得する場合は、TEST EXECUTEを使用することをお薦めします。これによって、より正確な分析が行われます。

次の例では、データベース・リンクを介してSQL文のテスト実行をリモートで行います。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', -
       execution_type => 'TEST EXECUTE', -
       execution_name => 'my_remote_trial_10g', -
       execution_params => dbms_advisor.arglist('database_link',
                                                'LINK.A.B.C.BIZ.COM'));

参照:


Oracle Database 10gリリース2以上のリリースからのアップグレード

SQLパフォーマンス・アナライザを使用すると、本番システムでSQLチューニング・セットを取得し、データベース・リンクを介してSQLチューニング・セットをリモートで2回実行する(まず変更前のSQL試行を作成し、次に変更後のSQL試行を再度作成する)ことによって、Oracle Database 10gリリース2以上のリリースから以降のリリースへのデータベースのアップグレードのSQLレスポンス時間に対する影響をテストできます。

アップグレード元となる本番システムで、Oracle Database 10gリリース2以上のリリースが実行されている必要があります。 テスト・システムでは、最初に同じリリースが実行されている必要があります。 SQLパフォーマンス・アナライザによって行われた分析が正確であることを保証するには、本番システムで検出されたデータの正確なコピーがテスト・システムに含まれている必要があります。 また、ハードウェア構成は可能なかぎり本番システムと同じにする必要があります。

次に、Oracle Database 11gリリース1以上が実行されている別のSQLパフォーマンス・アナライザのシステムを設定する必要があります。 データベースのバージョンは、リリース11.1.0.7以上である必要があります。 このシステムを使用して、SQLパフォーマンス・アナライザを実行します。 このシステムでは、本番システムのSQLトレース・ファイルに格納されている統計を使用してSQLチューニング・セットが作成されるため、本番データおよびスキーマを使用できる必要はありません。 SQLパフォーマンス・アナライザのタスクがテスト・システム上でリモートに実行され、指定したデータベース・リンクを介してSQL試行に対する実行計画および実行統計が生成されます。 データベース・リンクは、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続するパブリック・データベース・リンクである必要があります。 また、テスト・システム上のユーザーのスキーマから既存のPLAN_TABLEを削除する必要もあります。

前述のとおりアップグレード環境を構成したら、Oracle Database 10gリリース2以上のリリースから以降のリリースへのデータベースのアップグレードでSQLパフォーマンス・アナライザを使用するために、次に説明する手順を実行します。

  1. 本番システムで、分析対象のSQLワークロードを取得して、SQLチューニング・セットに格納します。詳細は、「SQLワークロードの取得」を参照してください。

  2. 可能なかぎり本番環境と一致するようにテスト・システムを設定します。詳細は、「テスト・システムの設定」を参照してください。

  3. SQLチューニングセットをSQLパフォーマンス・アナライザのシステムに転送します。

    SQLチューニング・セットの転送については、使用するツールに応じて次のマニュアルを参照してください。

    • Oracle Enterprise Managerを使用する場合は、『Oracle Database 2日でパフォーマンス・チューニング・ガイド』を参照してください。

    • APIを使用する場合は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

  4. SQLパフォーマンス・アナライザで、SQLチューニング・セットを入力ソースとして使用して新しいSQLパフォーマンス・アナライザのタスクを作成します。

    テスト・システムで、データベース・リンクを介してリモートでテスト実行し、比較用のベースラインとして使用するアップグレード前のSQL試行を作成します。詳細は、「Oracle Database 10gリリース2以上のリリース用のアップグレード前のSQL試行の作成」を参照してください。

  5. テスト・システムをアップグレードします。

  6. アップグレードしたテスト・システムで、データベース・リンクを介してSQL文をリモートで2回テスト実行し、アップグレード後のSQL試行を作成します。詳細は、「Oracle 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成」を参照してください。

  7. SQLパフォーマンスを比較し、パフォーマンスが低下したSQLを修正します。

    SQLパフォーマンス・アナライザでは、アップグレード前のSQL試行時に取得したSQL文のパフォーマンスとアップグレード後のSQL試行時に取得したSQL文のパフォーマンスが比較されます。 SQL文の実行計画またはパフォーマンスの変更内容を確認するためのレポートが生成されます。

    パフォーマンスが低下したSQL文がレポートに示された場合は、パフォーマンスが低下したSQL文を修正するためにさらに変更を行うことができます。 その後、SQLチューニング・セットの実行およびそのパフォーマンスと以前の実行のパフォーマンスとの比較を繰り返して、行った修正または追加の変更をテストできます。満足できる分析結果になるまで、これらの手順を繰り返します。

Oracle Database 10gリリース2以上のリリース用のアップグレード前のSQL試行の作成

SQLチューニング・セットがSQLパフォーマンス・アナライザのシステムに転送されたら、テスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード前のSQL試行を作成する必要があります。 SQLパフォーマンス・アナライザでは、SQLパフォーマンス・アナライザのシステムがテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がリモートでテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、テスト・システムに接続している必要があります。

次の項で説明するように、アップグレード前のSQL試行はOracle Enterprise ManagerまたはAPIを使用して作成できます。

Enterprise Managerを使用した、Oracle Database 10gリリース2以上のリリース用のアップグレード前のSQL試行の作成

Enterprise Managerを使用してアップグレード前のSQL試行を作成するには、次の手順を実行します。

  1. 「データベース」ホームページで、「アドバイザ・セントラル」をクリックします。

    「アドバイザ・セントラル」ページが表示されます。

  2. 「SQLパフォーマンス・アナライザ」をクリックします。

    「SQLパフォーマンス・アナライザ」ページが表示されます。

  3. 「ガイド付きワークフロー」をクリックします。

    「ガイド付きワークフロー」ページが表示されます。

  4. 次の手順に従って、SQLチューニング・セットを入力ソースとして使用してSQLパフォーマンス・アナライザのタスクを作成します。

    1. 「ガイド付きワークフロー」ページで、手順1の「SQLチューニング・セットに基づくSQLパフォーマンス・アナライザのタスクの作成」の「実行」アイコンをクリックします。

      「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。

    2. 「名前」フィールドに、タスクの名前を入力します。

    3. 「説明」フィールドに、オプションでタスクの説明を入力します。

    4. 「SQLチューニング・セット」の下の「名前」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。

    5. 「作成」をクリックします。

      「ガイド付きワークフロー」ページが表示されます。

  5. 次の手順に従って、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。

    1. 「ガイド付きワークフロー」ページで、「初期環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。

      「SQL試行の作成」ページが表示されます。

    2. 「SQL試行名」フィールドに、SQL試行の名前を入力します。

    3. 「SQL試行の説明」フィールドに、SQL試行の説明を入力します。

    4. 「作成方法」リストで、「SQLをリモートで実行」を選択します。

    5. 「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。

    6. 「データベース・リンク」フィールドに、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。

      あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。

    7. テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。

    8. 「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

    9. 「発行」をクリックします。

      実行が開始されると、「ガイド付きワークフロー」ページが表示されます。

      実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。 実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。

  6. テスト・システムをアップグレードします。

APIを使用した、Oracle Database 10gリリース2以上のリリース用のアップグレード前のSQL試行の作成

SQLパフォーマンス・アナライザのシステムでSQLパフォーマンス・アナライザのタスクを作成したら、APIを使用して、SQLチューニング・セットに含まれているSQL文の実行計画またはテスト実行を行ってアップグレード前のSQL試行を作成できます。 これを行うには、次のパラメータを使用して、EXECUTE_ANALYSIS_TASKプロシージャをコールします。

  • task_nameパラメータを、実行するSQLパフォーマンス・アナライザのタスクの名前に設定します。

  • execution_typeパラメータをEXPLAIN PLANまたはTEST EXECUTEに設定します。

    EXPLAIN PLANの使用を選択すると、実行計画のみが生成されます。 その後の比較では、パフォーマンスの変更に関して結論を出さずに、変更済みの計画のリストを生成することのみが可能になります。 TEST EXECUTEの使用を選択すると、SQLワークロードは完了するまで実行されます。 この場合、テスト・システムで生成される統計および実行計画を使用してアップグレード前のSQL試行が効果的に作成されます。 ソースでSQL実行計画およびパフォーマンス・データを取得する場合は、TEST EXECUTEを使用することをお薦めします。これによって、より正確な分析が行われます。

  • execution_nameパラメータを使用して、実行を識別するための名前を指定します。 指定しなかった場合、SQLパフォーマンス・アナライザによってタスク実行の名前が自動的に生成されます。

  • DATABASE_LINKタスク・パラメータをDBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名に設定します。

次の例では、my_spa_taskというSQLパフォーマンス・アナライザのタスクを実行し、データベース・リンクを介してSQL文のテスト実行をリモートで行います。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', -
       execution_type => 'TEST EXECUTE', -
       execution_name => 'my_remote_trial_10g', -
       execution_params => dbms_advisor.arglist('database_link',
                                                'LINK.A.B.C.BIZ.COM'));

参照:


Oracle Database 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成

SQL試行が作成されたら、テスト・システムをアップグレードする必要があります。 データベースがアップグレードされたら、アップグレードしたテスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード後のSQL試行を作成します。 SQLパフォーマンス・アナライザでは、アップグレードしたテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、アップグレードしたテスト・システムに接続している必要があります。

次の項で説明するように、アップグレード後のSQL試行はOracle Enterprise ManagerまたはAPIのいずれかを使用して作成できます。

Enterprise Managerを使用した、Oracle Database 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成

Enterprise Managerを使用してアップグレード後のSQL試行を作成するには、次の手順を実行します。

  1. 「ガイド付きワークフロー」ページで、「変更された環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。

    「SQL試行の作成」ページが表示されます。

  2. 「SQL試行名」フィールドに、SQL試行の名前を入力します。

  3. 「SQL試行の説明」フィールドに、SQL試行の説明を入力します。

  4. 「作成方法」リストで、「SQLをリモートで実行」を選択します。

  5. 「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。

  6. 「データベース・リンク」フィールドに、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。

    あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。

  7. テスト・システムのデータベースがアップグレードされ、なかぎり環境が可能本番環境と一致していることを確認して、「試行環境設定済み」を選択します。

  8. 「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。

  9. 「発行」をクリックします。

    実行が開始されると、「ガイド付きワークフロー」ページが表示されます。

    実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよびSQLワークロードのサイズによっては、実行が完了するまで時間がかかる場合があります。 実行が完了したら、ステータス・アイコンがチェック・マークに変わり、次の手順の「実行」アイコンが有効になります。

APIを使用した、Oracle Database 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成

APIを使用してアップグレード後のSQL試行を作成する場合は、DBMS_SQLPAパッケージのEXECUTE権限およびテスト・システムのADVISOR権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名に設定したDATABASE_LINKタスク・パラメータを使用してEXECUTE_ANALYSIS_TASKプロシージャをコールすることによって、SQLパフォーマンス・アナライザのシステムを使用して実行計画またはテスト実行を行います。 EXPLAIN PLANの使用を選択すると、実行計画のみが生成されます。 その後の比較では、パフォーマンスの変更に関して結論を出さずに、変更済みの計画のリストを生成することのみが可能になります。 TEST EXECUTEの使用を選択すると、SQLワークロードは完了するまで実行されます。 この場合、テスト・システムで生成される統計および実行計画を使用してアップグレード後のSQL試行が効果的に作成されます。 ソースでSQL実行計画およびパフォーマンス・データを取得する場合は、TEST EXECUTEを使用することをお薦めします。これによって、より正確な分析が行われます。

次の例では、データベース・リンクを介してSQL文のテスト実行をリモートで行います。

EXEC DBMS_SQLPA.EXECUTE_ANALYSIS_TASK(task_name => 'my_spa_task', -
       execution_type => 'TEST EXECUTE', -
       execution_name => 'my_remote_trial_11g', -
       execution_params => dbms_advisor.arglist('database_link',
                                                'LINK.A.B.C.BIZ.COM'));

参照:


データベースのアップグレードをテストした後のパフォーマンスが低下したSQL文のチューニング

テスト・システムのデータベースをアップグレードした後に、パフォーマンスが低下したSQL文をSQLパフォーマンス・アナライザで特定する場合があります。

Oracle Database 10g以上のリリースからアップグレードする場合は、SQLチューニング・アドバイザまたはSQL計画ベースラインを使用して、パフォーマンスが低下したSQL文をチューニングできます。詳細は、第11章「SQL試行の比較」を参照してください。

Oracle 9i Databaseからアップグレードする場合は、DBMS_SQLTUNEパッケージを使用して、パフォーマンスが低下したSQL文を一度に1つずつチューニングする必要があります。


ヒント:

  • DBMS_SQLTUNEパッケージの使用については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。