この章では、データベースのアップグレードにSQLパフォーマンス・アナライザを使用する方法について説明します。 その他の場合のSQLパフォーマンス・アナライザの使用については、「SQLパフォーマンス・アナライザ」を参照してください。
SQLパフォーマンス・アナライザでは、Oracle9i以上のリリースからOracle Database 10gリリース2以上のリリースへのデータベースのアップグレードのテストがサポートされています。 Oracle Database 10gリリース1以前のリリースからのデータベースのアップグレードをテストする方法は、Oracle Database 10gリリース2以上のリリースからのデータベースのアップグレードをテストする方法とは少し異なります。この章では、両方の方法について説明します。
内容は次のとおりです。
図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パフォーマンス・アナライザのワークフロー
アップグレード元となる本番システムでは、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パフォーマンス・アナライザを使用するために、次に説明する手順を実行します。
本番システムでSQLトレース機能を有効にします。詳細は、「本番システムでのSQLトレース機能の有効化」を参照してください。
本番システムへのパフォーマンスの影響を最小限に抑えながら、SQL文の典型的なセットを完全に取得する場合は、必要な期間セッションのサブセットに対してのみSQLトレースを有効にして、すべての重要なSQL文を1回以上取得することを検討してください。
本番システムでマッピング表を作成します。詳細は、「マッピング表の作成」を参照してください。
このマッピング表は、SQLトレース・ファイルのユーザーおよびオブジェクトの識別子番号を、同等の文字列に変換するために使用します。
SQLトレース・ファイルおよびマッピング表を本番システムからSQLパフォーマンス・アナライザのシステムに移動します。詳細は、「マッピング表の作成」を参照してください。
SQLパフォーマンス・アナライザのシステムで、SQLトレース・ファイルを使用してSQLチューニング・セットを作成します。詳細は、「SQLチューニング・セットの作成」を参照してください。
SQLチューニング・セットには、SQLトレース・ファイルで取得されたSQL文がそれらのSQL文に関連する実行コンテキストおよび実行統計とともに含まれます。
SQLパフォーマンス・アナライザのシステムで、SQLパフォーマンス・アナライザを使用してアップグレード前のSQL試行とアップグレード後のSQL試行を作成します。
新しいSQLパフォーマンス・アナライザのタスクを作成して、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。詳細は、「Oracle 10gリリース1以前のリリース用のアップグレード前のSQL試行の作成」を参照してください。
テスト・システムで、データベース・リンクを介してSQL文をリモートでテスト実行し、アップグレード後のSQL試行を作成します。詳細は、「Oracle 10gリリース1以前のリリースからのアップグレード後の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パフォーマンス・アナライザのシステムでは、トレース・ファイルが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トレース・ファイルおよびマッピング表が移動されたら、DBMS_SQLTUNE
パッケージを使用してSQLチューニング・セットを作成できます。
SQLチューニング・セットを作成するには、次の手順を実行します。
SQLパフォーマンス・アナライザのシステム上のディレクトリにSQLトレース・ファイルをコピーします。
このディレクトリのディレクトリ・オブジェクトを作成します。
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ファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQLトレース・ファイルが格納されるディレクトリを指すディレクトリ・オブジェクトを指定します。 |
|
処理するSQLトレース・ファイルの名前のすべてまたは一部を指定します。 指定しなかった場合、特定のディレクトリにある現在または最近のトレース・ファイルが使用されます。 トレース・ファイル名の照合には、%ワイルドカードを使用できます。 |
|
マッピング表の名前を指定します。 マッピング表のデフォルトの名前は |
|
マッピング表が存在するスキーマを指定します。 |
|
トレース・ファイルからSQL文を選択するためのモードを指定します。 デフォルト値は |
|
操作のオプションを指定します。 デフォルト値は |
|
対象とするトレース・ファイル・セクションの開始区切りパターンを指定します。 このパラメータは、現在使用されていません。 |
|
処理するトレース・ファイル・セクションの終了区切りパターンを指定します。 このパラメータは、現在使用されていません。 |
|
(除外された)ソースの上位SQLを指定します。 デフォルト値は |
参照: DBMS_SQLTUNE パッケージについては、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
SQLチューニング・セットが作成されたら、SQLパフォーマンス・アナライザを使用して、SQLチューニング・セット内の実行計画および実行時の統計からアップグレード前のSQL試行を作成できます。
次の項で説明するように、アップグレード前のSQL試行はOracle Enterprise ManagerまたはAPIを使用して作成できます。
SQLチューニング・セットが作成されたら、SQLパフォーマンス・アナライザのシステムでSQLパフォーマンス・アナライザを実行して、アップグレード前のSQL試行を作成できます。
Enterprise Managerを使用してアップグレード前のSQL試行を作成するには、次の手順を実行します。
「データベース」ホームページで、「アドバイザ・セントラル」をクリックします。
「アドバイザ・セントラル」ページが表示されます。
「SQLパフォーマンス・アナライザ」をクリックします。
「SQLパフォーマンス・アナライザ」ページが表示されます。
「ガイド付きワークフロー」をクリックします。
「ガイド付きワークフロー」ページが表示されます。
次の手順に従って、SQLチューニング・セットを入力ソースとして使用してSQLパフォーマンス・アナライザのタスクを作成します。
「ガイド付きワークフロー」ページで、手順1の「SQLチューニング・セットに基づくSQLパフォーマンス・アナライザのタスクの作成」の「実行」アイコンをクリックします。
「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。
「名前」フィールドに、タスクの名前を入力します。
「説明」フィールドに、オプションでタスクの説明を入力します。
「SQLチューニング・セット」の下の「名前」フィールドに、作成されたSQLチューニング・セットの名前を入力します。
「作成」をクリックします。
「ガイド付きワークフロー」ページが表示されます。
次の手順に従って、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。
「ガイド付きワークフロー」ページで、「初期環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。
「SQL試行の作成」ページが表示されます。
「SQL試行名」フィールドに、SQL試行の名前を入力します。
「SQL試行の説明」フィールドに、SQL試行の説明を入力します。
「作成方法」リストで、「SQLチューニング・セットから作成」を選択します。
テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよび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');
参照:
|
変更前のSQL試行が作成されたら、テスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード後のSQL試行を作成する必要があります。 SQLパフォーマンス・アナライザでは、SQLパフォーマンス・アナライザのシステムがテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がリモートでテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、テスト・システムに接続している必要があります。
次の項で説明するように、アップグレード後のSQL試行はOracle Enterprise ManagerまたはAPIのいずれかを使用して作成できます。
Enterprise Managerを使用した、Oracle Database 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成
APIを使用した、Oracle Database 10gリリース1以前のリリースからのアップグレード後のSQL試行の作成
Enterprise Managerを使用してアップグレード後のSQL試行を作成するには、次の手順を実行します。
「ガイド付きワークフロー」ページで、「変更された環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。
「SQL試行の作成」ページが表示されます。
「SQL試行名」フィールドに、SQL試行の名前を入力します。
「SQL試行の説明」フィールドに、SQL試行の説明を入力します。
「作成方法」リストで、「SQLをリモートで実行」を選択します。
「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。
「データベース・リンク」フィールドに、DBMS_SQLPA
パッケージのEXECUTE
権限およびテスト・システムのADVISOR
権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。
あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。
テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよび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'));
参照:
|
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パフォーマンス・アナライザを使用するために、次に説明する手順を実行します。
本番システムで、分析対象のSQLワークロードを取得して、SQLチューニング・セットに格納します。詳細は、「SQLワークロードの取得」を参照してください。
可能なかぎり本番環境と一致するようにテスト・システムを設定します。詳細は、「テスト・システムの設定」を参照してください。
SQLチューニングセットをSQLパフォーマンス・アナライザのシステムに転送します。
SQLチューニング・セットの転送については、使用するツールに応じて次のマニュアルを参照してください。
Oracle Enterprise Managerを使用する場合は、『Oracle Database 2日でパフォーマンス・チューニング・ガイド』を参照してください。
APIを使用する場合は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
SQLパフォーマンス・アナライザで、SQLチューニング・セットを入力ソースとして使用して新しいSQLパフォーマンス・アナライザのタスクを作成します。
テスト・システムで、データベース・リンクを介してリモートでテスト実行し、比較用のベースラインとして使用するアップグレード前のSQL試行を作成します。詳細は、「Oracle Database 10gリリース2以上のリリース用のアップグレード前のSQL試行の作成」を参照してください。
テスト・システムをアップグレードします。
アップグレードしたテスト・システムで、データベース・リンクを介してSQL文をリモートで2回テスト実行し、アップグレード後のSQL試行を作成します。詳細は、「Oracle 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成」を参照してください。
SQLパフォーマンスを比較し、パフォーマンスが低下したSQLを修正します。
SQLパフォーマンス・アナライザでは、アップグレード前のSQL試行時に取得したSQL文のパフォーマンスとアップグレード後のSQL試行時に取得したSQL文のパフォーマンスが比較されます。 SQL文の実行計画またはパフォーマンスの変更内容を確認するためのレポートが生成されます。
パフォーマンスが低下したSQL文がレポートに示された場合は、パフォーマンスが低下したSQL文を修正するためにさらに変更を行うことができます。 その後、SQLチューニング・セットの実行およびそのパフォーマンスと以前の実行のパフォーマンスとの比較を繰り返して、行った修正または追加の変更をテストできます。満足できる分析結果になるまで、これらの手順を繰り返します。
SQLチューニング・セットがSQLパフォーマンス・アナライザのシステムに転送されたら、テスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード前のSQL試行を作成する必要があります。 SQLパフォーマンス・アナライザでは、SQLパフォーマンス・アナライザのシステムがテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がリモートでテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、テスト・システムに接続している必要があります。
次の項で説明するように、アップグレード前のSQL試行はOracle Enterprise ManagerまたはAPIを使用して作成できます。
Enterprise Managerを使用してアップグレード前のSQL試行を作成するには、次の手順を実行します。
「データベース」ホームページで、「アドバイザ・セントラル」をクリックします。
「アドバイザ・セントラル」ページが表示されます。
「SQLパフォーマンス・アナライザ」をクリックします。
「SQLパフォーマンス・アナライザ」ページが表示されます。
「ガイド付きワークフロー」をクリックします。
「ガイド付きワークフロー」ページが表示されます。
次の手順に従って、SQLチューニング・セットを入力ソースとして使用してSQLパフォーマンス・アナライザのタスクを作成します。
「ガイド付きワークフロー」ページで、手順1の「SQLチューニング・セットに基づくSQLパフォーマンス・アナライザのタスクの作成」の「実行」アイコンをクリックします。
「SQLパフォーマンス・アナライザのタスクの作成」ページが表示されます。
「名前」フィールドに、タスクの名前を入力します。
「説明」フィールドに、オプションでタスクの説明を入力します。
「SQLチューニング・セット」の下の「名前」フィールドに、分析するSQLワークロードが含まれているSQLチューニング・セットの名前を入力します。
「作成」をクリックします。
「ガイド付きワークフロー」ページが表示されます。
次の手順に従って、SQLチューニング・セットのコンテンツを比較用のベースラインとして使用するアップグレード前のSQL試行に変換します。
「ガイド付きワークフロー」ページで、「初期環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。
「SQL試行の作成」ページが表示されます。
「SQL試行名」フィールドに、SQL試行の名前を入力します。
「SQL試行の説明」フィールドに、SQL試行の説明を入力します。
「作成方法」リストで、「SQLをリモートで実行」を選択します。
「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。
「データベース・リンク」フィールドに、DBMS_SQLPA
パッケージのEXECUTE
権限およびテスト・システムのADVISOR
権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。
あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。
テスト・システムのデータベース環境が可能なかぎり本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよび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'));
参照:
|
SQL試行が作成されたら、テスト・システムをアップグレードする必要があります。 データベースがアップグレードされたら、アップグレードしたテスト・システムでSQLチューニング・セット内のSQL文のテスト実行または実行計画を行い、アップグレード後のSQL試行を作成します。 SQLパフォーマンス・アナライザでは、アップグレードしたテスト・システムに接続し、SQL試行に対して実行計画および実行統計を生成できるように、指定する必要があるデータベース・リンクを介してSQL文がテスト実行されます。 データベース・リンクは、SQLパフォーマンス・アナライザのシステムに存在し、アップグレードしたテスト・システムに接続している必要があります。
次の項で説明するように、アップグレード後のSQL試行はOracle Enterprise ManagerまたはAPIのいずれかを使用して作成できます。
Enterprise Managerを使用した、Oracle Database 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成
APIを使用した、Oracle Database 10gリリース2以上のリリースからのアップグレード後のSQL試行の作成
Enterprise Managerを使用してアップグレード後のSQL試行を作成するには、次の手順を実行します。
「ガイド付きワークフロー」ページで、「変更された環境でSQLチューニング・セットをリプレイ」手順の「実行」アイコンをクリックします。
「SQL試行の作成」ページが表示されます。
「SQL試行名」フィールドに、SQL試行の名前を入力します。
「SQL試行の説明」フィールドに、SQL試行の説明を入力します。
「作成方法」リストで、「SQLをリモートで実行」を選択します。
「SQL当たりの時間制限」リストで、「カスタマイズ」を選択して、SQLワークロードの実行に適切な時間制限を指定します。
「データベース・リンク」フィールドに、DBMS_SQLPA
パッケージのEXECUTE
権限およびテスト・システムのADVISOR
権限を持つユーザーに接続しているパブリック・データベース・リンクのグローバル名を入力します。
あるいは、検索アイコンをクリックしてデータベース・リンクを検索して選択するか、または「データベース・リンクの作成」ページで「データベース・リンクの作成」をクリックして新しいデータベース・リンクを作成します。
テスト・システムのデータベースがアップグレードされ、なかぎり環境が可能本番環境と一致していることを確認して、「試行環境設定済み」を選択します。
「スケジュール」で、「即時」(即時にタスクを開始する場合)または、「後で」(「日付」、「時間」および「タイムゾーン」フィールドで指定した時間にタスクを開始するようスケジュールする場合)を選択します。
「発行」をクリックします。
実行が開始されると、「ガイド付きワークフロー」ページが表示されます。
実行中、この手順のステータス・アイコンは時計に変わります。 ステータス・アイコンをリフレッシュするには、「リフレッシュ」をクリックします。 選択したオプションおよび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パフォーマンス・アナライザで特定する場合があります。
Oracle Database 10g以上のリリースからアップグレードする場合は、SQLチューニング・アドバイザまたはSQL計画ベースラインを使用して、パフォーマンスが低下したSQL文をチューニングできます。詳細は、第11章「SQL試行の比較」を参照してください。
Oracle 9i Databaseからアップグレードする場合は、DBMS_SQLTUNE
パッケージを使用して、パフォーマンスが低下したSQL文を一度に1つずつチューニングする必要があります。
ヒント:
|