2

このテスト ベッドでは、多数のテスト スイートが連続して (無人で) 実行され、後で使用するためのレポートが生成されます。これらのレポートには、さらなる調査の候補となるクエリと、そのリストに含めることを正当化するデータを含めたいと考えています。この方法で識別されたクエリを、それを懸念事項として公開したテスト スイートに関連付けることができるはずです。

SQL Server を使用する場合、これは比較的簡単です。DBCC FREEPROCCACHE を呼び出すと、スイートが開始される前にすべてのカウンターがクリアされます。次に、テストの最後に、sys.dm_exec_query_stats に対してクエリを実行します。これにより、実行回数と最小値にアクセスできます。キャッシュされた各クエリ プランの /max/total time(s)。パラメータ化された SQL ステートメント (mssql インスタンスで FORCED パラメータ化を使用) とクエリ プランを取得するためのフックが使用可能です。

参照: http://msdn.microsoft.com/en-us/library/ms189741%28SQL.90%29.aspx

私の質問: ターゲット アプリが Oracle 11g に接続されている場合、この近似値を実装するにはどうすればよいですか? これまでの私の読書は、私が求めているものはすべて AWR を介して利用可能であり、サポートするビューに直接アクセスできるはずであることを示唆していますが、自分でサークルを閉じることはできませんでした.

4

4 に答える 4

1

サポート ビューに直接アクセスする必要があるのはなぜですか? 最も簡単な解決策は

  • 各テスト スイートは、AWR スナップショットを明示的に生成することによって開始および終了します。これにより、開始スナップショット ID と終了スナップショット ID が認識され、各スイートの AWR レポートを個別に生成できるようになります。
  • テスト スイートごとに AWR レポートを実行します。
  • AWR レポートを確認し、特にさまざまな上位 SQL セクションを調べます。

基礎となるビューからすべての情報を直接取得することは絶対に可能ですが、そうする必要がない場合は、明らかに簡単です。

正気を保つために、私はあなたが AWR を使用するライセンスを持っていると仮定していることを指摘しておく必要があります。技術的には、AWR ビューを照会する場合でも、Performance and Tuning Pack のライセンスが必要です。ライセンス上の懸念から完全な AWR レポートを生成するのではなく、ビューを直接ヒットしたい場合は、ビューをヒットすることでライセンスの問題を解決することはできません。

于 2009-09-25T03:42:23.413 に答える
0

SQL Server カウンターに最も近いのはV$SYSSTATV$SYSTEM_EVENTです。ただし、Oracle は実際には v$SESSION_WAIT、V$SESSION_WAIT_CLASS、および V$SESSION_EVENT のセッション レベルでもこれらを追跡するため、システム レベルでそれらをリセットする必要はありません。また、それらにアクセスするために診断/チューニング パックのライセンスは必要ありません。

それらは SQL レベルまで下がりません。これは V$SQL で使用できますが、そのセッションに固有のものではありません。セッション レベルのトレースを使用して、問題を引き起こしている可能性のある個々の SQL を追跡できます。

于 2009-09-26T08:59:13.910 に答える
0

ジャスティンの答えには正しい概要がありましたが、実装に関する詳細が必要でした。

  • 各テスト スイートは、AWR スナップショットを明示的に生成することで開始および終了します。これにより、開始スナップショット ID と終了スナップショット ID が認識され、各スイートの AWR レポートを個別に生成できるようになります。
  • テスト スイートごとに AWR レポートを実行します。
  • AWR レポートを確認し、特にさまざまな上位 SQL セクションを調べます。
  • dbms_workload_repository.create_snapshot を呼び出してスナップショットを明示的に生成すると、結果は後で保存されます。

    デュアルから dbms_workload_repository.create_snapshot() を snap_id として選択します

  • レポートを取得するには、データベース ID とインスタンス番号が必要です。これらは v$database と v$instance から簡単に取得できます。

    d.DBID、i.instance_number を v$database から inst_num として選択 d、v$instance i

  • レポートは、テキスト (dbms_workload_repository.awr_report_text) または html (dbms_workload_repository.awr_report_html) として利用できます。引数は、自動診断データベース モニター (ADDM) からの情報を含むオプション フラグを含め、どちらの場合も同じです。ADDMの結果を活用できるかどうかはすぐにはわからなかったので、オフにしました。戻り値は varchar の列であるため、関数呼び出しはラップされます

    テーブルから出力を選択する (dbms_workload_repository.awr_report_html(1043611354,1,5539,5544,0))

  • この結果はファイルに簡単に書き込まれ、テストの他の成果物と一緒に組み立てられます。

これらのメソッドのドキュメントはオンラインで入手できます

于 2009-10-15T16:55:38.447 に答える
0

DBCC FREEPROCCACHE に相当する Oracle は次のとおりです。

SQL> alter system flush shared_pool;
于 2009-09-25T06:13:58.423 に答える